소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것
- 라이브러리
자주 쓰일 만한 기능들을 모아 놓은 유틸(클래스)들의 모음집
-
프레임워크는 '설계의 기본 틀'이 추가된다.
-
확장 가능한 기반코드'라든지, '재사용 가능한 형태의 협업화된 클래스들'
-
우선, 라이브러리를 먼저생각해본다. 라이브러리는 설계를 대신 해주지 않는다. 무슨 뜻이냐 하면, 라이브러리는 그저 프로그래머가 프로그램을 짜다가 '아, 이럴 땐 라이브러리에서 이런 기능을 뽑아다 쓰면 되겠구나' 라는 생각이 들었을때, 그떄 그때 필요한 것을 가져다 쓰는 대상이지 라이브러리가 그 기능을 쓰기 위해 필요한 구조에 대해 말해주지는 않는다는 것이다.
-
하지만, 프레임워크는 제작자가 '이걸 기초로 해서 만드세요' 라고 제작자가 직접 만들어 놓은 '기반 코드'가 있다. 물론 이 코드, 혹은 클래스들은 차후 사용자들에 의해 확장될 것을 충분히 고려해서 만들어졌기 때문에 사용자 입장에서는 그저 이 것을 가지고, 여기 저기를 자기 입맛대로 바꾸고 살을 덧붙여 자기만의 프로그램을 완성해 나가면 되는 것이다.
- 설계의 기반이 되는 부분을 기술한 확장 가능한 기반 코드와 사용자가 이 코드를 자기 입맛대로 확장하는 데 필요한 라이브러리 이 두 가지 요소가 통합되어 제공되는 형태를 말하며, 사용자가 이를 이용해 일정 수준 이상의 품질을 보장받는 코드를, 비교적 빠른 시간에 완성 및 유지 보수할 수 있는 환경을 제공해주는 솔루션으로 "기본적인 설계나 필요한 라이브러리는 알아서 제공해 줄꺼니깐 넌 그냥 니가 진짜로 하고 싶은 기능 구현에만 전념해!" 라는 취지에서 만들어진 물건이란 것이다.