백성현 정보통신산업진흥원 SW공학센터 공학기술팀 팀장


▲ 백성현 정보통신산업진흥원 SW공학센터 공학기술팀 팀장


[아이티데일리]

SW 구조 시각화의 첫걸음(역공학의 이해)

 

SW 비주얼라이제이션은 SW의 비가시성을 극복함으로써 SW 개발의 전체 과정을 파악할 수 있는 것을 목적으로 하고 있다. 그리고 이를 통하여 개발 중인 SW품질 중 가장 취약한 부분을 파악할 수 있도록 하고 관련된 품질 활동을 수행할 수 있도록 하는 시스템이다. 이번 회에서는 그 중 SW구조를 시각화하기 위한 기본 개념과 시각화 관련된 도구에 대하여 설명한다.

 

역공학 기법의 개요

 

역공학(Re-Engineering) 기법은 소프트웨어의 컴포넌트와 이들 간 상호관계 식별 및 또 다른 형태 또는 더 높은 추상 수준의 표현물을 복원하기 위한 시스템 분석 기법으로 활용된다.

 

역공학 기법으로 시각화를 수행하는 이유는 첫 번째, 소프트웨어를 개발한 프로그래머의 도움 없이 소프트웨어에 대한 이해를 얻기 위해서이고, 두 번째, 대상 시스템을 깊이 분석하지 않고도 기존 시스템을 점검할 수 있는 방법이기 때문이다.

 

따라서 역공학(Reverse Engineering)은 소프트웨어의 컴포넌트와 이들 간의 상호관계 식별 및 또 다른 형태 또는 더 높은 추상 수준의 표현물을 복원하기 위한 시스템 분석 기법이라 할 수 있고, 순공학(Forward Engineering)은 요구사항 명세와 같은 높은 수준의 추상화 산출물에서 시작하여 점진적으로 분석 설계 등 상세화를 통해서 소프트웨어를 구현하는 전통적인 절차라고 할 수 있다.

 

 

 

아래의 그림처럼 순공학은 복잡한 기능들을 구현하기 위하여 점진적으로 상세화 한다.

 

 

 

이를 조금 더 자세하게 본다면 아래 그림의 단위에 해당하는 것처럼 점진적으로 상세화 한다.

 

 

 

그러나 역공학은 반대의 경우로 주로 코드 상의 정보들을 추출하여 해석함으로써 보다 큰 그림을 복원하는 과정이다. 종종, 원저자의 기억과는 다른 그림이 얻어지지만 더 정확한 경우도 많으며 소프트웨어에 대한 다양한 통찰력을 제공할 수 있다.

 

이처럼 역공학은 순공학에서 얻기 어려운 새로운 관찰을 제공하지만, 역공학을 통해서 확보할 수 없는 정보들도 존재한다. 아래 그림은 그러한 부분을 잘 나타내고 있다.

 

 

 

SW 개발 시각화를 위한 역공학의 목적

 

SW 비주얼라이제이션은 다음과 같은 역공학의 목적을 활용하여 구조를 표현한다.

 

복잡성에 대한 대처

 

일부 시스템의 손상이나 복잡해진 시스템을 이해하기 위한 방법을 제공한다. 이를 위해 관련정보 추출 등의 자동화를 지원한다.

 

새로운 시각 확보

 

기존의 시각적 모델링 기법들은 오랜 기간 동안 어떤 대상을 이해하는데 도움이 되었다. 그러나 모델들을 지속적으로 현생화하는 것은 개발절차에서 지속적으로 병목을 발생시키고 모델과 실제 소프트웨어 구현 간의 편차가 발생하여, 모델의 효용성을 저하시킨다. 이에 반해 역공학은 시각적 모델의 생성을 용이하게 할 수 있고, 추가적인 관점의 생성으로 인해 개발절차에서의 리뷰와 점검을 도와준다.

 

잃어버린 정보의 복구

 

시스템의 규모가 크고 사용기간이 길어지면 시스템 설계에 대한 정보의 손실이 발생하고 시스템의 빈번한 수정결과는 문서에 반영이 되지 않는 경우가 많다. 역공학은 현행 시스템으로부터 잃어버린 어떤 정보를 얻을 수 있는 유일한 방법이고 개별프로그램과 시스템의 상호작용이 어떤지 이해하지 못할 때 시스템의 처리를 가능하게 해준다.

저작권자 © 컴퓨터월드 무단전재 및 재배포 금지