기본 개념

프레임워크란?

프레임워크

란, 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것

프레임워크는 Frame(틀, 규칙) + work(일, 목적)의 합성어이다. 위의 GoF 디자인패턴으로 유명한 랄프 존슨의 정의처럼, 개발자들이 말하는 프레임워크는 '소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합' 이며, 완성된 어플리케이션이 아니기 때문에 프로그래머가 완성시키는 작업을 해야 한다. 객체 지향 개발을 하게 되면서 통합성, 일관성의 부족이 발생하는 문제에 대한 해결방법 중 하나라고 볼 수 있다.

프레임워크의 특징

라이브러리 vs 프레임워크

보통 프레임워크를 처음 설명할 때에는 라이브러리라는 개념과 비교해서 많이 설명한다.

출처 : https://webclub.tistory.com/458

라이브러리와 프레임워크의 차이는 제어 흐름에 대한 주도성이 누구에게/어디에 있는가에 있다. 즉, 어플리케이션의 Flow(흐름)를 누가 쥐고 있느냐에 달려 있다.

프레임워크는 전체적인 흐름을 스스로가 쥐고 있으며 사용자는 그 안에서 필요한 코드를 짜 넣는다. 반면 라이브러리는 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다 쓰는 것이다. 다시 말해, 라이브러리는 라이브러리를 가져다가 사용하고 호출하는 측에 전적으로 주도성이 있으며 프레임워크는 그 틀안에 이미 제어 흐름에 대한 주도성이 내재(내포)하고 있기 때문에 가져다가 사용한다기보다는 거기에 들어가서 사용한다는 느낌/관점으로 접근할 수 있다. 이러한 점에 대해 '프레임워크는 제어의 역전, 제어의 반전 (Inversion of Control) 개념이다'라는 표현이 사용되고는 한다.

Untitled

프레임워크의 장점