소프트웨어 공학 - Chpater 15. 소프트웨어 재사용

4 분 소요

소프트웨어 재사용에 대한 이야기다.

소프트웨어 재사용은 기존의 여러 사람에게 인정받은 기존의 소프트웨어 기능을 목적에 맞도록 변형시켜 현재 만들고자 하는 소프트웨어에 사용하는 것이다.

이를 통해 시간과 자원을 절약할 수 있다는 장점을 가진다.

정보처리 기사를 공부하면서 소프트웨어 재사용의 중요성을 깨달았다.

  • 소프트웨어 재사용 목차
    • 재사용 관점
    • 애플리케이션 프레임워크
    • 소프트웨어 제품 라인
    • 애플리케이션 시스템 재사용

Software Reuse [458~459p]

  • 재사용의 이점
    • 신속한 개발
    • 높은 품질 (확실성)
    • 비용 절감
    • 리스크 감소
    • 표준 준수


  • 재사용의 단위
    • 시스템 재사용
      • 여러 개의 애플리케이션으로 구성된 전체 시스템 재사용
    • 애플리케이션 재사용
      • 애플리케이션 변경 없이 다른 시스템에 통합시키거나 설정하여 재사용
    • 컴포넌트 재사용
      • 객체, 서브시스템 등 컴포넌트를 재사용
    • 객체와 함수의 재사용
      • 라이브러리 객체 및 함수

Software Reuse [459~460p]

  • 개념 재사용
    • 코드를 재사용하는 대신 소프트웨어의 기본적인 아이디어를 재사용
    • 디자인 패턴, 아키텍처 패턴 등
  • 재사용 문제점
    • 컴포넌트 라이브러리의 생성 및 관리 비용
    • 재사용 컴포넌트 검색, 이해, 변형
    • 재사용 컴포넌트의 소스코드가 없으면 유지 보수 비용 증가 가능
    • 지원 도구 부족
    • Not Invented Here 증후군 (남이 만든 것을 믿지 못함)

Approaches that supports Software Reuse 재사용 관점 [462p]

  • 애플리케이션 프레임워크 (GUI 를 개발하기 위해서 사용하는 것, JAVA Swing)
    • 애플리케이션을 생성하기 위한 추상 클래스와 구체 클래스의 집합
    • 애플리케이션 시스템을 생성하기 위해 추상클래스들과 구체클래스들의 집합들이 적용되고 확장된다.
  • 아키텍처 (서브시스템) 패턴
    • 애플리케이션의 공통적인 유형을 지원하는 표준 아키텍처
    • 애플리케이션 시스템의 일반(공통)적인 유형을 지원하는 표준 소프트웨어 아키텍처는 애플리케이션의 기초로 사용된다.
  • 디자인 패턴
    • 추상 클래스와 구체 클래스의 상호작용으로 표현된 일반적인 추상화로 특정 상황에 활용할 수 있음
    • 여러 애플리케이션들에 걸쳐 발생하는 일반화된 추상 개념은 추상 객체, 구체 객체, 그리고 상호 작용을 보여주는 디자인 패턴으로써 표현된다
  • 컴포넌트 기반 소프트웨어 공학
    • 컴포넌트 (객체의 집합)을 이용하여 시스템을 개발
  • 서비스 지향 시스템
    • 외부에서 제공되는 서비스를 연결(사용)하여 시스템을 개발

Application Frameworks [464p]

  • 애플리케이션 프레임워크
    • 유사한 형태의 애플리케이션에서 사용될 수 있는 일반 기능을 제공
    • 추상 클래스와 구체 클래스의 집합으로 구현되어 있음
      • 구현 언어에 종속, JAVA, C#, C+, C++, Python 등
    • 애플리케이션을 위한 핵심 아키텍처 제공
      • 객체 클래스와 객체 간의 상호작용으로 표현되는 아키텍처, 설계의 재사용

특정 애플리케이션을 위해 기능을 추가하여 이것들을 특화시키는 것이 전문가에게 남겨진다. 예를 들면, 사용자 인터페이스 프레임워크에서 개발자는 애플리케이션 구현에 적합한 디스플레이 레이아웃을 정의한다.

  • 프레임 워크의 예시
    • Graphic User Interface (GUI) 프레임워크
      • 이벤트 처리 기능, 위젯 집합 등 기능 제공
    • Web Application Framework (WAF)
      • 보안, 동적 웹페이지, 데이터베이스 통합, 세션 관리, 사용자 상호작용 등 기능 제공
  • 공통적으로 많이 사용하는 기능들을 모아 사용할 수 있도록 만든 것이 프레임워크다

WAF Features [465p]

  • 보안 (Security) *사용자 인증 (로그인) 구현을 위한 클래스를 제공하고 허가된 기능만 접근 가능하도록 제어
  • 동적 웹페이지
    • 웹페이지 템플릿 정의를 위한 클래스 제공
    • 동적으로 특정 데이터를 템플릿에 적용하는 것을 도와줌
  • 데이터베이스 통합
    • 다양한 데이터베이스를 위한 추상 인터페이스를 제공
  • 세션 관리
    • 세션의 생성과 관리를 위한 클래스 제공
  • 사용자 상호 작용
    • Ajax, HTML5 등을 지원

