ETC

프레임워크 vs 라이브러리 vs 모듈 vs 디자인 패턴 vs API

robinjoon98 2020. 5. 23. 00:35

프로그래밍을 하다 보면 프레임워크, 라이브러리, api, 모듈같은 말을 많이 듣게 된다.

4개의 용어 모두 프로그래밍을 쉽게 하기 위해 사용된다는 공통점이 있다. 그러나 각기 다른 용어로 사용된다는 것은 각각의 용어가 의미하는게 명확히 다르다는걸 의미한다. 궁금해진 김에 각 용어들의 차이를 정리해보고자 한다.

 

프레임워크(framework)

직역해보면 frame 은 '틀' 이란 뜻이고, work는 '일'이다. 좀 풀어보면 '틀에 맞춰서 일하다' 라고 직역할 수 있다.

이런 의미를 프로그래밍에 적용하면 이미 정해진 틀에 맞춰 사용자의 코드를 더해 하나의 서비스를 만들게 한다면 프레임워크라고 할 수 있다(제어의 역전) 그런 의미에서 C언어로 프로그래밍을 할 때 흔히 main 함수 내에 자신의 코드를 작성하고 main함수가 자신의 코드를 실행하는 것 이므로 이것도 프레임워크라고 할 수 있다.

 

라이브러리(Library)

단순히 어떤 기능을 수행하는 개발도구(클래스,함수등)들의 모음이다.

C언어의 printf 함수와같은 입출력을 제공하는 것들은 stdio.h 안에 정의되어있다. 이게 바로 라이브러리의 예시이다.

라이브러리는 제어의 역전이 발생하지 않는다. 사용자가 직접 라이브러리를 호출하여 사용할 뿐이다.

 

모듈(Module)

프로그램을 구성하는 한 부분. 일반적으로 라이브러리와 같은 의미로 사용된다. 굳이 차이를 둔다면 그 크기와 규모적인 면에서 라이브러리가 모듈보다 더 크다.

 

디자인 패턴

프로그램의 설계를 할 때 발생하는 여러가지 문제를 피하기 위한 소프트웨어 설계 방법론.

설계관점에서의 좋은 코드를 지향함. 즉, 확장과 변경에 용이한 코드를 지향함.

구체적인 코드를 의미하는 게 아닌 추상적인 것이다. 이걸 구체적으로 구현한게 프레임워크다.

 

api

응용프로그램이나 운영체제가 제공하는 기능을 다른 프로그램이 사용할 수 있도록 만든 인터페이스.