🧭 소프트웨어 재공학(再工學, Software Re-engineering)이란?
**소프트웨어 재공학(再工學)**은
이미 만들어진 시스템을 분석 → 개선 → 재구성하여
성능, 유지보수성, 품질을 높이는 소프트웨어의 리모델링(Remodeling) 과정이에요.
즉, 새로 만드는 게 아니라
“기존 시스템을 더 좋은 구조로 바꾸는 것”이에요.
이건 단순 리팩토링(refactoring)이 아니라,
시스템 전체를 분석하고, 코드·데이터·설계 구조를 다시 다듬는 공학적 접근이에요.
⚙️ 소프트웨어 재공학의 목적
- ✅ 유지보수성(Maintainability) 향상 — 수정과 보완이 쉬운 구조로 개선
- ✅ 이식성(Portability) 강화 — 새로운 플랫폼에서도 동작 가능
- ✅ 성능(Performance) 개선 — 불필요한 코드 제거 및 최적화
- ✅ 비용 절감(Cost Reduction) — 완전 재개발보다 저비용
- ✅ 품질 향상(Quality Improvement) — 검증된 시스템을 더 단단하게
📌 핵심 문장:
소프트웨어 재공학은 “버리지 않고 고쳐 쓰는 효율적 혁신”이다.
🧩 재공학의 수행 절차 (Re-engineering Process)
1️⃣ 분석(Analysis) – 기존 시스템의 구조와 문제점을 파악
2️⃣ 이해(Comprehension) – 코드와 데이터의 동작 원리를 해석
3️⃣ 역공학(Reverse Engineering) – 코드에서 설계 정보를 역추출
4️⃣ 구조 개선(Restructuring) – 복잡한 구조를 단순하고 표준화
5️⃣ 재구성(Reconstruction) – 개선된 모델을 기반으로 재작성
6️⃣ 정공학(Forward Engineering) – 새로운 형태로 시스템 완성
💡 한 줄 요약:
“분석 → 역공학 → 개선 → 재구성 → 정공학”이 재공학의 핵심 절차다.
🧱 역공학 vs 재공학 vs 정공학 비교 요약
- 역공학(Reverse Engineering): 기존 코드 → 설계 구조 추출
- 재공학(Re-engineering): 기존 시스템을 개선 및 재작성
- 정공학(Forward Engineering): 설계 기반으로 새 시스템 구축
🪶 소프트웨어 재공학의 장점과 단점
장점
- 시스템 재활용 → 개발비 절감
- 품질 및 유지보수성 향상
- 시스템 수명 연장 및 현대화
단점
- 초기 분석 비용 높음
- 문서 미비 시 역공학 어려움
- 신규 개발보다 시간 오래 걸릴 수도 있음
💡 실무 예시
- ✅ C언어 기반 시스템을 Java로 이식
- ✅ 옛날 DB(Oracle 8i)를 최신 MySQL로 마이그레이션
- ✅ 모놀리식(Monolithic) 구조를 마이크로서비스(MSA)로 리팩토링
이런 프로젝트들이 바로 “재공학 프로젝트”의 대표 사례야.
🧠 정처기 실기 핵심 정의 문장
“소프트웨어 재공학은 기존 시스템을 분석·이해하여
구조를 개선하고 기능을 재구성함으로써
유지보수성과 품질을 향상시키는 공학적 재개발 과정이다.”
📍 시험 키워드:
재공학, 역공학, 정공학, 구조개선, 유지보수성, 품질, 효율성, 리모델링
🧾 단어 정리 (한자 + 영어 어원)
- 재공학(再工學) / Re-engineering: 다시 재(再), 장인 공(工), 배울 학(學)
→ 기존 시스템을 재설계·개선하는 공학적 접근. - 역공학(逆工學) / Reverse Engineering: 거꾸로 설계 정보 추출.
- 정공학(正工學) / Forward Engineering: 새 시스템으로 재구축.
- 유지보수(維持補修) / Maintenance: 시스템을 지속적으로 정상화.
- 이식성(移植性) / Portability: 다양한 환경에서도 동작 가능.
✨ 결론 요약
✅ 소프트웨어 재공학(Software Re-engineering) 은
기존 시스템을 분석하고 개선하여 품질과 유지보수성을 높이는 과정이다.
새로 만드는 게 아니라 기존 자산을 재활용하는 똑똑한 개발 전략.
정처기 실기에서는 “역공학 → 재공학 → 정공학” 순서로 자주 출제되며,
핵심 포인트는 유지보수성 향상, 품질 개선, 시스템 현대화다.
'자격증 > 정보처리기사 실기' 카테고리의 다른 글
✅ Putnam 모형이란? | Rayleigh-Norden 곡선 기반 소프트웨어 비용 산정 기법 완벽 정리 (0) | 2025.10.16 |
---|---|
✅ COCOMO 모델이란? | 보헴(Barry Boehm)과 프로젝트 유형 3가지 완벽 정리 (0) | 2025.10.16 |
LOC(Line of Code) 기법 — 원시 코드 라인 수 기법이란? (原始코드 行數 技法) (0) | 2025.10.16 |
소프트웨어 재사용 (Software Reuse, 再使用)이란? (0) | 2025.10.15 |
정보공학 개발 방법론 (Information Engineering, 情報工學開發方法論)이란 ? (0) | 2025.10.15 |