스물두줄

정보관리기술사 · 개념서 · 소프트웨어 공학

재공학과 역공학

설명 영상 재공학과 역공학 · 2:22

왜 배우는가: 재공학과 역공학은 노후화된 레거시 시스템을 유지보수하고 현대화하는 실무의 핵심 기법이다. 시험에서는 개념 정의, 절차, 역공학 활용을 묻는 문항으로 반복해서 출제된다.

출제 이력: 제138회 2교시 5번, 제114회 1교시 11번

1. 한 줄 정의와 핵심 키워드

재공학은 기존 시스템을 분석해 구조와 기능을 명세화한 뒤 새 기술·아키텍처로 재구축하는 활동이고, 역공학은 기존 산출물로부터 설계 정보를 복원하는 분석 활동이다.

핵심 키워드: 재공학(Re-engineering), 역공학(Reverse Engineering), 레거시 시스템(Legacy System), 구조 분석, 설계 복원, 재구조화(Restructuring), 마이그레이션(Migration), 유지보수성

2. 개념 풀이

쉽게 말하면 재공학은 오래된 소프트웨어를 버리지 않고 새로 손보는 일이고, 역공학은 그 소프트웨어가 어떻게 만들어졌는지 거꾸로 읽어 내는 일이다. 두 활동은 보통 함께 쓰이며, 역공학이 먼저 이해를 만들고 재공학이 그 이해를 바탕으로 고친다.

정식 정의는 다음과 같다. 재공학(Re-engineering)은 기존 시스템의 구조와 기능을 분석·명세화하고, 새로운 기술·아키텍처·플랫폼·언어로 재설계·재구현하는 공학적 활동이다. 소프트웨어뿐 아니라 데이터도 함께 재구축할 수 있다.

역공학(Reverse Engineering)은 소스코드, 실행 파일, 데이터, 화면, DB 스키마를 분석해 설계 구조, 동작 원리, 데이터 흐름을 파악하는 기법이다. 개발 단계를 거꾸로 올라가 요구 분석서나 설계 명세서를 복원하는 작업으로 볼 수 있다. 대상 시스템을 변경하지 않고 분석에 그친다는 점이 재공학과 다르다.

재공학은 유지보수의 한 유형으로 분류된다. ISO/IEC 14764 기준으로 보면 완전화 유지보수(개선)에 가깝다. 역공학은 재공학의 선행 단계이자 독립된 분석 기법으로 쓰인다. 두 용어를 구분하는 기준은 변경 여부다. 분석만 하면 역공학, 변경을 가하면 재공학이다.

핵심 용어 풀이: 레거시 시스템(Legacy System)은 오래되어 문서가 부족하고 유지보수가 어려운 기존 시스템이다. 재구조화(Restructuring)는 기능은 그대로 두고 내부 구조만 바꾸는 활동이다. 마이그레이션(Migration)은 기존 시스템을 새 플랫폼으로 옮기는 활동이다.

3. 등장 배경과 필요성

소프트웨어가 사회 기반으로 자리 잡으면서 기존 정보시스템을 품질 높게 유지하려는 요구가 커졌다. 신규 개발 비용은 크고 기존 자산은 많아서, 기존 자산을 재활용하는 방법이 필요해졌다. 재공학과 역공학은 이 요구에 따라 발전했다.

역공학의 기원은 하드웨어 분석에 있다. 상업적·군사적 목적으로 완제품만 보고 설계 과정을 추론하던 기법이 소프트웨어로 옮겨 온 것이다. 레거시 소프트웨어에서는 문서가 오류가 있거나 미완성이거나 접근이 불가능한 경우가 많아, 역공학이 문서를 복원하는 수단으로 쓰인다.

재공학 비용이 증가하면서 역공학 기술의 도입이 늘었다. 역공학은 물리적이고 한정적인 표현 정보를 더 추상화된 정보로 바꾸고, 재사용을 위한 공유 저장소에 저장한다. 그래서 역공학은 유지보수 자체보다 재사용과 현대화의 출발점으로 평가된다.

다만 역공학은 한시적 기술이라는 지적도 있다. 순공학(Forward Engineering) 자동화가 발전하면 역공학의 필요성은 줄어든다. 또한 도구와 기술이 통합되어 있지 않아 실제 도입에 장애가 되고 있다.

ISO/IEC 14764 기준으로 유지보수는 수정·예방·적응·완전화 네 유형이며, 이 중 개선 계열이 전체 유지보수에서 차지하는 비중에 대한 추정이 있다.

4. 구성요소·원리·절차

