본문 바로가기
etc

library & API & Framework & Engine & SDK

by 붕어고기 2013. 5. 21.
반응형

library & API & Framework & Engine & SDK

Difference

 

carpfish

 

library ?

컴퓨터 프로그램에서 자주 사용되는 부분 프로그램들을 모아 놓은 것. 정적, 동적(링크, 로드) 라이브러리로 나뉜다.

 

1-1. library 종류, 특징

정적 라이브러리 : 컴파일러가 소스 파일을 컴파일 할 때 참조되는 프로그램 모듈이다. => 빌드 시에 라이브러리가 제공하는 코드를 실행 파일에 넣는 라이브러리.

장점 : 시스템 환경이 변해도 애플리케이션에는 아무런 영향이 없으며, 완성된 애플리케이션을 안정적으로 사용 가능

단점 : 사용하는 모든 오브젝트 코드를 실행 파일에 내장하기 때문에 메모리에 로드 되는 애플리케이션 코드가 커진다.

 

동적 라이브러리 : 프로그램 수행 도중 해당 모듈이 필요할 때 호출해 사용하는 프로그램 모듈이다.

-동적 링크 라이브러리 : 실행 파일과 관련된 라이브러리 코드를 모두 메모리에 읽어 들여 호출 관계를 조정한 다음 애플리케이션이 실행된다.

-동적 로드 라이브러리 : 실행 파일 실행 시 읽어 들이지 않은 라이브러리를 추가적으로 이용하는 라이브러리. => 동적 라이브러리의 완벽한 정의

장점 : 애플리케이션을 빌드 할 때 존재하지 않았던 라이브러리 사용가능하다.

단점 : 플러그인 형식으로 경로설정, 설치를 따로 해줘야 한다.

 

2. API(Application Programming Interface) ?

응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. => 프로그래머를 위한 운영체제나 프로그램의 인터페이스.

응용 프로그램 간에 연동의 개념이 많아지자 서로 다른 응용 프로그램 간에 기능을 공유할 수 있도록 개발함.

응용프로그램과 디바이스를 연결해주는 역할을 한다.

 

3. Framework ?

Terms : 서로 관련이 있는 많은 수의 문제를 풀기 위한 추상적 설계를 구체화한 클래스 집합을 말한다.

랄프 존슨 교수 : "소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것"이라고 정의.

3-1 Framework 특징

라이브러리와 달리 애플리케이션의 틀과 구조를 결정할 뿐만 아니라, 그 위에 개발된 개발자의 코드를 제어함.

구체적이며, 확장 가능한 기반 코드를 보유하고 있음.

설계자가 의도하는 여러 디자인 패턴의 집합으로 구성되어 있다.

 

 

3-2 Framework, library different

라이브러리는 도구와 같고, 프레임워크는 만들어진 제품과 같다. 그러기에 개발자는 라이브러리를 사용해 원하는 것을 만들어 내면 된다. 하지만 프레임워크는 라이브러리와는 달리 이미 프로그래밍 할 규칙이 정해져 있다. 예를 들면, 설정파일로 사용되는 XML에 어떤 태그를 써야하며, 어떤 함수를 추가적으로 작성해야하고, 소스 파일을 어느 위치에 넣어야하며, DB와 연동하기 위해 무엇을 써넣어야 하는지 정해져 있다.

만들어진 제품과 같은 프레임 워크는 사용하고자 하는 목적이 다를 수도 있는데, 그때는 새로운 프레임워크를 찾아서 사용하거나 비슷한 유형의 프레임워크를 수정해 사용한다. 차를 튜닝해 운전하는 방법과 비슷하다.

 

4. Engine ?

핵심적이고 본질적인 기능을 수행하는 프로그램

-> 한 가지 목적을 위해 공동작용을 하는 일련의 프로그램들에 대해 전반적인 운영을 조정하거나 응용프로그램 내에서 중심적인 기능을 하고 있는 프로그램이다.

4-1 Engine 종류

검색 엔진 : WWW(world wide web)FTP 서버에서 정보를 찾을 수 있도록 만들어진 소프트웨어이다.

<검색 방법>

메뉴명에 의한 검색방법 : 원하는 정보를 몇 가지로 분류되어 있는 메뉴에서 한 단계씩 찾아 내려가는 방법.

주제어(keyword) 검색 : 찾고자 하는 정보와 관련된 특정단어 몇 개를 연산자를 사용한 검색식 형태로 입력하여, 원하는 정보를 찾아가는 방법.

게임 엔진 : 컴퓨터·비디오 게임 같은 실시간 그래픽 표시 기능을 갖춘 상호 작용 응용 프로그램을 구현하는 핵심 소프트웨어 구성 요소를 말한다.

 

5. SDK(software Development kit) ?

영문 번역을 해보면 소프트웨어 개발 도구 정도로 해석할 수 있다.

SDK는 원래 API를 사용하여 프로그램을 개발하는 마이크로소프트사에서 제공하는 윈도우즈용 프로그램 개발킷을 의미한다. 하지만 지금은 의미가 전용되어 API와 거의 같은 뜻으로 사용된다.

 

6. 결론 및 소감

저는 지금까지 framework, api, library, engine, sdk의 의미를 정확히 알지 못했습니다. 그렇기에 프로그램을 코딩할 때, 잘못된 용어를 사용하기도 했습니다. 하지만, 이번 계기를 통해 각각의 미세한 의미적 차이를 알게 되었습니다. 예로, c언어의 fopen 자체는 라이브러리라 칭하지 않습니다. api라고 볼 수 있습니다. 하지만, fopenkernel32.dll에 있다면, kernel32.dll을 라이브러리라 칭합니다.

반응형

'etc' 카테고리의 다른 글

iTerm2 초기화/재설치 방법  (2) 2020.06.14
Windows 프로그램 실행 차단 설정방법  (0) 2013.08.22

댓글