[정보처리기사 필기] 소프트웨어 개발 방법론 활용 - 127. S/W 공학의 발전적 추세

1. 소프트웨어 재사용의 개요 

  • 이미 개발되어 인정받은 소프트웨어의 전체 혹은 일부분을 다른 소프트웨어 개발이나 유지에 사용하는 것
  • 소프트웨어 개발의 품질과 생산성을 높이기 위한 방법
  • 기존에 개발된 소프트웨어와 경험, 지식 등을 새로운 소프트웨어에 적용
  • 재사용의 이점
    • 개발 시간, 비용 단축
    • 소프트웨어 품질을 향상시킴
    • 소프트웨어 개발의 생산성을 향상시킴
    • 프로젝트 실패의 위험을 감소시킴
    • 시스템 구축 방법에 대한 지식을 공유하게 됨
    • 시스템 명세, 설계, 코드 등 문서를 공유하게 됨

2. 소프트웨어 재사용 방법

  • 합성 중심 Composition-Based
    • 블록 구성 방법
    • 전차 침과 같은 소프트웨어 부품, 블록(모듈)을 만들어서 끼워 맞추어 소프트웨어 완성시키는 방법
  • 생성 중심 Gereation-Based
    • 패턴 구성 방법
    • 추상화 형태로 쓰여진 명세를 구체화하여 프로그램을 만드는 방법

3. 소프트웨어 재공학의 개요

  • 새로운 요구에 맞도록 기존 시스템을 이용하여 보다 나은 시스템을 구축하고 새로운 기능을 추가하여 소프트웨어 성능을 향상시키는 것
  • 기존 소프트웨어의 데이터와 기능들의 개조 및 개선을 통해 유지보수성과 품질을 향상 시키려는 기술
  • 기존 소프트웨어의 기능을 개조하거나 개선하므로, 예방 유지보수 측면에서 소프트웨어 위기를 해결하는 방법이라고 할 수 있음
  • 소프트웨어의 수명이 연장, 소프트웨어 기술이 향상될 뿐만 아니라 소프트웨어의 개발 기간도 단축됨
  • 소프트웨어에서 발생할 수 있는 오류가 줄어들고, 비용이 절감됨
  • 주요 활동
    • 분석 Analysis
      • 기존 소프트웨어의 명세서를 확인하여 소프트웨어의 동작을 이해하고 재공학할 대상을 선정하는 활동
    • 재구성 Restructuring
      • 기존 소프트웨어의 구조를 향상시키기 위하여 코드를 재구성하는 활동
      • 소프트웨어의 기능과 외적인 동작은 바뀌지 않음
    • 역공학 Reverse Engineering
      • 기존 소프트웨어를 분석하여 소프트웨어 개발 과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만들어내는 활동
      • 일반적인 개발 단계와는 반대 방향으로 기존 코드를 복구하거나, 기존 소프트웨어의 구성 요소와 그 관계를 파악하여 설계도를 추출
    • 이식 Migration
      • 기존 소프트웨어를 다른 운영체제나 하드웨어 환경에서 사용할 수 있도록 변환하는 활동

4. CASE의 개요

  • 소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것
  • 객체지향 시스템, 구조적 시스템 등 다양한 시스템에서 활용되는 자동화 도구
  • CASE 도구의 구분
    • 상위 CASE 도구 : 설계 과정을 지원
    • 하위 CASE 도구 : 테스트 과정을 지원
  • CASE 사용의 이점
    • 소프트웨어 개발 기간을 단축하고 개발 비용을 절감할 수 있음
    • 자동화된 기법을 통해 소프트웨어 품질이 향상
    • 소프트웨어의 유지보수를 간편하게 수행할 수 있음
    • 소프트웨어의 생산성이 향상, 생산, 운용 활동을 효과적으로 관리, 통제할 수 있음
    • 품질과 일관성을 효과적으로 제어할 수 있음
    • 소프트웨어 개발의 모든 단계에 걸친 표준을 확립할 수 있음
    • 소프트웨어 모듈의 재사용성이 향상됨
    • 소프트웨어 개발 기법을 실용화할 수 있음
    • 문서화를 쉽게 작성할 수 있음
  • CASE의 주요 기능 : 소프트웨어 생명 주기 전 단계의 연결, 다양한 소프트웨어 개발 모형 지원, 그래픽 지원, 모델들의 모순 검사 및 오류검증, 자료흐름도 작성 등
  • CASE의 원천 기술 : 구조적 기법, 프로토타이핑, 자동 프로그래밍, 정보 저장소, 분산처리