본문 바로가기
TechNote/소프트웨어 공학(SW)

010. 3R (Reverse Engineering, Re Engineering, Re Use)

by 도지웅 2022. 10. 1.
반응형

1. 소프트웨어 3R의 개요

가. 소프트웨어 3R의 정의

  • 레포지토리를 기반으로 역공학, 재공학, 재사용을 통해 소프트웨어 생산성을 극대화하는 기법

나. 소프트웨어 3R의 등장 배경

  • 소프트웨어 위기 극복
  • 소프트웨어 개발 생산성 향상
  • 유지보수 비용의 절감
  • 소프트웨어 변경 요구사항의 신속한 대처

다. 소프트웨어 3R의 목표

  • 소프트웨어 유지보수 오류 및 비용을 축소함
  • 시스템의 이해, 변경, 테스트 용이
  • 현 사용 시스템을 CASE 도구를 사용하여 유지보수 및 수정이 가능하도록 지원
  • 현재 시스템의 컴포넌트를 재사용 소프트웨어 위기 극복

 

2. 소프트웨어 3R의 구성

 

가. 소프트웨어 3R의 관련 개념

  • 순공학 :  주상개념의 현실화, 요구분석-> 설계-> 구현
  • 재구조화 : 기능 변경 없이 소스코드의 재편성(표현의 변형)

나. 소프트웨어 3R의 관련 개념

  • 역공학 : 구현된 것을 분석하여 설계단계로 요구사항 분석
  • 재공학 : 역공학으로 재구조화된 S/W를 기반으로 다시 추상 개념을 현실화하는 것
  • 재사용 : 재공학을 통해 현실화된 S/W를 실제 사용

 

3. 역공학의 개요

가. 역공학의 정의

  • 기존 개발된 시스템을 CASE 이용하여 설명서, 설계서 등의 문서로 자동 추출하는 직업
  • 개발 단계를 역으로 거슬러 올라가 기존 개발된 시스템의 코드나 데이터로부터 설계 명세서나 요구 분석서 등을 도출해 내는 직업

나. 역공학의 장점

  • 상용화되거나 기 개발된 소프트웨어의 분석을 도와줌
  • 기존 시스템의 자료와 정보를 설계 수준에서 분석할 수 있어 유지보수성을 향상함
  • 기존 시스템 정보를 Repository에 보관하여 CASE의 사용을 용이하게 함
  • 역공학에 사용되는 입력 유형과 그에 따른 출력 유형
INPUT OUTPUT
  • 원시코드 목적코드 작업제어절차
  • 텍스트 자료, DB 구조
  • I/O 형태 및 자료, 각종 Document
  • 구조도
  • 자료사전, 자료흐름도, 자료흐름그래프
  • 제어흐름 그래프, 개체관계도

다. 역공학의 종류

  • 논리 역공학 : 원시 코드로부터 분석
  • 자료 역공학 : 기존 DB로부터 분석

4. 재공학의 개요

가. 소프트웨어 재 공학의 정의 

  • 소프트웨어 역공학 및 재구조화 등의 기술을 이용하여 소프트웨어를 분석하여 정보를 추출하고, 이를 다시 순공학을 사용하여 새로 구현함으로써 재사용성을 확보하는 소프트웨어 부품으로 만들어 내는 기술 작업

나. 소프트웨어 재 공학의 장점

  • CASE 사용이 용이하여 현재 시스템의 유지 보수 향상
  • 표준을 준수하여 시스템 이해와 변형을 용이하게 하며, 유지 보수비용 절감

다. 소프트웨어 재 공학의 단계

  • 원시 코드로부터의 정보 추출 단계
  • 역공학 단계 및 시스템의 향상과 검증 단계
  • 순공학 단계 미치 설계와 최적화 단계
  • 원시 코드의 생성 단계

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

가. 소프트웨어 재 사용의 정의

  • 소프트웨어 개발 관련 지식(기능, 모듈, 구성 등)을 표준화하여 개발 생산성을 높이기 위하여 반복적으로 사용하기에 적합하도록 구성하는 방법

나. 필요성

  • 소프트웨어 생산의 TCO(Total Cost Overhead) 절감
  • 높은 품질의 소프트웨어 생산을 위한 공유 및 활용 효과

다. 목표

  • Reliability : 신뢰성 향상( 기능, 안정, 속도 등의 사전 성능 검증됨)
  • Extensibility : 확정성 향상(검증된 기능 기반으로 Upgrade 용이함)
  • Productivity : 생산성 향상(비용, 시간, 위험 등 전체적 개발 프로세스 향상됨)
  • Usability : 사용성 향상(독립된 컴포넌트로써의 조립성 제공됨)
  • Maintainability : 유지보수성 (품질개선, 오류 수정, 운영, Upgrade이 용이함)
  • Adaptability : 적응성 향상(독립된 컴포넌트로써의 새로운 Process 적용에 용이함)

6. 소프트웨어 재사용 활용 및 구현 기법

가. 활용 기법 종류

기법 종류 내용
Copy 소프트웨어 코드를 Copy하여 목적에 맞게 수정하여 사용하는 방법
Pre-Processing Include 함수를 사용하여 Compile시에 포함되도록 하는 방법
Library Sub Program집합인 Library를 활용해 Link시에 포함되도록 하는 방법
Package Global Variable, Package Interface를 통한 정적인 활용 방법
Object Global Variable, Object Interface를 통한 실행 중의 동적인 활용 방법
Generics Object의 다형성을 이용하는 방법
객체 지향 객체 지향 방법의 상속성, 다형성 등의 성질을 활용하는 방법
Component 컴포넌트의 독립성, 조립성, 표준성 등을 활용하는 방법

 

반응형

'TechNote > 소프트웨어 공학(SW)' 카테고리의 다른 글

012. 객체 지향  (0) 2022.10.01
011. 소프트웨어 역공학  (0) 2022.10.01
009. 모듈화  (0) 2022.10.01
008. 소프트웨어 유지보수  (0) 2022.09.30
007 아키텍처 평가방법 ATAM  (0) 2022.09.30

댓글