Extending Frameworks [465p]

  • 일반적인 (Generic) 프레임워크를 확장하여 구체적인 (Specific) 애플리케이션을 생성
    • 프레임워크가 제공하는 추상 클래스 (인터페이스)를 상속받아 구체적인 클래스를 구현 (추상 메소드 구현)
    • 이벤트가 일어나면 호출되는 콜백 (Callback) 메서드를 구현

Framework classes [466p]

  • 시스템 기반 구조 프레임워크
    • 통신, 사용자 인터페이스, 컴파일러 등의 시스템 기반 구조 개발 지원
  • 미들웨어 통합 프레임워크
    • 컴포넌트 통신과 정보 교환을 위한 표준과 이를 지원하는 클래스
    • 예 : Enterprise Java Beans (EJB) , .NET
  • 엔터프라이즈 애플리케이션 프레임워크
    • 특정 애플리케이션 분야 (도메인) 의 애플리케이션 개발 지원
    • 소프트웨어 제품 라인으로 대체됨

용어 [467P]

  • 소프트웨어 제품 라인 (Software Product Line)
    • 도메인 특화된 어플리케이션들을 재사용하기 위함 (학교, 병원 같은 경우)
    • 공통 아키텍처와 일반적인 기능을 제공하는 소프트웨어 애플리케이션 집합
    • 컴포넌트 설정, 구현, 변경 등으로 특정 고객의 요구에 맞출 수 있음
    • 여러 조직에서 사용하는 시스템이 유사할 때, 일반화된 소프트웨어 제품 라인을 만들어 비공식적으로 재사용한다.
  • Commercial Off the shelf (COTS)
    • 판매되는 기성 소프트웨어 시스템
  • 설정 가능한 애플리케이션 시스템 (Configurable Application System)
    • 특정 비즈니스 유형 또는 비즈니스 전체를 지원하기 위해 설계된 일반적 (Generic) 애플리케이션 시스템
    • 예 : SAP, Oracle 등에서 제공되는 ERP 시스템

TIP

  • 애플리케이션 시스템 재사용

애플리케이션 시스템 제품은 시스템의 소스 코드를 변경하지 않고 다른 고객의 필요성에 적응할 수 있는 소프트웨어 시스템이다.
애플리케이션 시스템은 일반적인 시장을 위해 시스템 판매자에 의해 개발된다.
이것은 개별 고객을 위해 특별히 개발되지 않는다.
이 시스템 제품은 때때로 COTS (Commercial Off-the Shelf System) 제품으로 알려져 있다.
그러나 COTS라는 용어는 대부분 군용 시스템에서 사용되고, 여기에서는 이 시스템을 제품 애플리케이션 시스템이라 부르는 것을 더 선호한다.
가상적으로 비즈니스를 위한 모든 데스크톱 소프트웨어와 많은 서버기반 시스템은 애플리케이션 시스템이다.
이 소프트웨어는 일반적 사용을 위해 설계되었고, 그렇기에 많은 특징과 기능을 포함한다.
따라서 이것은 여러 환경과 여러 애플리케이션의 일부에서 재사용 잠재성을 가지고 있다.
애플리케이션 시스템 제품은 특정한 고객의 요구에 맞게 만들기 위해 시스템의 기능을 변경시킬 수 있는 내장된 설정 메커니즘을 사용함으로써 적응된다.
다른 설정 기능은 기능을 확장하거나 사용자의 입력의 유효성을 확인하기 위해 사용자의 입력을 검사하는 플로그인을 허용할 수 있다.

  • 설정 가능한 애플리케이션 시스템

설정 가능한 애플리케이션 시스템은 특수한 비즈니스 유형, 비즈니스 활동, 또는 때로 비즈니스 기업 전체를 지원하기 위해 설계된 일반화된 애플리케이션 시스템이다.
보다 큰 규모에서 보면 대기업에서 전사적 자원 관리 (ERP : Enterprise Resource Planning) 시스템은 제조, 주문 그리고 고객 관계 관리 프로세스를 지원할 수 있다.
일반화된 ERP 시스템은 고객을 위한 시스템을 만들기 위해 다양한 방법으로 결합될 수 있는 다수의 모듈을 포함한다.
설정 프로세스는 포함돼야 할 모듈을 선택하고 각 모듈을 설정하고, 비즈니스 프로세스와 비즈니스 규칙을 정의하고 그리고 시스템 데이터베이스의 설정과 조직을 정의하는 것을 포함한다.
ERP 시스템은 일부 또는 모든 기능들을 지원하기 위해 거의 대부분의 대기업에서 사용된다.
따라서 이것들은 매우 넓게 사용되는 소프트웨어 재사용의 형태다.
재사용을 위한 이 방법의 분명한 제한은 고객 애플리케이션의 기능은 ERP 시스템의 내장 모듈 기능에 의해 제한된다는 것이다.
만약 기업이 추가적인 기능을 필요로 한다면, 이 기능을 제공하기 위해 별도의 추가 시스템을 개발해야 한다.

댓글남기기