리버스 엔지니어링하는 방법, 결과물들.
2022. 2. 13. 23:14개요
처음에, 부서를 오게 되거나, 새로운 코드를 받았을 때, 혹은 코드도 없이 프로그램을 분석해야한다면? 그럴 때, 리버스 엔지니어링은 큰 도움이 될 것입니다. 리버스 엔지니어링은, 구현된 코드 혹은 프로그램에서 부터, 설계와 요구사항 까지 파악하는 활동 혹은 그런 기법을 말합니다.
리버스 엔지니어링이란?
- 소프트웨어의 컴포넌트와 이들 간의 상호관계 식별하는 시스템 분석 기법을 말합니다.
- 소프트웨어의 또다른 형태 또는 더 높은 추상 수준의 표현물을 복원하기 위한 시스템 분석 기법을 말합니다.
- 순공학은 복잡한 기능들을 구현하기 위해, 점직적으로 상세화하지만,
역공학은 반대의 경우로 주로 코드 상의 정보들을 추출하여 해석함으로써 큰 그림을 복원하는 과정이다.
리버스 엔지니어링을 할 때, 하면 좋은 것들.
- 아래의 프로세스
- 소프트웨어의 정보와 지식(상식)을 추출하기.
- 소프트웨어 결과물을 재생산해보기
- 재 문서화 하기
- 재 문서화를 통해, 더 쉽게 이해하기 위해서, 컴퓨터 코드의 새로운 재표현을 만들기
- 설계 복원
- 프로덕트에 대한, 공통 지식 혹은 개인적인 경험으로부터, 추리 혹은 공제를 사용한다. (프로덕트의 기능들을 완전히 이해하기 위해서)
- 디자인 결과물을 얻는다. (소프트웨어 프로덕트에 대한, 보통 코드)
리버스 엔지니어링의 결과물들
아래의 빨간색으로 칠해진 부분은, 리버스 엔지니어링을 할 때, 만들면 좋은 것들입니다.
1. 지식/정보를 정리한 복원 문서들
- 풍부한 그림들이 담긴, 설명문
- 용어집, 참조테이블, 알고리즘(플로우차트) 그리기! (용어집/방정식/참조 테이블/로직(알고리즘)으로 나타내기)
2. 설계 복원 문서들
- Structural UML
- 클래스 다이어그램
- 패키지 다이어그램
- 컴포넌트 다이어그램
- 컴포지트 다이어그램
- Behavioral UML
- 시퀀스 다이어그램
- 액티비티 다이어그램 (혹은 플로우 차트)
- 상태 다이어그램 (혹은 상태 차트)
- 커뮤니케이션 다이어그램
빨간 부분은, 우선적으로 하면 좋은 것들입니다.
'소프트웨어(Software)' 카테고리의 다른 글
RTOS란? (수정중) (0) | 2022.02.16 |
---|---|
스레드 세이프 (Thread-safe) 란? (0) | 2022.02.15 |
리팩토링 목록 (0) | 2022.02.08 |
코드 냄새: 리팩토링해야할 것 같은 냄새(smells) 모음 (0) | 2022.02.08 |
도메인 모델 그리기 (Domain Model) (예시) (수정중) (0) | 2022.01.25 |