응용 프로그램 개발이나 문제 해결을 수월하게 하기 위해 설계와 구현을 재사용이 가능한 형태로 제공하는 소프트웨어 환경 특징 내용 재사용성(Reusability) 전체나 일부 소프트웨어를 다른 목적으로 사용할 수 있도록 함 확장성(Extensibility) 다형성을 통한 인터페이스 확장이 가능 제어의 역흐름(Inversion of Control) 개발자가 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로서 생산성을 향상시킴 모듈화(Modularity) 모듈화를 통해 설계 및 구현의 변경에 따른 영향을 최소화 함