I. 소프트웨어 위기극복 방안, 3R의 개요
가. 3R(Reverse Engineering, Reengineering, Reuse)의 정의
정보저장소(Repository)를 기반으로 역공학(Reverse Engineering), 재공학(Re-engineering), 재사용(Reuse)를 통해
소프트웨어의 생산성을 극대화하는 기법
나. 3R의 등장배경
등장배경 |
설 명 |
S/W 위기대응 |
- 개발 대형화, 복잡화, 생명주기 감소 등 S/W의 위기 극복 |
S/W 관리효율화 |
- 개발 생산성 향상, 유지관리 비용절감, 요구사항 신속대응 등 S/W 관리의 효율화 |
II. 3R의 구성도 및 구성요소
가. 3R의 구성도
역공학으로 설계복구한 결과를 재구조화 기반의 재공학을 거친 후 다시 제작된 S/W 단위로 재사용 수행
나. 3R의 구성요소
구성요소 |
설 명 |
역공학 (Reverse Engineering) |
- 자동화 도구의 도움으로 물리수준의 정보를 논리수준의 정보로 추출하는 과정 - 순공학(추상개념의 현실화)의 반대 개념 |
재공학 (Re-engineering) |
- 자동화 도구로 현존하는 소프트웨어를 점검 또는 수정하는 프로세스 |
재사용 (Reuse) |
- 기능 / 성능 / 품질을 인정받은 소프트웨어의 전체 또는 일부를 다시 사용 |
III. 역공학의 개요
가. 역공학(Reverse Engineering)의 정의
자동화 도구의 도움으로 물리수준의 소프트웨어 정보를 논리적인 소프트웨어 정보로 추출하는 프로세스
나. 역공학의 특징
특 징 |
설 명 |
상용S/W 분석 용이 |
- 상용화되거나 기 개발된 S/W의 분석을 도움 |
유지보수성 향상 |
- 기존 S/W의 자료와 정보를 설계 수준에서 분석 가능하여 유지보수성 향상 |
지식의 재획득 |
- 재문서화를 통해 기존 S/W에 대한 지식습득 가능 |
자동화 도구 |
- 기존 S/W의 정보를 정보저장소(Repository)에 보관하여 자동화 도구 사용 용이 |
다. 역공학의 프로세스
라. 역공학의 종류
종 류 |
설 명 |
논리 역공학 |
- 소스코드로부터 정보를 추출해 물리적 설계 정보저장소에 저장 - 물리적 설계정보를 얻어내는 수단 |
자료 역공학 |
- 물리적인 데이터 서술로부터 개념적/논리적 정보 추출 - 기존 DB를 수정하거나 새로운 DB로 전이하는 역할 |
마. 역공학의 입력 및 출력
입출력 |
설 명 |
입 력 |
- 소스코드, 목적코드, 작업제어절차 - 파일자료, DB 구조 - I/O 형태 및 자료, 각종 문서 |
출 력 |
- 구조도 - 자료사전, 자료흐름도, 자료흐름 그래프 - 제어흐름 그래프, 개체관계도 |
IV. 재공학의 개요
가. 재공학(Re-engineering)의 정의
자동화 도구로 현존하는 소프트웨어를 점검 또는 수정하는 프로세스로, 자동화 도구를 통한 소프트웨어의
재설계 또는 교체를 수행하도록 순공학을 준비하는 과정
나. 재공학의 특징
특 징 |
설 명 |
유지보수성 향상 |
- 기존 S/W의 이해와 변경을 용이하게 하며, 유지보수 비용 및 시간 절감 |
자동화 도구 |
- 표준준수 및 자동화 도구 사용 용이 |
다. 재공학의 프로세스
라. 재공학의 구성요소
단 계 |
설 명 |
소스코드로부터 정보추출 |
- 소스코드 또는 DB 정보 등에서 필요한 정보들을 정보저장소에 저장 |
역공학 |
- 정보저장소의 정보들로부터 새로운 정보를 인식하여 성질과 선택사항 결정 |
시스템 향상과 검증 |
- 시스템 분석가가 정보구조, 정보흐룸 등 응용분야에 대한 명세단계의 정의 향상 |
순공학 (설계와 최적화) |
- 파일과 DB설계, S/W명세를 이용하여 최적화 설계로 기능 향상 |
소스코드 생성 |
- 정보저장소로부터 구현단계의 설계내역을 바탕으로 소스코드 생성 |
마. 재공학의 적용기법
적용기법 |
설 명 |
재구조화 |
- S/W 모듈을 라이브러리에 모아놓고 새로운 S/W 개발에 필요한 모듈을 찾아 결합 |
재모듈화 |
- S/W 구성요소의 분석 및 결합정보(결합도, 응집도)를 기반으로 모듈구조 변화 |
의미론적 정보추출 |
- 소스코드 수준이 아닌 문서 수준의 설계 재공학 기법 |
V. 재사용의 개요
가. 재사용(Reuse)의 정의
기 개발되어 기능, 성능, 품질을 인정받았던 소프트웨어의 전체 또는 일부분을 다시 사용
나. 재사용의 특징
특 징 |
설 명 |
비용절감 |
- S/W 생산의 TCO(Total Cost Overhead) 절감 |
S/W 공유 및 활용 |
- 높은 품질의 S/W 생산을 위한 공유 및 활용 효과 |
다. 재사용의 목표
목 표 |
설 명 |
신뢰성 (Reliability) |
- 기능, 안정, 속도 등 성능의 사전 검증 |
확장성 (Extensibility) |
- 검증된 기능을 기반으로 업그레이드 용이 |
생산성 (Productivity) |
- 비용, 시간, 위험 등 전체적인 개발 프로세스 향상 |
사용성 (Usability) |
- 독립된 컴포넌트로 조립 가능 |
유지보수성 (Maintainability) |
- 품질개선, 오류수정, 운영, 업그레이드 용이 |
적응성 (Adaptability) |
- 독립된 컴포넌트로 새로운 프로세스 적용이 용이 |
라. 재사용의 적용기법
적용기법 |
설 명 |
Copy |
- 소스코드를 복제하여 목적에 맞게 수정 후 사용 |
Pre-processing |
- 컴파일 시 포함되도록 설정 |
Library |
- 서브 프로그램의 집합인 라이브러리를 활용해 링크 시 포함 |
Package |
- Package Interface를 통한 정적인 활용 |
Object |
- Object Interface를 통한 동적인 활용 |
Generics |
- 객체(Object)의 다형성을 활용 |
객체지향 |
- 객체지향 방법론의 상속성, 다형성 등 활용 |
Component |
- 컴포넌트의 독립성, 조립성, 표준성 등 활용 |
마. 재사용의 구현기법
구현기법 |
설 명 |
Classification |
- 코드, 객체, 변수 등 속성에 대한 표준 풀(Pool) 활용 - Code Generation, Variable Standardization - S/W 생산의 TCO 절감 |
Design Pattern |
- 특정 도메인에 대한 개발 경험자의 설계 및 구현결과 재활용 - Business Process, 공통함수 등 |
Modulation |
- 분해, 추상화 등으로 디버깅, 테스트 통합, 변경 수행 - Loosely Coupled, Tightly Cohesion 추구 |
Object Oriented Method |
- 상속성, 추상성, 다형성, 동적바인딩 등 활용 - 클래스, 4GL 컴포넌트 등 |
Component Based Development |
- ITA, EAP 기반의 컴포넌트 활용 - ActiveX, EJB, CORBA 등 |
VI. 3R의 비교
항 목 |
역공학 |
재공학 |
재사용 |
개 념 |
구현을 분석해 설계로 복구 |
역공학으로 재구조화한 S/W 정보추출 순공학으로 다시 구현 |
재공학을 통해 현실화된 S/W의 사용 |
목 적 |
현S/W 분석작업으로 유지보수 향상 |
재사용 가능한 S/W 개발 비용절감 및 시간단축 |
신뢰성, 확장성, 생산성, 사용성, 유지보수성, 적응성 |
특 징 |
완성된 S/W 분석 시 사용 설계수준 분석으로 유지보수 |
자동화 도구 사용 용이 표준준수 |
개발기간 및 비용 감소 S/W품질 및 생산성 향상 S/W 개발정보 공유 |
적 용 시 점 |
운영 S/W의 분석이 어려운 경우 잦은 변경으로 시스템 성능이 저하된 경우 |
잃어버린 정보 복구 시 복잡한 시스템 취급 시 부작용 발견 시 다른 뷰 생성 시 |
분산배치 및 통합구축 시 CBD방법론 적용 시 |
적 용 기 법 |
데이터 역공학 논리 역공학 |
역공학, 순공학 설계최적화 |
모형화 기존S/W 수정 |
한 계 |
순동학 자동화 기술 발달 역공학 필요성 감소 |
자동화도구에 대한 이해부족 전문인력 부족 |
재사용의 인식전환 필요 재사용 기반기술 부족 재사용 기반환경 미흡 |