728x90
Ch15. 소프트웨어 재사용
📌 [교재] 소프트웨어 공학 10판
[소프트웨어 재사용] : Software reuse
✅재사용의 이점
- 신속한 개발, 높은 품질(확실성), 비용 절감, 리스크(risk) 감소, 표준(standards) 준수 등
✅재사용의 단위
▷ 시스템 재사용
: 여러 개의 애플리케이션으로 구성된 전체 시스템 재사용
▷ 애플리케이션 재사용
: 애플리케이션 변경 없이 다른 시스템에 통합시키거나 설정하여 재사용
▷ 컴포넌트 재사용
; 객체, 서브시스템 등 컴포넌트를 재사용
▷ 객체와 함수의 재사용
: 라이브러리 객체 및 함수
✅개념 재사용
- 코드를 재사용하는 대신 소프트웨어의 기본적 아이디어를 재사용
- 디자인 패턴, 아키텍처 패턴 등
✅재사용의 문제점
- 컴포넌트 라이브러리의 생성 및 관리 비용
- 재사용 컴포넌트 검색, 이해, 변형
- 재사용 컴포넌트의 소스코드가 없으면 유지보수 비용 증가 가능
- 지원 도구 부족
- Not Invented Here 증후군
15.1 재사용 관점
[소프트웨어 재사용을 지원하는 접근 방법] : Approaches that support software reuse
✅애플리케이션 프레임워크
- 애플리케이션을 생성하기 위한 추상 클래스와 구체 클래스의 집합
✅아키텍처 패턴
- 애플리케이션의 공통적인 유형을 지원하는 표준 아키텍처
✅디자인 패턴
- 추상 클래스와 구체 클래스의 상호작용으로 표현된 일반적인 추상화로 특정 상황에 활용할 수 있음
✅컴포넌트 기반 소프트웨어 공학
- 컴포넌트(객체의 집합)를 이용하여 시스템을 개발
✅서비스 지향 시스템 = SOA
- 외부에서 제공되는 서비스를 연결(사용)하여 시스템을 개발
15.2 애플리케이션 프레임워크
[애플리케이션 프레임워크] : Application frameworks
✅애플리케이션 프레임워크
- 유사한 형태의 애플리케이션에서 사용될 수 있는 일반 기능을 제공
- 추상 클래스와 구체 클래스의 집합으로 구현되어 있음
- 구현 언어에 종속, JAVA, C#, C++, Python 등
- 애플리케이션을 위한 핵심 아키텍처 제공
- 객체 클래스와 객체 간의 상호작용으로 표현되는 아키텍처, 설계의 재사용
✅프레임워크의 예
- GUI 프레임워크 : Graphic User Interface
: 이벤트 처리 기능, 위젯 집합 등 기능 제공
- WAF : Web Application Frameworks
: 보안, 동적 웹페이지, 데이터베이스 통합, 세션관리, 사용자 상호작용 등 기능 제공
[확장된 프레임워크] : Extending frameworks
일반적인(generic) 프레임워크를 확장하여 구체적인(specific) 애플리케이션을 생성
- 프레임워크가 제공하는 추상 클래스(인터페이스)를 상속받아 구체 클래스를 구현(추상메소드 구현)
- 이벤트가 일어남녀 호출되는 콜백(callback) 메소드 구현
[프레임워크 3가지 클래스들] : Framework classes
**( 그냥 읽고 넘어감)**
✅시스템 기반구조 프레임워크
- 통신, 사용자 인터페이스, 컴파일러 등의 시스템 기반구조 개발 지원
✅미들웨어 통합 프레임워크
- 컴포넌트 통신과 정보 교환을 위한 표준과 이를 지원하는 클래스들
- 예: Enterprise Java Beans(EJB), .NET
✅엔터프라이즈 애플리케이션 프레임워크
- 특정 애플리케이션 분야(도메인)의 애플리케이션 개발 지원
- 소프트웨어 제품 라인으로 대체됨
<용어 설명> : 시험X 15.3 소프트웨어 제품 라인 [소프트웨어 제품 라인] software product line 공통 아키텍처와 일반적인 기능을 제공하는 SW 애플리케이션 집합 컴포넌트 설정, 구현, 변경 등으로 특정 고객의 요구에 맞출 수 있음 15.4 애플리케이션 시스템 재사용 [Commercial Off the Shelf] (COTS) 판매되는 기성 SW 시스템 [설정 가능한 애플리케이션 시스템] : configurable application system 특정 비즈니스 유형 또는 비즈니스 전체를 지원하기 위해 설계된 일반적인 애플리케이션 시스템 예 : SAP, Oracle 등에서 제공되는 ERP 시스템 |
728x90
'[전공] 학교 전공 공부 > [학교] 소프트웨어 공학' 카테고리의 다른 글
Ch18. 서비스 지향 소프트웨어 공학 (0) | 2022.06.09 |
---|---|
Ch17. 분산 소프트웨어 공학 (0) | 2022.06.08 |
Ch12. 안전성 공학 (0) | 2022.06.07 |
Ch10. 확실성 있는 시스템 (0) | 2022.06.07 |
Ch09. 소프트웨어 진화 (0) | 2022.06.07 |