CS/software engineering

라이브러리 vs 프레임워크

superbono 2021. 5. 1. 01:30

 

* 라이브러리(Library)?

https://www.nbcnews.com/news/us-news/library-workers-fight-safer-working-conditions-amid-coronavirus-pandemic-n1179346

- (Component) Library = collection of related features

라이브러리 = 기능들의 집합 재 사용관점에서 api를 패키징 한 것. 말 그대로 도서관(라이브러리)에서 필요한 지식(feature)이 있는 책을 뺴서 읽고 이러는 것 처럼 프로그래머가 사용할 수 있는 프로그램이다.

+) 공통으로 사용할 수 있는 기능을 모듈화한 것이다. 개발자가 만든 클래스에서 라이브러리를 호출만 하면 된다. 내가 그 라이브러리를 위해서 뭔가 코드를 써넣고 할 것은 없다.

 

* 프레임워크(Framework)?

http://blog.hwenc.co.kr/621

- (Application) Framework = half done application

 'IoC' 관점에서 어플리케이션을 구동하는, 말그대로 '틀'이다. 라이브러리는 내가 책을 완성할 필요가 없다. 과제를 할 때 필요한 내용이 있는 책이 있다면 그 책을 가져다가 그냥 그대로 쓰면 된다. 그러나 프레임워크는 말 그대로 골조이다. 골조만 있는 집이 완성된 집이라고 할 수 있나? 집의 기능이 만약 비 피하기, 따뜻한 보온, 안락함 제공이라고 한다면 골조만 있는 집은 이러한 기능을 제공할 수 있는가? 그렇지 않다. 따라서 사용자가 이 프레임워크를 완성시켜야 한다. 

 

* 라이브러리(Library)와 프레임워크(Framework)의 차이점

https://www.youtube.com/watch?v=V961cMZKB5M&ab_channel=TutorialsWebsite

 

따라서 사용자는 프레임워크를 완성시키고 라이브러리는 사용자의 코드를 완성시킨다. 이 말인즉슨 당신의 코드는 라이브러리를 호출할 것이며(완성되기 위해) 프레임워크는 당신의 코드를 호출할 것이라는 이야기(역시 완성되기 위해)다.

또한 flow control 관점에서도 생각해볼 수 있는데, 라이브러리는 그저 호출 받아서 자기 할 일 한 뒤 반환해줄거 반환해줄뿐 프로그램의 전체 흐름을 주도하지는 않는다. 예를 들어 과제를 할 때 책을 발췌는 하지만 그 책이 과제를 전부 해주는 것은 아니다. 그냥 그 내용에 대한 부분만 책의 역할일뿐 과제의 흐름을 주도하지 않는다. 

그러나 프레임워크는 본인이 모든 flow를 잡고 있으며 사용자가 쓰는 코드는 그 프레임워크에 의해 호출당한다. 예를 들어 위에 프레임워크는 골조라고 얘기했는데, 건축자가 벽을 세울 때 나무 벽을 세우든 벽돌 벽을 세우든 어쨌든 중요한 것은 골조이고 그런 것을 생각하면 될 듯 하다. -> IoC(Inversion of Control) 예를 들어 스프링에서 개발자가 객체인 빈을 정의하고 빈을 등록해놓으면 IoC 컨테이너(스프링 컨테이너)가 라이프사이클 관리해주는 것 -> IoC(제어의 역전)

 

참고한 글 - kldp.org/node/124237

 

프레임워크와 라이브러리의 차이는 무엇입니까? | KLDP

안녕하세요. 컴퓨터공학과 학생입니다. 뜬금없지만 갑자기 프레임워크와 라이브러리의 차이가 무엇인지 궁금해서 검색을 해보았는데 내공부족으로 인하여 명확한 답을 얻을 수 없었습니다. 제

kldp.org

댓글에 좋은 설명이 많다. 감사합니다!

'CS > software engineering' 카테고리의 다른 글

Agile 애자일  (0) 2021.07.12
CI/CD  (0) 2021.07.03
결합도와 응집도에 대하여 (Coupling and Cohension)  (0) 2021.06.26
3rd party(써드 파티)란?  (0) 2021.06.19
MVC  (0) 2021.04.05