Skip to main content

3R, Reuse, Re-engineering, Reverse-engineering

· 2 min read

3R 개념​

  • SW 유지보수성 향상 및 비용절감을 위해 레파지토리를 기반으로 역공학(Reverse Engineering), 재공학(Re-engineering), 재사용(Reuse)을 이용하여 SW 생산성을 극대화하는 극대화하는 기법
    • Reuse: 기존에 개발된 SW 자산을 새로운 시스템 개발에 재활용하는 것
    • Re-engineering: 기존 시스템을 분석하여 문제점을 파악하고, 개선된 시스템으로 재구축하는 것
    • Reverse-engineering: 소스코드 없이 실행 파일이나 문서 등을 분석하여 시스템의 구조, 동작 방식 등을 파악하는 것
  • 유지보수 비용 절감 / 개발 생산성 향상 / 시스템 품질 향상 / 시스템 이해도 향상

3R의 관계도, 상세설명, 핵심기법​

3R의 관계도​

  • 역공학을 통해 기존 설계를 복구한 후 재공학을 통해 개선하고, 이를 통해 구현된 SW를 다시 재사용

3R의 상세설명​

구분내용비고
역공학소스 코드 없이 시스템 분석 후 설계 정보 추출분석도구 활용(디버거, 디컴파일러), 설계 문서 복구
재공학기존 시스템 분석 결과를 바탕으로 시스템 개선 및 재구축리팩토링, 아키텍처 개선, 성능 최적화
재사용검증된 소프트웨어 자산을 새로운 시스템 개발에 활용컴포넌트, 디자인패턴, 모듈 재사용

3R의 핵심기법​

구분내용비고
정적분석코드 실행 없이 바이트코드, 바이너리코드 분석역공학
리팩토링코드 스멜을 제거하여 단순성을 높히는 방법재공학
디자인패턴검증된 설계 패턴을 활용하여 재사용성 향상재사용
MSA모듈화된 서비스를 웹 인터페이스로 호출하여 통합하는 방법재사용

3R의 효과성을 높이기 위한 고려사항​

구분내용비고
설계 측면SOLID 원칙 준수로 낮은 결합도, 높은 응집도의 모듈 설계유지보수성, 확장성
도구 측면VCS 를 사용하여 SW 코드 및 자산의 변경 이력 관리유지보수성, 효율성