[CS] 프레임워크와 라이브러리의 차이

김채운·2022년 10월 6일
0

CS

목록 보기
6/9

👉 프레임워크 Framework

프레임워크는 소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합이며, 완성된 어플리케이션이 아닌 프로그래머가 완성시키는 작업을 해야한다.
프레임워크는 어플리케이션 개발 시 필수적인 코드, 알고리즘, 데이터베이스 연동 등과 같은 기능을 위해 어느정도 뼈대를 제공해준다. 그리고 그 뼈대 위에 개발자가 코드를 작성해 어플리케이션을 완성해야 한다.
어느덩도 뼈대를 제공해 주기 때문에 객체지향 개발을 하면서 일관성 부족 등의 문제를 해결해준다.

  • 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성되어 있다.
  • 추상적인 개념들이 문제를 해결하기 위해서 같이 작업하는 방법을 정의한다.
  • 컴포넌트들은 재사용이 가능하다.
  • 높은 수준에서 패턴들을 조작화할 수 있다.

👉 라이브러리 Library

라이브러리는 주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. 개발을 하기 위해 필요한 것들을 미리 구현해놓은 대상, 도구 이다. 재사용이 가능한 기능을 미리 구현해놓고 필요한 곳에서 호출하여 사용할 수 있도록 만들어진 집합들을 말한다. 프레임워크는 틀이고 그 안에서 재사용이 가능하도록 만들어진 도구들을 라이브러리라고 한다.

둘의 차이

프레임워크와 라이브러리의 차이점은 흐름(Flow)에 대한 제어 권한이 어디에 있느냐의 차이에 있다. 프레임 워크는 전체적인 흐름을 자체적으로 가지고 있으며, 프로그래머가 그 안에 필요한 코드를 작성하는 반면에 라이브러리는 사용자가 흐름에 대해 제어를 하며 필요한 상황에 가져다 쓴다. 한마디로 프레임워크에는 제어의 역전(Inversion Of Control)이 적용되어 있다는 것이다.

  • 라이브러리를 사용할 때 사용자는 어플리케이션 코드의 흐름을 직접 제어한다.
  • 개발 시 필요한 기능이 있을 경우에 능동적으로 라이브러리를 호출하여 사용하거나 기존에 구성된 함수나 코드를 가져다 써야한다.
  • 프레임워크는 어플리케이션의 코드가 프레임워크에 의해 사용된다.
  • 어플리케이션 코드는 프레임워크가 짜놓은 틀에서 수동적으로 동작하기 때문에 제어의 흐름은 프레임워크가 가지고 있고 사용자가 그 안에 필요한 코드를 작성하게 된다.

* ❓ 제어의 역전
제어의 역전이란 어떠한 일을 하도록 만들어진 프레임워크에 제어의 권한을 넘김으로써 클라이언트 코드가 신경 써야 할 것을 줄이는 전략이다.
한마디로 프로그래머가 직접 객체의 생성과 소멸 객체간 관계같은 객체의 제어를 수행하는 것이 아니라, 여러 프레임워크, 컨테이너에서 제어를 수행하는 것을 말한다.
일반적으로 라이브러리는 프로그래머가 작성하는 코드가 라이브러리의 메소드를 호출해서 사용하는 것을 의미하는데 프레임워크를 규정하는 특성은 프레임워크의 메소드가 사용자의 코드를 호출 한다는데에 있다.

참조 👇

0개의 댓글