본문으로 바로가기

구글링을 해 본 결과 다음과 같은 정의를 찾을 수 있었다.

 

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

이라고 정의가 되어있다.

 

프레임워크는 라이브러리와 달리 애플리케이션의 틀과 구조를 결정할 뿐 아니라, 그 위에 개발된 개발자의 코드를 제어한다.

구체적이며 확장 가능한 기반 코드를 가지고 있으며, 설계자가 의도하는 여러 디자인 패턴의 집합으로 구성되어 있다.

 

장점.

생산성 향상 - 재사용 가능한 이미 만들어진 모듈을 이용, 코드중복 감소

관리의 용이 - 구조의 통일로 인한 관리의 용이

 

 


 

 

이 위에 말이 바로 이해가 간다면 뒤로가기를 눌러 다음 글을 읽을 필요가 없다. 하지만 우리는 자연스럽게 아래로 내려가면 되겠다.

 

그럼 먼저, 라이브러리의 정의는 자주 쓰일만한 기능들을 모아 놓은 유틸(클래스)들의 모음집 정도라고 정의 한다. 

사용자와 실제 구현하고자 하는 기능 사이에, 사용자로 하여금 구현하고자 하는 기능을 쉽게 제공해주는 중간 계층이란 면에 있어서

라이브러리와 프레임 워크는 비슷한 점이 있다.

 

그럼 여기서 프레임 워크와 라이브러리의 가장 큰 차이점은 프레임 워크에는 라이브러리에 뼈대가 되는 클래스들과 그 클래스들의 관계로 만들어진 일종의

'설계의 기본 틀' 이 추가 된다는 점이다. 여기서 설계의 틀이란 말은 물론 위에 정의에서 나온 '확장 가능한 기반코드'라든지, '재사용 가능한 형태의 협업화된 클래스들'

이라는 말과 같은 뜻이다.

 

라이브러리부터 생각 해본다면 라이브러리는 설계를 대신 해주지 않는다. 

이게 무슨 말이냐면 라이브러리는 프로그래머가 프로그램을 짜다가 그때 그때 필요한 걸 가져다 쓰는 대상(기능)이지 라이브러리가 그 기능을 쓰기 위해

필요한 구조에 대해 말해주지 않는다는 뜻이다.

 

따라서, 동일한 라이브러리를 쓰는 동일한 기능의 프로그램일지라도 클래스 관계 구조나,데이터를 처리하는 절차라든지, 프로그램이 화면에 그려지는 방식 같은 등등의 요소들은

프로그램을 짜는 프로그래머마다 다르며 프로그램을 완성시키는 시간도, 품질도 프로그래머의 역량에 따라 다를 것이다.

 

그럼 이제 프레임 워크를 보자면 보통 프레임워크엔 프레임 워크의 제작자가 '이걸 기초로 해서 만드세요' 라고 만들어 놓은 '기반 코드'가 있다.

물론 이 코드,혹은 클래스들은 차후 사용자들에 의해 확장될 것을 충분히 고려해서 만들어졌기 때문에 사용자 입장에서는 그저 이 것을 가지고

살을 덧붙여 자기만의 프로그램을 완성해 나가면 되는 것이다.

 

예를 들어 사용자가 만약 여기다가 그리기 기능을 추가하고 싶다라고 하면 상속 받은 클래스에 OnPrint() 함수를 재정의해서 단순히 함수 몸체 안에 코드를

넣기만 하면 되는것 처럼.

 

이러한 확장 가능한 기반 코드에는 프레임 워크 제작자 나름대로의 설계 철학이 담겨 있으며, 차후 이 프레임 워크의 사용자가 제작자가 설계한 구조를 

유지하면서 확장할 수 있도록, 제작자에 의해 의도된 제약 사항이 존재한다.

 

다시 말해, 프레임 워크란?

 

설계의 기반이 되는 부분을 기술한  확장 가능한 기반 코드와 사용자가 이 코드를 자기 입맛대로 확장하는 데 필요한 라이브러리 

이 두 가지 요소가 통합되어 제공되는 형태를 말하며,

 

사용자가 이를 이용해 일정 수준 이상의 품질을 보장받는 코드를, 비교적 빠른 시간에 완성 및 유지 보수할 수 있는

환경을 제공해주는 솔루션으로 "기본적인 설계나 필요한 라이브러리는 알아서 제공해 줄꺼니깐 넌 그냥 니가 진짜로 하고 싶은 기능 구현에만 전념해!"

라는 취지에서 만들어진 물건이란 것이다.

 

참고 - http://jokergt.tistory.com/89

 

+

 

프레임워크는 공장과 같습니다. 옷 공장 신발 공장 만두 공장 등 공장마다 서로 다른 제품을 생산 합니다. 제품을 만들기 위해 어떤 재료를 사용 하냐에 따라 같은 제품일지라도 품질 디자 인 등 여러 면이 달라집니다. 하지만 공장이라는 개념을 봤을 경우 공장은 재료를 준비하고 가공하고 생산 하는 일은 같은 원리입니다. 프레임워크도 같은 개념입니다 애플리케이션을 구축할 때 모든 애플리케이션의 공통적인 부분을 제공해줍니다.

 

 예를 들면 웹 애플리케이션을 구축 한다고 예를 들겠습니다. 웹 애플리케이션을 구축하려면 우선 웹에 맞는 환경설정과 DB에 연결하는 부분, 사용자에게 보여주는 부분 등 모든 웹 애플리케이션의 공통적인 부분입니다. 이런 부분을 제공해주는 것이 프레임워크입니다. 그렇다 보니 애플리케이션 구축 시간이 빨라지며 비용이 절감됩니다. (비용 절감은 많은 것이 있겠지만 대표적인 것이 인력비용입니다.) 그래서 현재 애플리케이션 구축에 있어서 프레임워크를 이용하여 구축하는 사례가 많아지고 있습니다.

 

설계 기반이 되는 부분을 기술한  확장 가능한 기반 코드와 사용자가 코드를 확장하는데 필요한 라이브러리의 요소가 통합되어 제공되는 형태로 사용자는 이를 통해 일정 수준이상의 품질을 보장받는 코드를, 비교적 빠른 시간에 완성 및 유지 보수할 수 있는 환경을 제공해주는 솔루션

 

 

기본적인 설계나 필요한 라이브러리는 알아서 제공해 줄 테니까 너가 사용하고 싶은 기능 구현에만 집중해!!