이미 구축되어 있는 시스템의 Sequence Diagram을 자동 생성하는 몇가지 방법이 있는데요.

그중 대표적인 것이  Enterprise Architect 의 Sequence Diagram 생성 기능을 이용하는 것일 겁니다. 하지만 EA는 실제 Debug와 Breakpoint를 걸어가면서 Step by Step으로 일일이 실행해야 되기 때문에,  실제 상황을 만들어 테스트를 해야 합니다.  물론 다양한 언어를 지원하는 것이 큰 강점이지만, Window 플랫폼에 종속되어 있는 단점이 있습니다.  (물론 꽁수로 Linux에 돌리는 법도 있긴 있습니다. ) 그래서  EA가 동작하기 힘든 WinCE 기반의 시스템에서는 Sequence Diagram을 추출하기 힘들죠.

Sequen Diagram을 자동 생성하자고 정식 버젼도 아닌 VSTS  2010 을 깔아서 설치하기에는, 개발 환경 문제와 많은 시간이 소요 되기 때문에 할수 없었습니다.

그러던 중 .NET 용으로 툴을 발견했습니다.  바로 SequenceViz라는 툴입니다. 또한  Reflector의 Plug-in도 제공합니다. SequenceViz를 사용하기 위한 환경 구축과 그리고 숨겨진 기능을 공유하고자 합니다.  저 같이 .NET 2.0 버젼을 유지해야 되는 애매한 상황에서는 그럭 저럭 쓸만한 (?) 툴인 것 같습니다.

환경구축

SequenceViz를 다운 받은 다음, 압축을 푸시면 Reflector.exe와 Reflector.exe.config 파일이 있습니다.

여기서 Reflector.exe.config 파일을 백업 받으시고, Reflector를 실행시키시면 최신 버젼의 Reflector를 받게 됩니다. 그러면서 Reflector.exe와 Reflector.exe.config가 업데이트 됩니다. 그럼 백업 받았던 Reflector.exe.config 파일에 내용을  최신 버젼의 Reflector.exe.config에 추가해 주세요.  아래와 같이 추가하시면 됩니다.


<?xml version="1.0"?>
<configuration>
 <appSettings>
 <add key="Pic2PlotPath" value="C:\Program Files\GnuWin32\bin\pic2plot.exe"/>
 <add key="OutputType" value="svg"/>
 <!--currently only svg format is supported-->
 <add key="IgnoredMethodList" value="get_|set_|add_|remove_|ToString"/>
 <add key="IgnoredTypeList" value="Console|String|Assert|Logging|Object|SR|SafeHandle"/>
 <add key="IgnoredNSList" value="System.Diagnostics|System.Security"/>
 </appSettings>
</configuration>

그리고 사전 환경으로 두개의 프로그램이 설치되어 있어야 합니다.

LiveSequence를 이용해 보기

LiveSequence를 실행하면 아래처럼 그림이 생성되어 집니다.

그럼 짜진 위와 같은 그림들이 나옵니다.  하지만  약간의 실망감이 다고 옵니다. 왜냐면? 자기 Assembly와 참고하고 있는 Assembly내에서만 Sequence가 그려지기 때문이지요.   그런데 약간 규모가 있는 프로젝트는 Assembly 별로 기능을 나누었기 때문에, 흐름이 끊기는 현상을 보게 될수도 있습니다.

그런데 여기 숨겨진 기능이 있습니다.

Reflector.exe.config 파일을 열고 key에 아래와 같은 부분을 추가해 주세요.


<?xml version="1.0"?>
<configuration>
 <appSettings>
  ....
   <add key="IncludeAssemblyReferences" value="true"/>
  ...
 </appSettings>
</configuration>

그리고 Reflector가 아닌, LiveSequence.exe 파일을 실행시키면, 자신이 참조하고 있는 Assembly를 넘어, Dependency가 있는 녀석을 파고들어 전체를 다 그려주게 됩니다.
놀라운 기능이죠. 물론 특이한 경우는 못 그려주는 경우도 있더라구요. ( ThreadPool에서 비동기 메소드를 호출한 것과 같은 것..)

Reflector Plugin으로 Sequence Diagram 생성하기

또한 .NET Reflector 플러그인으로 사용하기 위해서는 View-Plugin 에서 Reflector.LiveSequence.dll를 추가해 주시면 됩니다.

그 다음 Reflector을 열어서 다양한 .NET용 Assembly (3.5, 2.0, Compact Framework 버젼등등.) 파일을 읽어 들이실수 있습니다.  그리고 해당 메소드를 찍어 Sequence Diagram을 찍어보시기 바랍니다.

물론 쓸데 없는 것도 그려주지만,  거기서 필요한 흐름을 찾아서 보기에는 별 무리가 없다고 생각됩니다.( 아마 지인이 말한  클래스 하나가 3000개의 메소드를 가진 상황이라면, 불가능 할지도 모르죠 🙂 )

물론 단점으로는

  • 그냥 XPS 포멧으로 저장된다.
  • 편집하는 기능이 없다.
  • 2008년 마지막으로 이후 업데이트가 없다.

그렇기 때문에 Legacy 시스템의 흐름을 간단히 파악하는데 사용하시길 권해드립니다.   전 EA 팬이라서 🙂 .   혹시나 도움이 되셨으면 해서 공유차원에서 올립니다.

Join the conversation! 4 Comments

  1. 영수야. C/C++ 용은 없나?? 이쓰면 추천해주시고
    없으면 하나 만들어줘.

    답글
  2. 글쎄요. 그냥 생성해 주는 것은 .. 아직 전 못찾았어요.
    EA에서 Visual C++도 지원은 되지만 찍으면서 해야 되구요.

    음.. 이럴때 적절한 답변은….

    반사!!

    답글
  3. 오~~ 이것 참 좋은 툴이네요.
    득템했다 ㅋㅋ

    답글

상정님에게 덧글 달기 응답 취소

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.

카테고리

My Activity, News, Software Engineering, Study

태그

, ,