PE Notes · SW
역공학과 재공학
구현에서 설계를 되돌리는 역공학과, 분석·재구조화·순공학으로 현대화하는 재공학을 가르고, 6R·스트랭글러·리팩토링 범위를 비교합니다.
문서가 없는 코어가 영업을 돌리고 있으면, 고치기 전에 읽어야 합니다. 은 구현에서 설계·명세를 되돌리고, 은 그 이해 위에 기능을 유지한 채 구조와 기술을 바꿉니다. 방향이 반대인 활동과, 반대 뒤에 다시 앞으로 가는 활동을 한 줄에 두지 않습니다.
역공학의 정의와 수준
역공학은 소스에서 UML을, 바이너리에서 소스를(디컴파일) 뽑는 분석입니다. 목적은 이해와 문서화이지 기능 변경이 아닙니다. 마이그레이션·재공학의 준비 단계입니다.
추상화는 세 층입니다. 구현은 디컴파일·정적 읽기, 설계는 ERD·클래스 추출, 명세는 기능 재구성입니다. 활용은 레거시 파악, 악성·취약 바이너리 분석, 비공개 프로토콜 호환입니다. 정적 분석이 실행 없이 읽고, 동적 분석이 동작을 봅니다.
재공학 절차와 비교
재공학은 기능을 지키며 유지보수성·성능·보안을 올리는 현대화입니다. 신규 재작성은 위험이 큽니다. 절차는 역공학(분석) → 재구조화(기능 불변의 내부 정리, ) → (새 플랫폼·언어로 구현)입니다.
| 비교축 | 역공학 | 재공학 | 리팩토링 |
|---|---|---|---|
| 방향 | 구현→설계 | 역+순 | 코드 내부 |
| 기능 | 불변(분석) | 유지·소량 | 불변 |
| 범위 | 이해 | 시스템 | 모듈 |
| 결과 | 문서·모델 | 새 구현 | 같은 동작의 깨끗한 코드 |
재구조화는 재공학의 중간 칸입니다. 리팩토링과 겹치되, 재공학은 플랫폼 이동까지 갑니다.
6R과 현대화 접근
은 Retire·Retain, Rehost·Replatform, Refactor·Rearchitect입니다. 앞은 손대지 않거나 끄고, 중간은 들어 옮기며, 뒤가 재공학의 핵심입니다.
접근은 빅뱅(일괄 교체), (기능별 점진), 병행(옛것과 새것을 같이 돌려 비교)입니다. 공공 노후 시스템과 COBOL 코어가 같은 선택지를 만납니다. MSA로 나눌 때도 경계를 역공학으로 먼저 그립니다.
답안은 방향 화살표 하나, 재공학 3단계, 세 열 비교표, 6R과 스트랭글러를 그립니다.