1. 소프트웨어 위기 극복을 위한 대안, 3R의 개요
가. 3R의 정의
기존 소프트웨어의 데이터와 로직을 분석하여 **재사용(Reuse)**하거나, 구조를 변경하는 재공학(Re-engineering), 그리고 설계 정보를 추출하는 **역공학(Reverse Engineering)**을 통칭하는 기술입니다.
유지보수 비용(전체 비용의 70~80%)을 절감하고 소프트웨어의 생산성과 품질을 향상하는 것이 핵심 목적입니다.
나. 3R 도입의 필요성
유지보수 복잡성: 레거시 시스템의 문서 부재 및 스파게티 코드 해결 필요.
비용 절감: 무에서 유를 창조하는 신규 개발보다 기존 자산 활용이 경제적임.
소프트웨어 위기: 급변하는 비즈니스 환경에 대응하기 위한 빠른 시장 진입(Time-to-Market) 요구.
2. 소프트웨어 3R의 핵심 구성 요소 및 특징
가. 역공학 (Reverse Engineering)
개념: 완성된 제품이나 하위 단계의 산출물(소스코드)을 분석하여 상위 단계의 산출물(설계서, 요구정의서)을 도출하는 과정입니다.
특징: 소스코드로부터 데이터 흐름도(DFD), 개체 관계도(ERD) 등을 추출하여 시스템을 이해하는 데 도움을 줍니다.
나. 재공학 (Re-engineering)
개념: 기존 시스템을 유지하면서 데이터 및 기능을 수정·보완하여 성능을 개선하거나 새로운 기능을 추가하는 과정입니다.
주요 활동: * Analysis: 기존 시스템 분석.
Restructuring: 코드 구조 개선 (Refactoring 포함).
Migration: 플랫폼이나 언어의 변경.
다. 재사용 (Reuse)
개념: 이미 검증된 소프트웨어 부품(모듈, 컴포넌트)을 새로운 시스템 개발에 다시 사용하는 기술입니다.
유형:
합성 중심(Composition-based): 블록을 쌓듯 부품을 조립 (컴포넌트 기반).
생성 중심(Generation-based): 명세를 바탕으로 코드를 자동 생성 (패턴 기반).
3. 3R 구성 요소 간의 상관관계 비교
| 구분 | 역공학 (Reverse) | 재공학 (Re-engineering) | 재사용 (Reuse) |
| 핵심 활동 | 분석 및 추출 | 수정 및 개선 | 부품 활용 및 조립 |
| 주요 대상 | 소스코드 → 설계서 | 기존 시스템 → 신규 시스템 | 모듈, 프레임워크, 라이브러리 |
| 기대 효과 | 시스템 이해도 증대 | 유지보수성 향상 | 개발 기간 단축, 품질 확보 |
| 방향성 | 하위 단계 → 상위 단계 | 기존 가치 → 미래 가치 | 자산화 → 수평적 전개 |
4. 3R 적용 시 고려사항 및 기술사적 제언
가. 적용 시 고려사항
문서화 병행: 3R 과정에서 도출된 결과물은 반드시 최신화된 문서로 관리되어야 합니다.
도구 지원(CASE Tool): 수작업에 의한 3R은 한계가 있으므로 자동화 도구 활용이 필수적입니다.
조직적 지원: 부품 공유를 위한 리포지토리(Repository) 구축과 인센티브 제도가 필요합니다.
나. 기술사적 제언
최근에는 3R 개념이 클라우드 네이티브 환경으로 전환하기 위한 **Application Modernization(6R 전략: Rehost, Replatform, Refactor 등)**으로 확장되고 있습니다. 기술사는 단순한 코드 개선을 넘어, MSA(Microservices Architecture) 전환이나 DevOps 환경 구축 시 기존 레거시 자산을 어떻게 효율적으로 마이그레이션할 것인지에 대한 전략적 도구로 3R을 활용해야 합니다. 특히, 역공학을 통해 숨겨진 비즈니스 로직을 추출하고 이를 재사용 가능한 서비스 단위로 분절하는 역량이 요구됩니다.
댓글 없음:
댓글 쓰기