[소프트웨어공학] 3R(역공학, 재공학, 재사용)

소프트웨어공학의 3R(역공학, 재공학, 재사용)


소프트웨어 3R의 정의


완성된 소프트웨어 프로그램을 기반으로 역공학(Reverse-Engineering), 재공학(Re-Engineering), 재사용(Re-Use)를 통해 소프트웨어의 생산성을 극대화 하는 기법

  • 역공학(Reverse-Engineering)
    • 기존 개발된 시스템을 CASE를 이용하여 사양서, 설계서 등의 문서로 추출하는 작업
    • 소스 코드 -> 문서화
    • 개발 단계를 역으로 올라가 기존 개발된 시스템의 코드나 데이터로부터 설계 명세서나 요구 분석서 등을 도출하는 작업
  • 재공학(Re-Engineering)
    • 기조 시스템을 널리 사용되는 프로그래밍 표준에 맞추거나 고수준의 언어로 재구성하거나 타 하드웨어에서 사용할 수 있도록 변환하는 작업
    • 소프트웨어의 위기를 해결하기 위해 개발의 생산성이 아닌 유지 보수의 생산성으로 해결하려는 방법
      • = 예방 보수 , 유지 보수
  • 재사용(Re-Use)
    • 이미 개발되어 기능, 성능, 품질을 인정받았던 소프트웨어의 전체 또는 일부분을 다시 사용
    • 다른 시스템에 이용되고 있는 소프트웨어를 파악하고 재구성하여 새로운 시스템에 적용하기 위한 작업


소프트웨어 3R의 필요성

  • 소프트웨어 유지보수 효율성 향상 및 비용 절감
  • 소프트웨어 개발 생산성 향상
  • 소프트웨어 이해, 변경, 테스트 용이
  • 소프트웨어 변경 요구사항에 대한 신속한 대응
  • 소프트웨어 위기(소프트웨어 개발 대형화, 복잡화, Life-Cycle 감소) 극복



소프트웨어 3R의 활성화 방안

  • 재사용에 대한 비전 공유
    • 경영자, 관리자, 개발자 간의 공통된 이해 필요
    • 재사용의 필요성 및 장점에 대한 비전 제시
    • 재사용 가능한 모듈을 회사의 자산으로 인식할 수 있도록 노력
  • 재사용 Infrastructure 구성
    • 재사용을 위한 공동 Repository, Matrix 활용 시스템 구축
    • 재사용 프로세스의 구축 및 활용 관리
    • 체계적이고 지속적인 교육 실시 및 CBC, 객체지향방법론을 활용



출처



댓글

이 블로그의 인기 게시물

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?