2008년 9월 30일 화요일

프레임워크(FrameWork)란?

프레임워크(FrameWork)란?
프레임워크는 소프트웨어의 특정한 클래스에 대하여 재사용할 수 있는 설계로 구성된 관련된 클래스들의 집합이다. 프레임워크는 설계를 추상적인 클래스로 분리하고 그들의 책임과 협동 관계를 정의함으로서 아키텍처적인 가이드를 제공한다.

여러분은 프레임워크로부터 추상적인 클래스를 서브클래싱하여 애플리케이션에 특정한 서브클래스를 생성함으로서 특정한 어플리케이션에 대하여 프레임워크를 커스터마이징한다.

프레임워크의 이점.

  1. 모듈화(modularity)
    프레임워크는 구현을 인터페이스 뒤에 감추는 캡슐화를 통해서 모듈화를 강화한다. 프레임워크의 모듈화는 설계와 구현의 변경에 따르는 영향을 극소화함으로써 손쉽게 소프트웨어의 품질을 향상시킬 수 있게 한다.
  2. 재사용성(reusablility)
    프레임워크가 제공하는 인터페이스는 여러 애플리케이션에서 반복적으로 사용할 수 있는 일반적인 컴퍼넌트를 정의할 수 있게 함으로써 재사용성을 높여준다. 프레임워크 재사용성은 도메인 지식과 경험있는 개발자들의 이전의 노력을 활용하여, 애플리케이션의 요구사항과 소프트웨어 설계에 대한 공통의 솔루션을 반복적으로 재개발할고 그에 대해 유효성을 다시 확인하는 작업을 피할 수 있게 한다.
    프레임워크 컴퍼넌트를 재사용하는 것은 소프트웨어의 품질, 성능, 신뢰성, 상호 운용성을 향상시킬 뿐만 아니라, 프로그래머의 생산성을 상당히 높여준다.
  3. 확장성(extensibility)
    프레임워크는 다형성(polymorphism)을 통해 애플리케이션이 프레임워크의 인터페이스를 확장할 수 있게 한다. 프레임워크 확장성은 새로운 애플리케이션 서비스와 특성을 커스터마이징하는 것을 보장하는데 있어서 필수적인 사향이며, 또한 프레임워크를 애플리케이션의 가변성으로 부터 분리함으로써 재사용성의 이점을 얻게 한다.
  4. 제어의 역흐름(inversion of control)
    일반적으로 어떤 모듈을 호출함으로서 해당 모듈을 재사용하게 된다. 그러나 프레임워크에서는 이와는 반대되는 제어 흐름으로의 재사용성을 지원한다. 여기에서 이른바 "헐리우드 원리(Hollywood Principle)" 즉, "나를 부르지 마라. 내가 너를 부를 것이다"라는 원리가 적용되는 것이다. 즉, 프레임워크 코드가 전체 애플리케이션의 처리흐름을 제어하며, 특정한 이벤트가 발생할 때 다형성(polymorphism)을 통해 애플리케이션이 확장한 메써드를 호출함으로서 제어가 프레임워크로부터 애플리케이션으로 거꾸로 흐르게한다. 이러한 제어의 역흐름을 통해서 프레임워크가 외부의 이벤트에 대해서 애플리케이션이 어떠한 메써드들을 수행해야 하는지를 결정할 수 있게 한다.


"참고: J2EE Enterprise System 객체지향 CBD 개발 방법론 4장 아키텍처란 무엇인가"

댓글 없음: