티스토리 뷰
'프레임워크(Framework)'라는 용어는 정말 많이 쓰이지만, 딱 정의를 내리기엔 애매한 용어같다. 먼저, 위키피디아 한국어판의 '소프트웨어 프레임워크'에 대한 정의는 아래와 같다.
"소프트웨어 환경에서 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조"
'라이브러리(Library)'라는 용어의 경우에는 프레임워크에 비해 비교적 정의가 명확한데, 일단 위키피디아 한국어판의 정의는 아래와 같다.
"소프트웨어 개발에 쓰이는 하부 프로그램들의 모임"
즉, 자주 쓰일 만한 기능들을 (따로 구현하여) 모아 놓은 유틸(혹은 클래스)의 모음이라고 할 수 있다. 라이브러리와 프레임워크, 이 둘은 애플리케이션의 틀과 구조를 결정한다는 측면에서 활용도가 상당히 유사하다. 그래서 이를 구분하기가 굉장히 힘들다.
라이브러리는 그저 개발자가 개발 도중 특정 기능이 필요할 경우 호출하여 사용하는 '도구 모음'에 불과하다. 그래서 동일한 라이브러리를 사용하더라도, 개발자에 따라 핵심 클래스 설계와 상속구조, 데이터 처리방식 등이 달라질 수 있다. 이를 '확장 가능한 코드'를 통해 통제(혹은 가이드)하는 것이 프레임워크이다.
프레임워크는 라이브러리가 가진 한계를 극복한 형태이다. 프레임워크는 설계자가 의도한 여러 디자인 패턴으로 구성되어있으며, 그래서 개발자가 애플리케이션의 구조적 설계를 신경 쓸 필요가 없다. (신경 쓰고 싶어도 못하도록 막는다.)
즉 프레임워크는 개발자의 고민을 덜어주는 한편, 애플리케이션의 구조적 설계를 마치 한 사람이 만든 것처럼 튼튼하게 만들어주는 효과가 있다. 게다가 프레임워크는 개발자가 정해진 틀 안에서 비즈니스 로직을 편하게 구현할 수 있도록 라이브러리를 제공한다.
정리하자면 프레임워크는 라이브러리보다 더 큰 개념이다. 라이브러리가 '쓸만한 기능들을 모아놓은 유틸 모음집"에서 그쳤다면, 프레임워크는 '일정 수준 이상의 품질을 보증하는 코드를 비교적 빠르고 편하게 완성 및 유지보수 할 수 있는 솔루션'이라고 할 수 있다.
-끝-
출처 및 참고:
https://spring.io/
http://jokergt.tistory.com/89
https://ko.wikipedia.org/wiki/
'IT > 기술면접' 카테고리의 다른 글
[IT 기술면접 준비자료] C++와 JAVA의 비교 (2) | 2017.03.05 |
---|---|
[IT 기술면접 준비자료] 대칭키, 공개키 방식과 SSL(TLS) (0) | 2017.02.19 |
[IT 기술면접 준비자료] 당신이 브라우저로 웹사이트에 접속할 때 일어나는 일들 (부제: DNS 이야기) (0) | 2017.01.22 |
[IT 기술면접 준비자료] 상호배제(Mutual Exclusion)와 상호배제 알고리즘 (7) | 2017.01.08 |
[IT 기술면접 준비자료] JAVA의 Collection framework (0) | 2016.12.25 |