티스토리 뷰

본 아티클은 MSDN 에 eBook으로 공개된 문서를 블로그 아티클로 편집하였습니다. VSTS 팀블로그에 의해 작성된 문서의 원문 및 여러 가지 기술 문서는 아래의 링크에서 PDF로 다운로드 받을 수 있습니다. 그리고 본문의 특정 버전을 지칭하는 개발툴 버전 번호는 모두 Visual Studio로 변경되었음을 참고하십시오. (예- Visual Studio 20xx는 Visual Studio로 표기함 )

VSTS 팀블로그 MSDN 기술 문서 : http://msdn.microsoft.com/ko-kr/gg620748 

필자 소개

Microsoft Visual Studio ALM MVP 엄준일
http://blog.powerumc.kr

 

Visual Studio Korea Team Blog
http://vsts2010.net

감수 : 강성재 부장
한국마이크로소프트 개발자 및 플랫폼 사업 총괄

   

도움주신 분 : 김남영 부장
한국마이크로소프트 개발자 및 플랫폼 사업 총괄

 

[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 1/7 - 들어가기에 앞서...
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 2/7 - 왜 모델링인가?
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 3/7 - 모델링의 표기
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 4/7 - 모델링 다이어그램
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 5/7 - Visualization & Features Pack
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 6/7 - 모델링 확장 (SDK)
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 7/7 - 결론 및 저자 소개

 

6. Visual Studio Visualization & Modeling Features pack

Visual Studio Visualization & Modeling Features Pack(이하 Modeling Features Pack)은 2010년 12월 4일 MSDN 구독자에게 공개가 되었습니다. 이 Modeling Features Pack은 기존의 모델링 프로젝트에서 지원하지 않았던 몇 가지 기능을 보강하는 도구로써 Modeling Features Pack과 Modeling Features Pack Runtime을 제공해 줍니다.

 

6.1. Modeling Features Pack 개요

Visual Studio의 Modeling Features Pack은 다음과 같은 기능을 제공해 줍니다.

  • C++ 및 ASP.NET 프로젝트의 종속성 그래프 지원
  • C++ 코드에서 Layer Diagrams의 아키텍처 유효성 지원
  • UML Class Diagrams을 코드로 변환하거나 코드를 UML 다이어그램으로 변환
  • XMI 2.1 파일로 내보내기 기능
  • 다이어그램의 요소와 Team Foundation Server의 작업 항목 연동 강화
  • Layer Diagrams 확장

 

6.2. ASP.NET 웹 프로젝트의 종속성 그래프 분석

기존에 종속성 그래프 분석은 닷넷의 어셈블리나 클래스를 기준으로 분석이 되어 웹 프로젝트의 경우 ASPX 파일이나 그에 해당하는 종속성을 분석하기란 사실상 불가능 하였습니다. 다만 웹 프로젝트를 클래스나 어셈블리 수준에서 분석이 가능하였으나 웹 프로젝트 특성을 잘 반영한 종속성을 분석하기는 어려움이 많았습니다.

이번 ASP.NET 종속성 그래프는 웹 프로젝트라는 특성을 잘 반영하여 페이지 파일이나 공통되는 마스터 페이지 등 종속성 분석이 한결 자연스러워졌습니다.

ASP.NET 종속성 그래프 생성은 다음과 같은 웹 프로젝트 형식을 지원합니다.

  • ASP.NET 웹 사이트
  • ASP.NET 웹 프로젝트
  • ASP.NET MVC 웹 프로젝트

 

6.2.1. 웹 프로젝트 종속성 그래프를 만들려면?

  1. 종속성 그래프를 분석할 웹 프로젝트를 로드 합니다.
  2. 아키텍처->종속성 그래프 생성에 By Web Site 외 모두 두 가지 항목이 새로 생겼습니다. 코드 종속성과 함께 ASP.NET 웹 프로젝트를 분석하려면 By Web Site with Code Dependencies 를 선택합니다.


  3. 솔루션에서 웹 프로젝트의 종속성을 분석합니다.

     

  4. 다음은 웹 프로젝트의 전체를 코드 종속성 분석과 함께 분석된 결과 입니다.

     

 

6.2.2. 종속성 그래프를 분석하려면?

다음과 같이 종속성 그래프를 확대하면 각 페이지 간의 종속성을 보여줍니다.

이 종속성 그래프는 DGML(Directed Graph Markup Language)로써 웹 프로젝트 뿐만 아니라 Visual Studio의 전반적인 분석에 사용되는 전용 마크업 언어이기도 합니다.

만약 특정 페이지가 어떤 모듈이나 페이지간에 종속성을 미치는지 확인하기 위해서 해당 노드를 선택하면 됩니다. 예를 들어 아래의 AccountController 클래스가 가지는 종속적인 관계는 ChangePassword.aspx, ChangePasswordSuccess.aspx 등의 각 페이지들과 인증과 관련된 FormAuthenticationService, ChangePasswordModel 클래스 등에 종속적인 관계를 갖는 것을 확인할 수 있습니다.

 

이 AccountController 클래스의 내부를 좀더 자세히 보기 위해서는 AccountController 노드의 오른쪽 상단의 화면표 아이콘을 선택합니다.

 

그럼 AccountController가 구현하는 메서드나 프로퍼티 정보를 표시합니다.

 

만약 이 메서드들이 어떤 종속성을 갖는지 알기 위해서 메서드의 하나의 노드를 선택하면 됩니다. 예를 들어 아래의 get_MembershipService (원래는 속성(Property)임)은 다양한 메서드에서 호출되는 속성인 것을 확인할 수 있습니다.

 

이러한 종속성 정보는 얼마나 복잡하게 서로간에 영향력을 미치는지 알 수 있습니다. 예를 들어, 화살표를 많이 받으면 받을수록 그 코드의 변경이 주는 전파력은 상당히 높아지며, 코드에 버그가 있다면 그 버그의 전파력은 종속성이 갖는 크기만큼인 것이 될 것이라 예상할 수 있습니다.

 

종속성 그래프에서 화살표를 더블 클릭하여 분석할 종속성의 레벨을 지정할 수 있습니다.

 

만약 웹 프로젝트를 코드 레벨에서 분석을 하길 원한다면 종속성 그래프의 컨텍스트에서 마우스 오른쪽 버튼을 클릭하여 Get Code Dependencies 를 선택합니다.

 

그럼 웹 프로젝트의 노드를 확장하면 웹 프로젝트의 페이지 등의 종속성의 분석이 아닌 코드 레벨에서 종속성을 분석해 줍니다.

 

코드 레벨의 종속성을 분석하면 다음 그림과 같이 해당 노드와 종속되는 페이지를 확인할 수 있습니다.

 

 

6.3. UML 다이어그램과 코드 간의 상호 변환

 

6.3.1. Class Diagrams을 코드로 변환하기

Class Diagrams을 코드로 변환하기 위해서 모델링 프로젝트에서 UML Class Diagrams을 새로 추가 합니다.

 

  1. 간단하게 다음과 같이 클래스 모델링을 해 봅시다. 각각 Member, Phone, Address 클래스 요소를 추가 합니다.


  2. Member 클래스 요소를 Phone, Address 클래스 요소와 연결(Association) 관계로 만듭니다. 연결 관계로 만들기 위해서 Member 클래스 요소를 마우스 오른쪽 버튼으로 클릭한 후 추가->연결(Association) 항목을 클릭하여 각각 Phone, Address 클래스 요소와 연결합니다.


  3. 다음의 그림은 연결(Association) 을 Phone, Address 클래스 요소와 연결한 그림입니다.


  4. 모든 작업이 완료 되었으면 Class Diagrams의 컨텍스트 메뉴에서 Generate Code 를 클릭합니다.


  5. 다음과 같이 새로운 프로젝트가 생성이 되고, GenerateCode 폴더에 Class Diagrams의 클래스 요소들이 코드로 변환이 됩니다.


  6. Member.cs 클래스 파일은 다음과 같이 Phone, Address 클래스와 연결 관계가 속성으로 변환이 된 것을 확인할 수 있습니다.

 

 

6.3.2. 코드를 Class Diagrams으로 변환하기

마찬가지로 Visual Studio Modeling Features Pack은 기존에 존재하는 코드를 UML Class Diagrams으로 변환할 수 있습니다.

 

  1. 아래와 같이 간단하게 코드를 작성합니다. 기존 코드가 있으시면 기존 코드를 사용하셔도 무방합니다.

     

  2. 만약 모델링 프로젝트가 현재 솔루션에 없다면 모델링 프로젝트를 생성합니다. 아키텍처->새 다이어그램을 선택하여 UML Class Diagrams을 생성합니다.

  3. 아키텍처->창->아키텍처 탐색기를 선택합니다.



  4. 아키텍처 탐색기에서 UML Class Diagrams으로 변환할 코드를 찾아 선택합니다.


  5. 선택한 클래스 또는 코드 파일을 UML Class Diagrams 디자이너로 드래그&드랍 합니다.


  6. 그럼 기존의 코드가 아래와 같이 UML Class Diagrams으로 변환이 완성되었습니다.

 

 

6.4. XMI 가져오기

XMI(XML Metadata Interchange)는 메타데이터를 통해 정보를 교환하기 위한 표준으로 XML 형식의 데이터를 사용합니다. 다양한 모델링 프레임워크나 도구에서 독자적인 포멧을 사용하지만 XMI 내보내기 등의 기능으로 다양한 모델링 도구에서 모델링 정보를 교환하거나 공유할 수 있습니다. (참고 http://en.wikipedia.org/wiki/.xmi)

이 표준 모델링 다이어그램의 XMI 를 Visual Studio에서 불러올 수 있는 기능을 제공합니다. XMI 파일을 가져오려면 다음과 같이 진행하시면 됩니다.

만약 사용할 수 있는 .XMI 파일이 없다면 다음의 전자정부 표준 프레임워크 사이트에서 샘플을 다운로드 받으실 수 있습니다. (http://open.egovframe.go.kr/scm/viewvc.php/trunk/DEV_IDE_PLUGIN/egovframework.dev.imp.codegen.modeltest/xmi_sample/sample.xmi?diff_format=s&logsort=cvs&sortby=log&view=markup&root=egovframedev)

 

  1. 아키텍처->Import XMI… 을 선택합니다.



  2. 확장명이 .XMI 인 파일을 찾아 선택한 후 확인을 클릭합니다.


  3. 가져온 XMI 요소의 형식을 확인하려면 아키텍처->창->UML 모델 탐색기를 선택합니다.


  4. UML 모델 탐색기에 XMI 파일에서 가져온 요소가 나타납니다.

 

 

6.5. Team Foundation 2010 연동

기존의 Visual Studio 모델링 프로젝트는 Team Foundation Server 작업 항목과의 연동을 이미 지원했습니다. 하지만 UML 다이어그램의 요소와 작업 항목과의 연결이나 관리 작업 부분에서 불편한 점이 있었습니다.

이번 Modeling Features Pack 은 Team Foundation Server와 연동하면서 바로 작업을 연결하거나 만들고, 또는 추적할 수 있는 부분이 강화되어 다이어그램과 작업 간의 관리가 훨씬 용이해 졌습니다.

 

6.5.1. 다이어그램의 요소와 작업 연결

모델링 프로젝트의 다이어그램의 모든 요소는 Team Foundation Server에 작업을 만들거나 연결할 수 있습니다. 가령, 모델리한 컴포넌트를 특정 개발자에게 작업을 할당하거나 그 작업의 진척율을 확인하고 보고를 받을 수 있습니다.

 

6.5.1.1. 모델링 프로젝트에서 작업을 만들려면?

  1. 먼저 작업과 연결할 모델링 다이어그램을 엽니다. 작업과 연결할 요소에 마우스 오른쪽 버튼을 클릭하여 작업 항목 만들기-><작업항목형식> 을 선택합니다.



  2. 작업 항목 만들기 화면에서 필요한 항목을 입력한 후 작업 항목 저장 버튼을 클릭합니다.



  3. Class Diagrams의 요소에 작업 항목이 연결되었음을 의미하는 아이콘이 표시되고, 요소의 속성 창에 1개의 작업 항목이 연결된 표시가 나타납니다.

 

6.5.1.2. 다이어그램 요소에 연결된 작업 항목을 보려면?

요소에 작업 항목이 연결이 되면 요소의 오른쪽 상단에 작업 항목이 연결되었음을 의미하는 아이콘이 표시됩니다. 이 아이콘이 표시된 다이어그램의 요소는 어떤 작업 항목이 연결되었는지 확인할 수 있습니다.

  1. 다이어그램 요소와 작업 항목이 연결된 요소에 마우스 오른쪽 버튼을 클릭하여 작업 항목 보기를 선택합니다.



  2. 다이어그램 요소와 연결된 작업 항목 목록이 나타납니다.

 

6.5.1.3. 다이어그램의 요소와 연결된 작업 항목을 제거하려면?

다이어그램의 요소와 연결된 작업 항목을 삭제하기 위해서 다음의 순서로 진행하십시오.

  1. 다이어그램 요소와 작업 항목이 연결된 요소에 마우스 오른쪽 버튼을 클릭하여 작업 항목 제거를 선택합니다.



  2. 작업 항목 제거 대화 상자에서 연결을 해제할 작업 항목의 체크 박스를 해지합니다. 체크 박스 해지 작업이 완료되면 확인을 클릭합니다.

     

  3. 다이어그램의 요소가 작업 항목에서 제거되어 작업 항목 연결을 의미하는 아이콘이 삭제된 것을 확인합니다.

 

6.6. Visual Studio Layer Diagram Extension

Visual Studio Modeling Features Pack은 Layer Diagrams의 유효성을 검사하거나 아키텍처 유효성을 검증하는 기능이 포함되어 있습니다. 이 Layer Diagrams의 유효성 검증과 명령 등을 확장하기 위해서 추가적인 Visual Studio SDK가 필요합니다.

이 단원은 [Visual Studio Modeling SDK] 단원을 참고 하십시오.

댓글