CODEDRAGON ㆍDevelopment/Software Engineering
프레임워크에 대한 이해
· 소프트웨어 프레임워크의 정의
· 프레임워크의 특징
· 프레임워크의 구성 요소
♣소프트웨어 프레임워크의 정의
· 효율적인 정보시스템 개발을 위한 코드 라이브러리, 애플리케이션 인터페이스 규약(Application Programming Interface), 설정정보 등의 집합으로서 소프트웨어 구성에 필요한 기본 뼈대를 제공합니다.
· 광의적으로 정보시스템의 개발 및 운영을 지원하는 도구 및 가이드 등을 포함합니다.
· "A software framework is an abstraction in which software providing generic functionality can be selectively changed by additional user-written code, thus providing application-specific software. A software framework is a universal, reusable software platform used to develop applications, products and solutions." (from Wikipedia)
https://en.wikipedia.org/wiki/Software_framework
프레임워크의 특징
특징 | 설명 |
모듈화 (modularity) |
· 프레임워크는 구현을 인터페이스 뒤에 감추는 캡슐화를 통해서 모듈화를 강화합니다. · 프레임워크의 모듈화는 설계와 구현의 변경에 따르는 영향을 최소화함으로써 손쉽게 소프트웨어의 품질을 향상시킬 수 있게 합니다. |
재사용성 (reusablity) |
· 프레임워크가 제공하는 인터페이스는 여러 애플리케이션에서 반복적으로 사용할 수 있는 일반적인 컴포넌트를 정의할 수 있게 함으로써 재사용성을 높여준다. · 프레임워크 재사용성은 도메인 지식과 경험있는 개발자들의 이전의 노력을 활용하여, 애플리케이션의 요구사항과 소프트웨어 설계에 대한 공통의 솔루션을 반복적으로 재개발하고, 그에 대해 유효성을 다시 확인하는 작업을 피할 수 있게 합니다. · 프레임워크 컴포넌트를 재사용하는 것은 소프트웨어의 품질, 성능, 신뢰성, 상호 운용성을 향상시킬 뿐만 아니라, 프로그래머의 생산성을 상당히 높여줍니다. |
확장성 (extensibilty) |
· 프레임워크는 다형성(polymorphism)을 통해 애플리케이션이 프레임워크의 인터페이스를 확장할 수 있게 합니다. · 프레임워크 확장성은 새로운 애플리케이션 서비스와 특성을 커스터마이징하는 것을 보장하는 데 필수적인 사항이며, 또한 프레임워크를 애플리케이션의 가변성으로부터 분리함으로써 재사용성의 이점을 얻게 합니다. |
제어의 역흐름 (inversion of control) |
· 일반적으로 어떤 모듈을 호출함으로써 해당 모듈을 재사용하게 된다. 그러나 프레임워크에서는 이와는 반대되는 제어 흐름으로의 재사용성을 지원합니다. · 여기에서 이른바 "헐리우드 원리(Holywod Principle)" 즉, "나를 부르지 마라. 내가 너를 부를 것이다"라는 원리가 적용되는 것이다. 즉, 프레임워크 코드가 전체 애플리케이션의 처리흐름을 제어하며, 특정한 이벤트가 발생할 때 다형성(Polymorphism)을 통해 애플리케이션이 확장한 메서드를 호출함으로써 제어가 프레임워크로부터 애플리케이션으로 거꾸로 흐르게 합니다. 이러한 제어의 역흐름을 통해서 프레임워크가 외부의 이벤트에 대해서 애플리케이션이 어떠한 메서드들을 수행해야 하는지를 결정할 수 있게 합니다. |
프레임워크의 구성 요소
특징 | 설명 |
실행환경 | 자바 기반의 응용시스템 개발 시 필수적인 기능을 패턴화하여 미리 구현해 둔 라이브러리 코드 묶음 |
개발환경 | 설계, 구현, 테스트 등 개발 생명주기(Life Cycle)상에 필요한 지원도구 모음 |
운영환경 | 표준프레임워크를 기반으로 개발한 시스템에 대하여 운영 시에 필요한 의사소통 및 모니터링 도구 모음 |
관리환경 | 표준프레임워크에 대한 기술지원, 업그레이드 등을 관리하기 위한 표준프레임워크센터 내부 업무시스템 |
'Development > Software Engineering' 카테고리의 다른 글
디버깅 도구의 사용법, 디버깅(Debugging) 또는 디버그(Debug)의 개념, 디버깅 방법, 디버거(Debugger) (0) | 2017.07.21 |
---|---|
수행 내용-서버 프로그램 작성하기 (0) | 2017.07.21 |
단위 테스트(Unit Test), 단위 테스트 도구 적용방법, 단위 테스트는 버그를 찾기 위한 것이 아니다., 하나의 테스트 케이스는 단위 기능 중 하나의 시나리오만 테스트하라. 불필요한 검증 구문을.. (0) | 2017.07.21 |
수행 내용 - 공통 모듈 작성하기 (0) | 2017.07.21 |
공통 모듈에 대한 이해, 전자정부 표준프레임워크 구성 (0) | 2017.07.21 |