127. S/W 공학의 발전적 추세

alpaka·2024년 2월 5일
0

정보처리기사

목록 보기
131/161
post-thumbnail

소프트웨어 재사용의 개요

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

소프트웨어 재사용 방법

  • 소프트웨어 재사용 방법에는 합성 중심 방법과 생성 중심 방법이 있다.
  • 합성 중심(Composition-Based)
    • 전자 칩과 같은 소프트웨어 부품, 즉 블록(모듈)을 만들어서 끼워 맞추어 소프트웨어를 완성시키는 방법으로, 블록 구성 방법이라고도 한다.
  • 생성 중심(Generation-Based)
    • 추상화 형태로 쓰여진 명세를 구체화하여 프로그램을 만드는 방법으로, 패턴 구성 방법이라고도 한다.

소프트웨어 재공학의 개요

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

CASE의 개요

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

0개의 댓글

관련 채용 정보