본문 바로가기

CS/TOPCIT

[TOPCIT] 01소프트웨어개발_2.소프트웨어 재사용

반응형

2. 소프트웨어 재사용

2.1 소프트웨어 재사용

소프트웨어 재사용 정의

  • 소프트웨어 재사용이란 사용 소프트웨어 개발관련 지식(기능, 모듈, 구성 등)을 표준화하여 개발 생산성을 높이기 위하여 반복적으로 사용하기에 적합하도록 구성하는 방법
  • 신규 개발되는 소프트웨어의 품질과 생산성 및 신뢰성을 높이고 개발 일정 및 비용을 감소

소프트웨어 재사용 배경

  • 소프트웨어 위기로 인한 품질 및 생산성 저하
  • 소프트웨어 개발의 자동화 기술 발달로 CASE 도구 사용 확대
  • 소프트웨어 개발 표준화 준수 및 품질확보 노력

소프트웨어 재사용의 목적

  • 신뢰성: 기능, 안전, 속도 등의 사전 성능 검증됨
  • 확장성: 검증된 기능 기반으로 upgrade 용이
  • 생산성: 비용, 시간 위험 등 전체적 개발 프로세스 향상

소프트웨어 재사용의 대상

  • 일반적인 지식
    • 환경 정보: 교육 및 활용을 통해 얻어진 지식
    • 외부 지식: 개발 및 특정분야의 참여를 통해 쌓은 지식
  • 설계 정보
    • 기본설계
    • 상세셀계
  • 데이터 정보
    • 시스템 데이터
    • 테스트 케이스
  • 프로그램 코드
    • 모듈
    • 프로그램
  • 기타
    • 투자 대 효과 분석정보
    • 사용자 지침서
    • 타당성 조사방법 및 결과
    • 프로토타입
    • 인력

소프트웨어 재사용의 원칙

  1. 범용성: 특정 응용분야만이 아닌 일반적으로 활용될 수 있는 정도
  2. 모듈성: 정보은닉과 추상화의 원칙으로 최소한의 결합도 및 최대한의 응집력을 갖도록 하는 특성
  3. 하드웨어 독립성: 하드웨어 기종과 무관하게 실행 가능
  4. 소프트웨어 독립성: OS 또는 DBMS와는 무관하게 운영해야 한다.
  5. 자기문서화: 모듈의 정확한 기능, 용법, 인터페이스를 기술한다.
  6. 일반성: 많은 개발자들에게 공통적으로 필요하고 사용 가능해야 한다.
  7. 신뢰성: 품질을 믿고 사용할 수 있어야 한다.

실무에서 재사용 구현의 문제점

  • 공통으로 사용할 수 있는 모듈을 발견하기 어렵다.

  • 소프트웨어 표준화가 부족하다

  • 모듈 내부 인터페이스 요구사항의 이해가 곤란하다.

  • 변경으로 인한 부차적 영향으로 이해가 곤란하다.

  • 재사용을 위한 소프트웨어 부품은 개발비가 더 들 수 있다.

  • 재사용의 효익은 오랜 시간이 경과후에 나타난다.

  • 재사용 부품의 추출이 비현실적이다.

  • 소프트웨어 재사용의 장애요인

    • 관리자와 개발 담당자들의 거부반응
    • 재사용 기술적용의 동기 결여
    • 소프트웨어 표준화의 부재
    • 사회적 또는 법적 장애
  • 소프트웨어 재사용의 장애요인 제거 대책

    • 기술적 방안
      • 새로운 설계 및 개발 방법론의 활용
      • 재사용 소프트웨어 라이브러리의 구축
      • 자동화 도구(CASE)의 활용
    • 관리, 제도적 방안
      • 보상제도의 확립
      • 능동적인 경영전략
      • 조직의 변화

재사용 적용 시 고려사항

  • 생산성의 향상이 가능한 재사용
  • 체계화된 재사용 기반의 소프트웨어 개발 프로세스
  • 재사용 문화 조성을 위한 제도 정착
  • 초기 투자를 통한 재사용 환경의 구축
  • 지속적인 라이브러리의 개선 및 보강
  • 도구(tool)의 자원이 있는 재사용
  • 소프트웨어 생산성 평가 및 척도
  • 재사용 컴포넌트에 대한 정보 집합의 원리
  • 소프트웨어 재사용 대상 산출물
  • 하향식/상향식 개발 접근법
  • 재사용 컴포넌트에 대한 granularity

소프트웨어 재사용의 효과

  • 소프트웨어 생산의 TCO 절감
  • 높은 품질의 소프트웨어 생산을 위한 공유 및 활용효과
  • 시스템 개발에 대한 정보공유 및 타 프로젝트의 산출물 공유
  • 시스템 구조와 좋은 시스템 구축방법에 대한 교육적 효과

2.2 역공학

역공학이란

  • 소프트웨어 공학의 한 분야로 이미 만들어진 시스템을 역으로 추적하여 처음의 문서나 설계기법 등의 자료를 얻어 내는 일을 말한다. 이것은 시스템을 이해하여 수정하는 소프트웨어 유지보구 단계에 수행하는 일련의 활동이다.

역공학이 필요한 경우

  • 기 가동중인 시스템의 유지보수가 어려운 경우
  • 변경이 빈번하여 시스템 효율이 저하된 경우
  • 파일 시스템으로 개발된 업무를 관계형 데이터베이스로 재구축 하려는 경우
  • 기본 메인 프레임을 다운사이징 하는 경우

역공학의 장점

  • 상용화되거나 기 개발된 소프트웨어의 분석을 도와줌
  • 기존 시스템의 자료와 정보를 설계 수준에서 분석할 수 있어 유지 보수성을 향상
  • 기존 시스템 정보를 repositry에 보관하여 CASE의 사용을 용이하게 함

역공학의 종류

  • 논리역공학: 원시코드로부터 저옵를 추출하여 물리적 설계정보를 얻어내거 물리적 설계 정보저장소에 저장
  • 자료역공학: 기존 데이터베이스를 수정하거나 새로운 데이터베이스 관리시스템으로 전이하는 역할 수행
반응형