IT는 다른 산업에 비해 변화가 급격하다.

때문에 배워야 할 새로운 기술과 도구 등이 항상 넘쳐 난다.

빠르게 새로운 지식을 습득할 때 필요한 것이 리버스엔지니어링이다.

자바의 코딩을 배울 때 처음부터 코딩을 하는 것도 필요하지만 잘된 코드를 분석하는 것도 중요하다.

아이가 엄마의 말을 듣고 말을 하게 되는 것과 같은 이치다.


디자인 패턴도 소스 코드가 어떤 패턴으로 만들어졌는지 확인할 때 도구를 사용하여 먼저 분석해 보는 것도 좋다.


StarUML로 java 소스를 리버스 엔지니어링 하기.

StarUML은 UML을 이용하여 OOD 설계나 분석에 유용한 도구이다.

이것을 이용하여 소스의 분석하는 과정은 간단하다.

분석할 소스를 지정하고 리버스 엔지니어링을 선택하면 된다.

추가로 분석된 결과를 보기 좋게 꾸미는 것은 필요하다.


메뉴 -> Java -> Reverse Enginner.. 순으로 리버스 엔지니어링 시작한다.

StarUML을 실행한 이후 위 메뉴대로 동작한다.


헤드 퍼스트 자바의 퍼사드 패턴의 예제로 나온 홈 씨어터 소스가 있는 경로를 지정한다.

분석할 java 소스를 추가하고 [다음]을 선택한다.


분석된 결과를 추가할 위치를 지정한다. 설계에 대한 분석이므로 [Design Model]에 추가한다.


자바 리버스 엔지니어링에 대한 설정은 기본 설정대로 진행한다.


위 그림처럼 분석이 완료 된다. 소스가 몇개 되지 않아 바로 분석이 끝나지만 안드로이드의 서피스 플링거나 설정처럼 소스가 많아지면 분석에 시간이 오래 걸린다.


분석 결과는 퍼사드 패턴이라 composition 관계를 인식하지 못하고 독립적인 클래스들로 표시한다.



이럴 경우 수동으로 UML 관계를 작성한다. 기본 클래스들은 모두 만들어져 있으므로 클래스 다이어그램을 만들기가 수월하다.


어댑터 패턴에 대한 리버스 엔지니어링을 수행 후 그림을 보기 좋게 수정한 모습이다.


이렇게 하면 소스 분석과 설계 문서 작성 등에 시간을 단축할 수 있다.

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
  1. 질문입니다 2017.06.16 19:04 신고

    안녕하세요
    저도 C++코드를 클래스 다이어그램으로 만드는데
    혹시 각 관계들을 자동으로 만들 방법이 있을까요..?
    수동으로 하기엔 너무 많아서요..ㅠㅠ

+ Recent posts

티스토리 툴바