사전적 의미는 뼈대나 기반구조를 뜻하며 소프트웨어에서의 프레임워크는 ‘소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 틀’을 의미한다.
즉, 프레임워크는 특정 프로그램을 개발하기 위한 여러 요소들과 메뉴얼인 룰을 제공하는 프로그램, 개발을 도와주는 역할이라고 할 수 있다.
특징
- 모듈화 : 프레임워크는 구현을 인터페이스 뒤에 감춰 모듈화를 강화하고 설계와 구현 변경에 따르는 영향을 최소화함
- 재사용성 : 인터페이스를 통해 여러 애플리케이션에서 반복적으로 사용하는 일반적 컴포넌트를 정의하여 재사용성을 높임
- 확장성 : 다형성을 통해 애플리케이션이 프레임워크의 인터페이스를 확장
- 제어의 역행 : 프레임워크 코드가 전체 애플리케이션의 처리 흐름을 제어, 외부의 이벤트에 대해 애플리케이션이 어떤 메서드를 수행해야할지 결정
구성요소
- 개발환경 : 설계 , 구현, 테스트 등 개발에 필요한 지원 도구 모음
- 실행환경 : 자바 기반 응용시스템 개발 시 필수적 기능을 패턴화해 미리 구현해둔 라이브러리 코드 모음
- 운영환경 : 표준 프레임워크 기반 개발 시스템에 대한 운영 시 필요한 의사소통 및 모니터링 도구 모음
- 관리환경 : 표준 프레임워크에 대한 기술 지원, 업그레이드 등 관리하기 위한 내부 업무 시스템
프레임워크가 뼈대, 틀, 기반이라면 라이브러리는 이것을 완성시키기 위해 사용되는 조각이라고 생각할 수 있다. 라이브러리는 단순 활용이 가능하며 효율적인 프로그램 개발을 위해 필요한 프로그램을 모아 놓은 집합으로 소프트웨어 개발 시 사용되는 프로그램의 구성요소, 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것이다. 즉, 라이브러리는 소프트웨어를 개발하기 쉽게 어떤 기능을 제공하는 도구들이라고 할 수 있다.
구성
- 도움말 : 라이브러리를 사용할 수 있도록 하는 도움말 문서
- 설치 파일 : 라이브러리를 적용하기 위해 제공하는 설치 파일
- 샘플 코드 : 라이브러리를 이해하고 손쉽게 적용하기 위해 제공되는 샘플 소스 코드
종류
- 표준 라이브러리 : 프로그래밍 언어가 기본 적으로 가지고 있는 라이브러리
- 외부 라이브러리 : 표준 라이브러리와 달리 별도의 파일을 설치
💡 나의 한줄 정리 : 프레임워크가 틀 안으로 사용자가 들어가는 느낌이라 한다면 라이브러리는 사용자가 라이브러리를 가져다 사용하는 느낌이라고 할 수 있다.