재공학은 기존 시스템을 역공학으로 이해한 뒤 구조와 기능을 개선하는 순서로 진행된다. 구성요소는 분석, 재구조화, 이행, 검증으로 나뉘며 각 단계의 산출물이 다음 단계의 입력이 된다. 핵심 원리는 기능을 바꾸지 않고 구조를 바꾸는 것이다. 이를 위해 전후 출력이 같은지 회귀 테스트로 확인한다.

구성요소주요 활동산출물
현행 분석역공학으로 코드·데이터·구조 파악아키텍처 복구 문서, 기능 목록
문제 도출복잡도·결합도·중복 측정개선 과제 목록
재구조화리팩터링, 모듈 분리, 인터페이스 정리개선된 설계서
이행플랫폼·언어·DB 전환신규 소스, 데이터 이행 기록
검증회귀 테스트, 출력 비교시험 결과서

이 표는 재공학의 구성요소를 단계별 산출물과 함께 정리한 것이다. 각 단계는 앞 단계 결과에 의존하므로 순서를 바꾸면 안 된다. 특히 분석 없이 재구조화를 시작하면 기존 업무 규칙이 누락된다.

재공학 절차는 다음과 같다.

  • 현행 시스템을 역공학으로 분석하여 구조와 기능을 명세화한다.
  • 유지보수성, 성능, 보안 측면의 문제점과 개선 과제를 도출한다.
  • 목표 아키텍처를 정하고 모듈 단위로 재구조화한다.
  • 플랫폼, 언어, 데이터베이스를 새 환경으로 이행한다.
  • 회귀 테스트로 이전 시스템과 출력이 같은지 검증한다.
  • 점진적으로 운영 환경에 전환하고 기존 시스템을 폐기한다.

재공학에서 가장 많은 비용이 드는 단계는 검증이다. 대상 시스템의 기능 명세가 불완전하면 검증 기준 자체를 만들기 어렵다. 따라서 1단계의 역공학 결과가 검증 기준의 근거가 된다.

재공학 비용은 대략 다음 관계로 설명할 수 있다. 전체 비용은 분석비용, 재구조화비용, 이행비용, 검증비용의 합이다.

$C_{total} = C_{analysis} + C_{restructure} + C_{migrate} + C_{test}$

여기서 C_{analysis}는 역공학 분석비용(인력·도구, 원화), C_{test}는 회귀 테스트 비용이다. 수식은 상대 비교용이며 실제 금액은 프로젝트마다 다르다.

재공학 절차 흐름

5. 관련 법령·기준·표준

재공학 자체를 직접 규정한 법령은 확인되지 않았다. 이 표준은 수정, 예방, 적응, 완전화 유지보수를 구분한다. 재공학은 그중 완전화 유지보수의 한 형태로 다뤄진다.

기준내용적용 범위
ISO/IEC 14764유지보수 4유형 분류유지보수 활동 전반
완전화 유지보수리팩터링, 문서화 재작성, 성능 튜닝 포함품질 향상 목적의 재공학
예방 유지보수배포 후 선제적 수정높은 안전성·가용성 시스템
아키텍처 복구구현·문서 정보로 아키텍처 발견역공학의 정적 분석 단계

이 표는 재공학과 관련된 표준 분류를 정리한 것이다. 답안에서는 '추정'이라고 밝혀 쓴다.

답안에서는 기준값을 임의로 제시하지 않고 회귀 테스트 통과 여부를 판정 기준으로 쓴다. 마이그레이션 기간은 근거상 5~10년이 걸릴 수 있다고 제시된다. 이 기간은 대규모 레거시 전환의 사례 범위로만 쓴다.

6. 유형과 비교

재공학과 역공학은 목적과 산출물이 다르다. 역공학은 기존 시스템을 이해하는 분석 활동이고, 재공학은 이해한 결과를 바탕으로 시스템을 다시 만드는 개선 활동이다. 두 활동은 선후 관계로 이어진다.

구분역공학(Reverse Engineering)재공학(Re-engineering)
목적기존 시스템의 설계·구조 파악시스템의 품질·기술 환경 개선
방향구현 → 설계 (추상화)기존 시스템 → 새 시스템
산출물설계 문서, 구조도, 데이터 모델재구조화된 코드, 새 플랫폼 시스템
시점재공학의 선행 단계역공학 결과를 입력으로 사용

역공학은 재공학의 첫 단계이므로 표에서 방향과 산출물을 나란히 보면 선후 관계가 드러난다. 역공학만 수행하고 개선하지 않으면 재공학이 되지 않는다.

이어지는 내용

로그인하면 하루 2페이지까지 무료로 전체를 읽을 수 있습니다.

앱에서 이 단원 읽기