개발 블로그

라이브러리 vs 프레임워크 본문

CS

라이브러리 vs 프레임워크

draidev 2022. 3. 19. 23:36

우리는 C, C++, Python 등의 프로그래밍 언어로 코딩을 할 때 거의 매번 라이브러리를 추가합니다.

 

C에서는 #include<stdio.h>, C++에서는 #include<iosteam.h> 같은 기본입출력 라이브러리(헤더 파일)를 추가해주고 Python에서도 time, random, sys등 수많은 라이브러리가 있습니다.

 

그리고 프론드엔드 프레임워크 React, Flutter, Vue, Angular ...
백엔드 프레임워크 Spring, Django, Node.js ...
위와 같은 프레임워크 또한 많이 존재합니다.

 

각각 봤을 때는 분명 차이가 있는 것처럼 보이지만 명확하게 어떤 차이점이 존재할까요?
둘 다 코드 위에 추가해서 각각의 기능들을 불러와 사용해주는 거 아닌가요??

 

이러한 궁금증 때문에 이번에 라이브러리와 프레임워크의 차이점을 한번 정리할 필요가 있다고 느껴서 검색해보고 글을 써봅니다:)

 

1. 라이브러리(Library)

소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. 여기에는 구성 데이터, 문서, 도움말 자료, 메시지 틀, 미리 작성된 코드, 서브루틴(함수), 클래스, 값, 자료형 사양을 포함할 수 있다.
위키백과 라이브러리 

라이브러리는 프로그래밍을 할 때 필요한 기능들이 모여있는 코드의 묶음입니다. 즉 자주 사용되는 기능들 혹은 관련된 기능들끼리 묶어서 사용하기 간편하도록 한 것입니다.


라이브러리는 개발자가 만든 클래스에서 호출하여 사용합니다.

 

2. 프레임워크(Framework)

소프트웨어 프레임워크(software framework)는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조이다. 간단히 뼈대, 골조(骨組), 프레임워크(framework)라고도 한다.
위키백과 소프트웨어 프레임워크

프레임워크는 소프트웨어 어플리케이션이나 솔루션의 개발을 수월하게 하기 위해 소프트웨어의 구체적 기능들에 해당하는 부분의 설계와 구현을 재사용 가능하도록 협업화된 형태로 제공하는 소프트웨어 환경입니다.

 

객체 지향 개발을 하게 되면서 통합성, 일관성의 부족이 발생되는 문제를 해결해 줍니다.

 

3. 라이브러리와 프레임워크의 차이점

이 둘의 차이는 '제어 흐름에 대한 주도성이 누구에게 있는가'입니다.

라이브러리는 객체나 함수를 개발자가 주도적으로 호출하여 사용합니다.

반면에 프레임워크는 코드의 제어 흐름을 사용자가 아닌 프레임워크 자체가 가지고 있으며, 사용자는 프레임워크가 정해준 방식대로 클래스, 메서드를 구현해야 하며 이러한 메서드는 프레임워크에 의해 호출됩니다.
이를 제어의 역전(Ioc : Inversion of Control)이라고 합니다.

제어의 역전(IoC)이란?
프로그래머가 작성한 프로그램이 재사용 라이브러리의 흐름 제어를 받게 되는 소프트웨어 디자인 패턴을 말한다. 줄여서 IoC(Inversion of Control)이라고 부른다. 전통적인 프로그래밍에서 흐름은 프로그래머가 작성한 프로그램이 외부 라이브러리의 코드를 호출해 이용한다. 하지만 제어 반전이 적용된 구조에서는 외부 라이브러리의 코드가 프로그래머가 작성한 코드를 호출한다.
위키백과 제어 반전

 

Reference
https://webclub.tistory.com/458
https://curryyou.tistory.com/363
https://eroul-ri.tistory.com/5

https://m.blog.naver.com/dktmrorl/222121510562

'CS' 카테고리의 다른 글

MVC 모델  (0) 2022.04.21
JSON이란?  (0) 2022.03.20
Comments