반응형

개요

 처음에, 부서를 오게 되거나, 새로운 코드를 받았을 때, 혹은 코드도 없이 프로그램을 분석해야한다면? 그럴 때, 리버스 엔지니어링은 큰 도움이 될 것입니다. 리버스 엔지니어링은, 구현된 코드 혹은 프로그램에서 부터, 설계와 요구사항 까지 파악하는 활동 혹은 그런 기법을 말합니다.

 

리버스 엔지니어링이란?

- 소프트웨어의 컴포넌트와 이들 간의 상호관계 식별하는 시스템 분석 기법을 말합니다.

- 소프트웨어의 또다른 형태 또는 더 높은 추상 수준의 표현물을 복원하기 위한 시스템 분석 기법을 말합니다.

 

- 순공학은 복잡한 기능들을 구현하기 위해, 점직적으로 상세화하지만,

역공학은 반대의 경우로 주로 코드 상의 정보들을 추출하여 해석함으로써 큰 그림을 복원하는 과정이다.

 

 

리버스 엔지니어링을 할 때, 하면 좋은 것들.

- 아래의 프로세스

 - 소프트웨어의 정보와 지식(상식)을 추출하기.

 - 소프트웨어 결과물을 재생산해보기

 

- 재 문서화 하기

 - 재 문서화를 통해, 더 쉽게 이해하기 위해서, 컴퓨터 코드의 새로운 재표현을 만들기

 

- 설계 복원

 - 프로덕트에 대한, 공통 지식 혹은 개인적인 경험으로부터, 추리 혹은 공제를 사용한다. (프로덕트의 기능들을 완전히 이해하기 위해서)

 

- 디자인 결과물을 얻는다. (소프트웨어 프로덕트에 대한, 보통 코드)

 

리버스 엔지니어링의 결과물들

아래의 빨간색으로 칠해진 부분은, 리버스 엔지니어링을 할 때, 만들면 좋은 것들입니다.

1. 지식/정보를 정리한 복원 문서들

 - 풍부한 그림들이 담긴, 설명문

 - 용어집, 참조테이블, 알고리즘(플로우차트) 그리기!  (용어집/방정식/참조 테이블/로직(알고리즘)으로 나타내기)

 

2. 설계 복원 문서들

 - Structural UML

  - 클래스 다이어그램

  - 패키지 다이어그램

  - 컴포넌트 다이어그램

  - 컴포지트 다이어그램

 

 

 - Behavioral UML

  - 시퀀스 다이어그램

  - 액티비티 다이어그램  (혹은 플로우 차트)

  - 상태 다이어그램  (혹은 상태 차트)

  - 커뮤니케이션 다이어그램

 

 

빨간 부분은, 우선적으로 하면 좋은 것들입니다.

반응형