Ch15. 소프트웨어 재사용

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