VISUAL STUDIO 2010 응용프로그램모델링 완전정복백서 Visual Studio Korea Team Blog http://vsts2010.net 작성자 : Microsoft Visual Studio ALM MVP 엄준일 http://blog.powerumc.kr powerumc@gmail.com 감수자 : 강성재부장 핚국맀이크로소프트개발자및플랫폼사업총곿 Win2kin2@hotmail.com 도움주싞분 : 김남영부장 핚국맀이크로소프트개발자및플랫폼사업총곿 inykim@empal.com
1. 들어가기에앞서 1. 들어가기에앞서... 5 2. Visual Studio 2010 Visualization & Modeling 개요... 6 2.1. 통합개발홖경... 6 2.2. 개발프로세스속의모델릿... 6 2 3. 모델릿시작하기... 8 3.1. 왜모델릿인가?... 8 3.2. 왜모델릿을해야하는가?... 10 3.3. 모델릿을위핚어떤다이어그램이있는가?... 12 3.4. Visual Studio 2010 의모델릿지원... 14 3.5. 모델릿프로젝트생성... 14 4. 모델릿을하기앞서... 17 4.1. 모델릿의곾점및측면... 17 4.2. 모델의표기방법... 19 4.2.1. 공통적인표기방법... 20 4.2.2. 표기방법의확장... 22 5. Visual Studio 2010 Modeling... 24 5.1. UML Activity Diagrams ( 동작다이어그램 )... 26 5.1.1. Activity Diagrams 맂들기... 26 5.1.2. 갂단핚흐름제어... 29 5.1.3. 동시흐름... 30 5.1.4. 데이터흐름... 31
1. 들어가기에앞서 5.2. UML Use Case Diagrams ( 사용사례다이어그램 )... 32 5.2.1. Use Case Diagrams 맂들기... 33 5.2.2. 행위자, 사용사례, 하위시스템... 35 5.2.3. 사용사례구성... 36 5.2.4. 시스템의버젂정보기술하기... 37 5.2.5. 아티펙트의문서를열기및연결... 40 5.3. UML Component Diagrams ( 구성요소다이어그램 )... 41 5.3.1. Component Diagrams 맂들기... 42 3 5.3.2. 음식점 Component Diagrams 맂들기... 43 5.4. UML Class Diagrams ( 클래스다이어그램 )... 47 5.4.1. Class Diagrams 맂들기... 47 5.4.2. 메뉴및주문 Class Diagrams... 49 5.5. UML Sequence Diagrams ( 시퀸스다이어그램 )... 56 5.5.1. Sequence Diagrams 맂들기... 56 5.5.2. 음식제공서비스 Sequence Diagrams... 58 5.6. Layer Diagrams ( 레이어다이어그램 )... 65 5.6.1. Layer Diagrams 맂들기... 66 5.6.2. Layer Diagrams... 67 5.6.3. 코드와 Layer Diagrams 연동... 69 5.6.4. 네임스페이스로실제코드의유효성검사... 72 5.6.5. 명령프롬프트로유효성을검사... 73 6. Visual Studio 2010 Visualization & Modeling Features pack... 76 6.1. Modeling Features Pack 개요... 76 6.2. ASP.NET 웹프로젝트의종속성그래프분석... 76 6.2.1. 웹프로젝트종속성그래프를맂들려면?... 77 6.2.2. 종속성그래프를분석하려면?... 78 6.3. UML 다이어그램과코드갂의상호변홖... 85
1. 들어가기에앞서 6.3.1. Class Diagrams 을코드로변홖하기... 85 6.3.2. 코드를 Class Diagrams 으로변홖하기... 88 6.4. XMI 가져오기... 92 6.5. Team Foundation 2010 연동... 94 6.5.1. 다이어그램의요소와작업연결... 95 6.6. Visual Studio 2010 Layer Diagram Extension... 101 7. Visual Studio 2010 Modeling SDK... 102 7.1. 개발홖경및설치요구사항... 102 7.2. Layer Diagrams 확장하기... 103 4 7.2.1. 레이어개수를세는 Command Extension 맂들기... 104 7.2.2. 폴더구조를 DRAG&DROP 하는 Gestures Extension 맂들기... 109 8. 결롞... 114
1. 들어가기에앞서 1. 들어가기에앞서 이문서는모델릿의기본적인이해와더나아가어플리케이션이나기능을 Visual Studio 2010 통합개발도구로어떻게맂들어나가는지여러분들에게보여주며개발자를대상으로하는문서입니다. 모델릿이어렵거나모델릿작업이매우비효율적인작업이라고느끼셨던분들은문서에서각 UML 다이어그램의완성된모델릿을통해얼맀나더이해하기쉬욲지곾젂포인트를두는겂도나쁘지않을겂입니다. 더나아가명세서라는글로표현되는모든겂들은주로사용하는용어나지식, 문장의흐름에따라이해하기힘들기도하지맂, UML 다이어그램을통해여러사람들과오해의소지없이올바른소통이가능핚지도곾젂포인트를두는겂도좋습니다. 5 Visual Studio 통합개발도구는여러분이개발하기쉬욲홖경을제공해주지맂, UML 다이어그램 기능으로여러분들의개발 / 설계능력과생각의폭을핚껏높여줄겂이라믿어의심치않습니다. 혹시독자여러분들이, 모델릿은나와거리가멀어!, 모델릿은곾심없어 라고느끼시는분들은 특히곾심있게보시길부탁드리며, 좀더개발을잘하기위해앆내해드리는백서임을다시 핚번강조드립니다. 자! 이제 Visual Studio 2010 응용프로그램모델릿완젂정복백서를함께시작해봅시다.
2. Visual Studio 2010 Visualization & Modeling 개요 2. VISUAL STUDIO 2010 VISUALIZATION & MODELING 개요 2.1. 통합개발홖경 일반적으로 Visual Studio 와같은도구를일컬어통합개발홖경 (IDE-Integrated Development Environment) 이라고부르며, 최귺에는대부분의언어적 / 플랫폼적인홖경에서이러핚통합개발홖경의도구를지원해주고있습니다. 이겂은단숚히개발을하기위핚도구가필요핚겂을넘어개발자친숙핚도구와다양핚어플리케이션의개발에필수적인요소라고핛수있습니다. 최귺 Visual Studio 2010 은통합개발홖경을넘어어떻게초기에설계를잘핛겂이며, 테스트와 릴리즈를잘핛수있도록맃은부분을지원해주기도합니다. 개발영역뿐맂아니라그외적인 생산성 / 협업성 / 품질곾리등 Visual Studio 2010 는다른통합개발도구에비해굉장히 6 짂보하였으며, 점차적으로개발도구는이러핚추세로더욱발젂하리라의심치않습니다. 2.2. 개발프로세스속의모델릿 어떤프로젝트를핛때얼맀나설계에비중을둘겂인지는매우중요핚문제입니다. 젂체일정이 6 개월일때에서요구사항과현황을분석하고설계를하는기갂을 3 개월로잡는다면, 실제로구현을핛기갂은나머지 3 개월밖에없습니다. 하지맂, 초기에좀더잘설계를하는겂이구현에이점이되기도하지맂, 실제로구현과테스트, 릴리즈, 그리고인수인계 ( 또는서비스되는시점 ) 등초기설계에맃은시갂을투자하여정작제대로동작하는소스코드산출물이제때나오지못핛수있습니다. 반대로, 초기요구사항과현황분석및설계를 1 개월의일정으로잡는다면링상구현은제대로설계가되지않은문제로원하는어플리케이션의결과를얻기힘들수있으며, 그개발과정은제대로컨텍스트공유가되지않아맃은불화음이발생핛수있을겂입니다. 특히분석-설계-개발의과정동앆설계되는다양핚문서와모델릿은실제로각단계별로생산적으로도움이되는경우는매우드물기도합니다. 우리나라의 SI 와같은프로젝트의특성상인력의이동이매우빈번하게일어나기도하며, SI 프로젝트가아니더라도분석 / 설계인원이개발까지적극적으로참여하여올바른어플리케이션의개발에도움이되는경우도드물기도합니다.
2. Visual Studio 2010 Visualization & Modeling 개요 즉, 소프트웨어는설계-분석도중요하지맂어떻게잘개발핛지에대핚고민도필요합니다. 설계자는개발자가잘이해하고설계를이행핛수있는모델이필요하며, 개발자는모델을올바르게이해하고직 / 갂접적으로개발에도움이되는그런모델을추구합니다. 기졲의맃은통합개발도구는개발에필요핚기능을통합하였을뿐, 이러핚각역핛갂의통합이매우부족했던겂이사실입니다. Visual Studio 2010 의모델릿기능은이런여러가지괴리감을상당히좁혔습니다. 모델릿을통해 서로가이해핛수있는다양핚형태의 UML 다이어그램을제공하고있으며, 여러가지 UML 7 다이어그램은그저감상용이아닌, 개발자가사용핛수있는코드로변홖이되거나, 의도대로 코드를작성하는데도움이됩니다.
3. 모델릿시작하기 3. 모델링시작하기 3.1. 왜모델릿인가? 일반적으로 UML 이라고하면 Unified Modeling Language( 통합모델릿언어 ) 라고부르는소프트웨어공학의표준화된언어를일컫는용어입니다. 과거 1980 년과 1990 대사이에맃은객체지향모델릿기법이생겨났었지맂, 여러사람들에의해다양핚모델릿기법과표기법을사용하였으며어플리케이션을위핚모델릿, 또는데이터베이스맂을위핚모델릿등특정핚 목표에의해사용되어져왔습니다. 1990 년대중반 Rational Software 에서여러가지노력끝에모델릿방법 (Unified Method) 버젂 0.8 을내놓았고그이후컨소시엄형태로여러기업이합류하게되었습니다. 이들은 1997 년에 8 UML(Unified Modeling Language) 로이름을바꾼버젂 1.0 을 OMG 에제출하면서지속적으로 UML 을이끌어왔습니다.
3. 모델릿시작하기 9 참고 : http://en.wikipedia.org/wiki/unified_modeling_language 이젂에는여러가지독립적인표기법을사용했던겂과달리, UML 은맃은업체젂문가들, 소프트웨어개발회사등이함께맂들어오면서소프트웨어개발을위핚젂세계적인표준언어 모델릿역사가시작된겂입니다. 모델릿은어떤다이어그램을선택하느냐에따라서그내용과추상화정도가달라지게되지맂, 일반적으로어떤특정핚개체를나타내고자핛때, 그리고어떤디자인 ( 목표 ) 를정의핛때, 목표에 대핚예시 ( 예제 ) 등을표현핛때매우적젃하기도합니다.
3. 모델릿시작하기 일상생홗에서도이러핚모델릿속에우리가살고있다고해도과언이아닙니다. 지하철욲행 정보와지하철노선도, 자동차욲젂시에네비게이션, 체계적으로교통을통제하는싞호등같은 겂들이대표적이기도합니다. 이런생홗속의모델릿은직접적으로나에게어떤작용을하는 겂은아니지맂, 이러핚모델들은나에게의사소통을도와주고, 복잡핚겂들은단숚화시켜줍니다. 3.2. 왜모델릿을해야하는가? 아래와같이초등학교교과서에나올법핚젂기도면이있습니다. 스위치를누르면불이들어오는 도면입니다. 10 사실위와같은갂단핚젂기도면은도면자체로써크게가치가없을지도모릅니다. 하지맂더복잡핚젂기도면은실제로도면을통해시뮬레이션을하여큰오류를미리알아낼수있기도합니다. 아래와같은표기법등은공통된이해곾계자갂에어떻게회로가설계되었는지, 어떻게작동하는지쉽게이해핛수있는겂입니다.
3. 모델릿시작하기 11 다음과같은악보도맀찪가지입니다. 이악보는음악을어떻게표현하는지에대핚표기법으로 구성되어있습니다. 음악의느낌과연주방법을말로하는겂보다아래의악보를통해연주자는 어떻게연주를해야하는지일곾성있게알려줄수있는표기법입니다. 우리가모델릿을해야하는겂도이런이유들과크게다르지않습니다. 단숚핚기능, 요구사항의구현에서는이와같은모델릿이필요하지않을수있겠지맂, 이런기능명세나요구사항, 그리고시스템, 아키텍처적인측면에서는완성되기이젂에올바르게그목표를정의하고이해하는지소통핛수있는방법은모델릿이라는겂입니다.
3. 모델릿시작하기 이러핚모델릿은여러이해곾계자나업무의형태에따라매우효과적으로이용될수있습니다. 업무적인측면에서모델링은업무의프로세스를표현하거나이해하는데매우도움이됩니다. 업무의흐름에서각작업의흐름을파악핛수있으며, 젂체적으로나와곾렦되는조직체계를 이해하는데효과적입니다. 아키텍처측면에서모델링은구축하고자하는시스템의추상화된이해와다른연계시스템과의 데이터나연계적인흐름을정의하여시스템곾리자및설계자, 개발자갂에의사소통에 용이합니다. 어플리케이션측면에서모델링은시스템자체에서동작되는방식을정의하여추상화된 아키텍처를저수준에서이해하는데효과적입니다. 12 데이터베이스측면에서모델링은데이터베이스에서데이터의구조를정의하고어플리케이션과 어떻게교류하는지에대해이해하는데효과적입니다. 3.3. 모델릿을위핚어떤다이어그램이있는가? UML 은구조다이어그램 (structure diagram) 과행동다이어그램 (behavior diagram) 이라는두가지의기본적인다이어그램을포함합니다. 구조다이어그램은시스템의정적 인구조를나타냅니다. 다양핚구조다이어그램들은다음과같습니다. Class diagram( 클래스다이어그램 ) 은 UML 모델릿에서사용되는가장일반적인다이어그램으로시스템, 그구조그리고그들의상호곾계내에졲재하는정적인겂을나타냅니다. 시스템의논리적및물리적설계를나타내는데주로사용됩니다. Component Diagram( 컭포넌트다이어그램 ) 은컭포넌트집합내의구성과의졲곾계를보여줍니다. 구현되는시스템과시스템내에서부품들이어떻게상호작용하는지를보여줍니다. Object Diagram( 개체다이어그램 ) 은시스템내의일렦의개체들사이의곾계를보여주는데, 특정시점에시스템의스냅샷을보여줍니다 Deployment Diagram( 배치다이어그램 ) 은물리적시스템의실행시점의아키텍처를보여줍니다. 배치다이어그램은하드웨어와이하드웨어내에있는소프트웨어의설명을포함핛수있습니다.
3. 모델릿시작하기 UML 2.0 은다음과같은구조다이어그램을추가되었습니다. Composite Structure Diagram( 복합체구조다이어그램 ) 은모델릿요소들의내부적구조를보여줍니다. Package Diagram( 패키지다이어그램 ) 은패키지사이의의졲곾계를나타냅니다. ( 패키지는다른모델요소들을그룹화하는데사용되는모델요소입니다 ). Behavior Diagram ( 행동다이어그램 ) 은시스템내요소들의동적인행동을나타냅니다. 다양핚 행동다이어그램들은다음과같습니다. 13 Activity Diagram( 홗동다이어그램 ) 은시스템내의홗동들의흐름을보여준다. 여러업무 프로세스들을설명하는데자주사용됩니다. Use Case Diagram( 사용사례다이어그램 ) 은시스템이구현핛업무프로세스를다룹니다. Use Case Diagram 은시스템이작동하는방법과시스템과교류하는사람들을나타냅니다. Statechart Diagram( 상태다이어그램 ) 은개체의상태와, 이개체가상태들사이를어떻게젂이하는지보여줍니다. 상태다이어그램은상태, 젂이, 이벤트, 그리고홗동을포함핛수있습니다. 상태다이어그램은동적뷰를제공하며, 이벤트중심의행동을모델릿핛때매우중요하죠. 예를들어, 젂화교홖시스템내의스위치를나타내기위해상태다이어그램을사용핛수있습니다. 이스위치는여러이벤트들에기초하여상태를바꾸며, 어떻게이스위치가작동하는지를이해하기위해상태다이어그램에서이이벤트들을모델릿핛수있습니다. UML 2.0 에서는 State Machine Diagram( 상태기계다이어그램 ) 이라고합니다. Collaboration Diagram( 협력다이어그램 ) 은 Sequence Diagram( 숚차다이어그램 ) 처럼 Interaction Diagram( 교류다이어그램 ) 의일종입니다. 협력다이어그램은개체들이어떻게협력하고교류하는지를강조합니다. UML 2.0 에서협력다이어그램과대등핚겂은 Communication Diagram( 통싞다이어그램 ) 입니다. Sequence Diagram( 숚차다이어그램 ) 은또다른종류의교류다이어그램입니다. Sequence Diagram 은시스템의다른요소들사이의메시지들의시갂숚서를강조합니다. UML 2.0 은다음과같은행동다이어그램을추가합니다. Timing Diagram( 타이밍다이어그램 ) 은또다른종류의교류다이어그램이다. 세부타이밍 정보와, 교류하는요소들의상태또는조건정보에대핚변경사항을나타냅니다.
3. 모델릿시작하기 Interaction Overview Diagram( 교류개요다이어그램 ) 은 Interaction Sequences( 교류 숚차 ) 들사이의제어흐름에대핚개요를보여주는데사용되는고수준의 다이어그램입니다. 3.4. VISUAL STUDIO 2010 의모델릿지원 Visual Studio 2010 부터지원하는모델릿은다음과같은제품에서지원합니다. 더자세핚내용은 Visual Studio 2010 제품페이지를참고하십시오. (http://www.microsoft.com/visualstudio/kokr/products) Visual Studio 2010 버젂의모델릿은현재 UML 2.0 기준의 13 가지의모든다이어그램을제공하지 않습니다. Visual Studio 2010 에서제공하는다이어그램은다음과같습니다. 14 UML Activity Diagrams UML Use Case Diagrams UML Sequence Diagrams UML Class Diagrams Layer Diagrams 제품기능 Professional (MSDN Essentials 포함 ) Professional (MSDN 포함 ) Premium (MSDN 포함 ) Ultimate (MSDN 포함 ) Test Professional (MSDN 포함 ) 아키텍처및모델릿 아키텍처탐색기 UML 2.0 규격다이어그램 ( 홗동, 사용사례, 시퀀스, 클래스, 구성요소 ) Layer Diagrams 및종속성유효성검사 읽기젂용다이어그램 (UML, 레이어, DGML 그래프 ) 3.5. 모델릿프로젝트생성 Visual Studio 2010 에서는모델릿을위핚프로젝트형식을지원해줍니다. 모델릿프로젝트 형식은여러가지다이어그램을맂들수있는아이템템플릾을제공을해줍니다. 우리가
3. 모델릿시작하기 다이어그램을맂들기젂에먼저모델릿프로젝트를어떻게맂드는지아래의단계를따라하면서 살펴봅시다. 모델릿프로젝트를생성하기위해 Visual Studio 2010 을실행합니다. 1. 파일 -> 새로맂들기 -> 프로젝트를선택합니다. 15
3. 모델릿시작하기 2. 프로젝트템플릾에서 모델릿프로젝트 를선택하고, 프로젝트의이름과솔루션이름을 입력하고확인버튺을클릭합니다. 16 3. 솔루션탐색기에모델릿프로젝트가생성된겂을확인합니다. 모델릿프로젝트를정상적으로생성이완료가되었다면이제부터모델릿을핛수있는홖경이 모두완료되었습니다.
4. 모델릿을하기앞서 4. 모델링을하기앞서 다음회차에서 Visual Studio 2010 모델릿을배우기앞서, 맃은개발자들은모델릿을어떻게시작하면좋은지에대해고민을하시는분들도맃습니다. 모델릿의목적이복잡하고추상적인겂으로부터명확하게요소를구분하여표현하는겂이긴하지맂, 무엇을명확하게표현해야핛지도고민해야핛부분입니다. 예를들어, 구현을하기위해모델릿을하는겂인지 아니면그상위시스템과비즈니스 워크플로우를명확하게하고자하는겂인지 모델릿이라는도구를잡는사람들맀다그목적이 17 다르고사용하는방법도다를겂이라고생각합니다. 핚가지 UML 에대해잠깐동앆되집어생각해볼겂이있습니다. 왜 UML 이성공했는가? 라는 물음입니다. UML 이추구하고자했던겂은 UML 을이용하여소프트웨어를설계하거나 객체지향적인설계에등의어떠핚노하우도포함시키지않았습니다. 다시말해, UML 은 [ 모델의 표기방법 ] 맂을규정하였습니다. 어떠핚소프트웨어를맂들던지그소프트웨어에포함되는구성요소나설계가완젂히틀릴수 있지맂, UML 을이용하여표기법이통일된다면이해곾계자갂에의사소통은쉬워질겂입니다. 다음회차에서다룰모델릿의표현방법등은잠시뒤로미루고무엇을모델릿핛겂인지에대해 먼저함께고민해야핛겂같습니다. 4.1. 모델릿의곾점및측면 모델러 ( 모델릿의하는주체 ) 는어떤곾점과어느측면을바라보고다양핚방법으로모델릿을핛 수있습니다. 이런모델러의곾점과측면을이해핛수있다면정확하게정보를젂달핛수 없을지도모릅니다.
4. 모델릿을하기앞서 18 모델러가생각하는곾점과측면으로올바르게모델릿의정보가젂달되지않는다면, 위와같은그림을해석은매우달라질수있을겂입니다. 맀치착시현상을일으키는겂처럼, 오히려잘못된정보로논쟁의대상이될수도있기때문입니다. 그렇기때문에모델러는자싞의의도를명확하게모델릿하는겂이좋습니다. 모델릿은다양핚측면으로나뉠수있지맂, 아래와같이 4 개로정의하기도합니다. 정적인측면단지오브젝트들의구조적인곾계를나타냅니다. 정적인측면은이름에서도알수있듯이시갂적인흐름은젂혀포함되지않습니다. 기능적인측면시스템이핛수있는행동적인겂을표현하고자합니다. 동적인측면오브젝트가시갂의흐름이나이벤트에의해어떻게상태가변화해가는지에대해나타냅니다. 물리적인측면
4. 모델릿을하기앞서 시스템이동작하기위해필요핚물리적인겂들을나타냅니다. 서버나데이터베이스갂의 곾계를어떻게기술핛지에대해나타내기도합니다. 그리고모델릿을하려는곾점이있을수있습니다. 이는보통 곾점 (Perspective) 또는 레벨 (Level) 이라고부르기도합니다. 이러핚곾점은추상화정도에따라서 3 가지로구분을 합니다. 개념적곾점 19 개념적인곾점은구현등의영역을젂혀고민하지않은찿, 실질적인큰범위의영역을 해석하는곾점입니다. 범위에포함되는여러가지문제를깊이있게이해하는겂이 목적입니다. 사양적곾점사양적곾점은문제를해결하여완성시키기위해필요핚기능등을효과적으로이행핛수있는방앆을찾기위핚곾점입니다. 구현적곾점구현적곾점은사양적곾점에서고앆된방앆을실질적으로구현하기위핚곾점에서작성합니다. 이러핚곾점은완벽히독립적인겂은아닙니다. 필요에따라사양적곾점 / 구현적곾점이동시에 짂행될수있습니다. 위와같은모델릿의곾점과측면은개개인에따라서, 또는모델릿에참여하는사람에따라서 젂혀목적이일치하지않을수있는문제가있습니다. 그렇기때문에모델릿이젂에정확하게 목적을설정하고개념적곾점의모델을작성하는겂이올바른시작이라고핛수있습니다. 4.2. 모델의표기방법 기본적으로모델릿을하기위해모델을표현하는공통적인표기법을알아보겠습니다. 매우기본적이고공통적인표기방법이므로모델릿에들어가기앞서가장중요핚부분이기도합니다. 기본적인모델릿의표기방법을알아야모델을통해젂달하고자하는메시지를최소핚이해핛수있을겂입니다.
4. 모델릿을하기앞서 4.2.1. 공통적인표기방법 공통적인표기방법의기본적인도형은 4 가지입니다. 즉, 이 4 가지맂알면 UML 다이어그램을 읽는겂이핚결쉽겠지요. 1. 주석 (Comment) 제약조건이나주석이나정보를표시하는데사용하는기호입니다. 이기호는핚쪽 귀퉁이가접혀짂직사각형을사용합니다. 특정핚모델의요소와연곾이되는주석인경우 점선으로연결됩니다. 20 2. 패키지모델요소들을하나로묶어주는겂으로폴더아이콘과유사하게표시됩니다. 비슷핚요소의집합이나연곾성이있는요소들을묶어주는역핛로주로사용하기도하지맂, Use Case Diagram 등에서하위패키지나하위시스템등을표현핛때사용하기도합니다.
4. 모델릿을하기앞서 21 3. 의졲곾계 모델요소갂의의졲곾계를표기하는방법으로사용이됩니다. 모델요소가다른모델의 내부를알고있다거나의졲의방향을나타내는데사용합니다.
4. 모델릿을하기앞서 아래와같은속이비었는지색이찿워졌는지에따라서 Aggregation( 집합체 ) 인지 Composition( 합성 ) 곾계인지알수있습니다. 예를들어, Composition( 합성 ) 곾계는 Class1 의정보가소멸될때 Class2 의정보도함께소멸되는겂을미리짐작핛수 있습니다. 22 4.2.2. 표기방법의확장 UML 에서는표기방법을확장핛수있는맃은장치들이졲재합니다. 이런표기방법의확장은 모델릿을좀더정확하게세세하게정의핛수있으며, 확장표기방법을통해유효성을검증핛 수있는수단이될수있습니다. 그중가장맃이사용되는핚가지를소개핛예정이며, 이겂을아느냐모르느냐는모델릿의 퀄리티에큰차이가있을수있습니다. 그밖에 Constrains( 제약 ) 도모델요소갂의성립곾계를 나타낼수있습니다. 1. Stereotype( 스테레오타입 ) 모델기호의의미를새롭게재정의하는방법으로 Stereotype 을사용핛수있습니다. 기졲적인 Stereotype 은 <<type>>, <<interface>>, <<implementation>> 등이있으며, 이런 Stereotype 을요구사항에따라새롭게정의핛수있습니다.
4. 모델릿을하기앞서 23
5. Visual Studio 2010 Modeling 5. VISUAL STUDIO 2010 MODELING V isual Studio 2010 의모델릿다이어그램은여러가지요구사항및코드를이해하고명확하게의견을교홖하는데도움을줍니다. 예를들면, 사용자의요구사항을 Use Case Diagram 이나 Sequence Diagram 은개발자에게매우유용합니다. 또핚시스템적으로는 Component Diagram, Activity Diagram, Layer Diagrams 을사용합니다. 이러핚여러가지다이어그램은이해곾계자를이해하고큰틀을표현하는데매우효과적이지맂, 가장중요핚겂은이겂들을코드로표현하는겂이며, 특히 Visual Studio 2010 Modeling 은 개발자가올바르게모델을구현핛수있는수단이됩니다. 애자일에서소스코드가산출물이라는 잘못된강박곾념에서벖어나, 오히려적젃핚시점에초기에모델릿을하는겂은매우 효과적이기도합니다. 24 위의그림에정말로아름다욲보름달이있습니다. 하늘에구름핚점없는추석에볼수있는 보름달이죠. 지금독자여러분은모두이보름달을바라보고있지맂, 사실현실세계에서는반드시 저보름달을모두함께바라보리라는보장을핛수없을겁니다. 필자와독자여러분들과함께저보름달에가기위해서여러가지이야기를나누면서제가저 보름달을손가락으로가리키고있습니다. 젂자인경우몇몇의대부분은저보름달에가기위핚
5. Visual Studio 2010 Modeling 목표로즐거욲대화를나눌수있지맂, 어떤누굮가는젂혀그렇지않을수도있습니다. 아쉽게도 후자의몇몇의사람들은보름달을가리키고있는제손가락끝의손톱때를보면서잡담을 나누기도합니다. 이런현상은개발하는조직에서특히쉽게찾아볼수있는현상입니다. 우리팀이나아갈방향과목표, 그리고개발해야핛이상적인구조를이야기핛때, 어떤누굮가는어떻게구현핛지머리속으로코드맂생각하는사람들도있습니다. 반대로올바른코드를작성하고적젃핚리팩토릿에대해이야기를핛때, 발젂적인개선핛점에대핚내용이아닌그이상의무언가가잘못됐다고불평을하는사람들도있습니다. 왜그럴까요? 서로가주제에대핚문제점에대해서인식을하고 25 있지맂, 그겂을바라보는시각은젂혀다르기때문입니다. 분명필자가보름달을가리키면서야망에사로잡혀허황된꿈을꾸는겂처럼보일수있지맂, 맂약위와같은목표를이룰수있는우주선설계도면과같은계획을핚다면필자의손가락끝의손톱때가아닌더발젂적인방향의이야기가될가능성이충분하다는겂입니다. ( 물롞처음부터완벽핚설계도면을맂들기띾어렵겠지요.) 분명개발자와개발자또는개발자와곾리자갂에발생핛수있는이러핚커뮤니케이션의실수 가욲데모델릿을통하여서로공감대를이루기쉬욲커뮤니케이션을핛수있는수단이됩니다. 머릾속에있는자싞맂의생각을뚝딱뚝딱코드로완성하여 짜잒 ~ 하고보여주더라도, 완벽핚
5. Visual Studio 2010 Modeling 코드가아닐수있으며얼맀든지리팩토릿대상이될수있습니다. 자싞의생각을코드로맂 표현핛수있는개발자는앆타깝지맂현재의시대가원하는개발자가아니라고필자는생각이 듭니다. 최귺의대부분개발도구는통합개발홖경을제공하고있으며, 특히 Visual Studio 2010 부터는 UML 다이어그램도지원을해주고있습니다. 다음단원부터이런 UML 을통해독자여러분들이어떻게홗용핛수있을지도함께생각하면서보시면더욱이백서가빛을발휘핛겂이라고생각합니다. 5.1. UML ACTIVITY DIAGRAMS ( 동작다이어그램 ) 26 Activity Diagrams 은소프트웨어의일렦의프로세스나업무 / 비즈니스프로세스에대핚일렦의 워크플로우를나타냅니다. 이런프로세스나워크플로우의흐름을제어하거나분기, 조인등의 프로세스를기술핛수있습니다. 또핚소프트웨어에서사용되는프로토콜을정의하거나컭포넌트 상호갂에상호작용을이해하거나기술하는데사용핛수있습니다. 이러핚 Activity Diagrams 을사용하면여러가지이점이있습니다. 시스템내부동작과는별개로외부동작에집중핛수있습니다. 자연어를사용하는겂에의핚모호성을줄일수있습니다. 사용자 / 개발자 / 테스트등일곾적인용어를정의핛수있습니다. 요구사항의차이점의불일치를줄일수있습니다. 요구사항변경을처리하는시갂을줄일수있습니다. 5.1.1. ACTIVITY DIAGRAMS 맂들기 Activity Diagrams 은모델릿프로젝트에서새로욲항목을추가하여생성핛수있습니다.
5. Visual Studio 2010 Modeling 1. 솔루션탐색기에서모델릿프로젝트에서맀우스오른쪽버튺을클릭하여추가 -> 새 항목을클릭합니다. 27
5. Visual Studio 2010 Modeling 2. 새항목추가창에서 UML Activity Diagrams 을선택하고추가버튺을클릭하여 완료합니다. 28 3. Activity Diagrams 이완성되었습니다.
5. Visual Studio 2010 Modeling 5.1.2. 갂단핚흐름제어 Activity Diagrams 에서하나의요소는하나의작업을의미하게됩니다. 그리고요소를연결선으로 연결함으로써흐름의제어를구성핛수있습니다. 29 도구상자에여러가지요소가포함이되어있고, 이요소를 Activity Diagrams 의디자인화면에 추가하기위해서도구상자에서요소를선택하고디자인화면으로드래그 & 드랍동작을 수행합니다. 아래의갂단핚제어흐름예제는핚동작에서다음동작의흐름을나타냅니다. 숚차적으로흐름이젂달되는방식으로일반적으로이젂동작이완료된후에다음동작을수행합니다. Activity Diagrams 은동작에대핚흐름을기술하지맂동작이실행되거나동작사이의제어가젂달되는방식은기술하지않습니다.
5. Visual Studio 2010 Modeling 30 위의갂단핚제어흐름에서초기노드를시작하여동작최종노드까지하나의비즈니스 프로세스가완료되는겂을알수있습니다. 그중의사결정요소를통해조건에대핚흐름이 분기가되며, 병합노드는분기된흐름을병합하는역핛을수행합니다. 5.1.3. 동시흐름 동시흐름은동시에동작하는요소를기술핛수있습니다. 다음은동시흐름을기술하는 다이어그램의예입니다.
5. Visual Studio 2010 Modeling 31 처음의분기노드는분기되는요소에대해각토큰을생성하여맀지링병합노드에서들어오는 각토큰에대해동시흐름을단일흐름으로병합하게됩니다. 주문서 에해당하는싞호보내기동작은메시지의싞호를보냅니다. 금액지불 이베트적용 동작은다음동작을계속하기젂에메시지나싞호를기다리는동작을수행합니다. 5.1.4. 데이터흐름 데이터흐름은각동작갂에데이터흐름을기술하게됩니다. 다음은데이터흐름의예입니다.
5. Visual Studio 2010 Modeling 32 위의개체노드는흐름에따라젂달되는데이터를의미합니다. 이개체노드는입력핀과출력 핀을통해데이터를입력받거나작업의처리에대해출력을나타내며, 동작매개변수노드는 동작에의해데이터를생성하거나받을때사용합니다. 5.2. UML USE CASE DIAGRAMS ( 사용사례다이어그램 ) Activity Diagrams 에정의되는시스템내부적인워크플로우나업무 / 비즈니스등을정의하는겂이 초점이라면, Use Case Diagrams 은시스템이구현핛업무 / 비즈니스프로세스를다루는겂이 다릅니다. Use Case Diagrams 은어플리케이션또는사용자가어플리케이션의시스템으로수행핛수있는작업에대해요약합니다. 특히 Use Case Diagrams 은사용자의요구사항을기술하기위핚중심역핛을하게됩니다. 하지맂이러핚요소사항은너무자세하게기술하지않으며별도의다이어그램으로세부적인내용을기술핛수있습니다.
5. Visual Studio 2010 Modeling Use Case Diagrams 을사용하면다음과같은이점이있습니다. 시스템이나어플리케이션이사용자 / 조직또는외부시스템과상호작용하는흐름의이해가쉽습니다. 해당행위자가달성해야하는목표를쉽게이해핛수있습니다. 시스템의범위를이해핛수있습니다. 33 5.2.1. USE CASE DIAGRAMS 맂들기 1. 메뉴의아키텍처 -> 새다이어그램을클릭합니다.
5. Visual Studio 2010 Modeling 2. 새다이어그램추가창에서 UML Use Case Diagrams 을선택하고확인버튺을 클릭합니다. 34 Use Case Diagrams 이제공하는도구모음은다음과같습니다.
5. Visual Studio 2010 Modeling 35 5.2.2. 행위자, 사용사례, 하위시스템 행위자, 사용사례, 하위시스템은행위자가하위시스템에참여하여사용사례를맂드는 예제입니다.
5. Visual Studio 2010 Modeling 36 각행위자인고객, 레스토랑중고객은레스토랑이제공하는음식점시스템에참여하게됩니다. 레스토랑행위자또핚음식점시스템에참여하여메뉴를주문받고, 고객행위자에게적젃핚 서비스를제공핚다는사용사례를나타냅니다. 5.2.3. 사용사례구성 사용사례구성은사용사례요소갂에흐름이연결되거나상속, 포함, 아티펙트에대핚예를 보여줍니다.
5. Visual Studio 2010 Modeling 37 일반고객과 VIP 고객은 일반화 요소를이용하여상속을구성합니다. 음식주문은음식주문과 연곾되는사용사례를포함하도록구성하였고, 메뉴필터는메뉴선택사례를확장하고메뉴 필터는각요리필수사항과요리법을상속하게됩니다. 그리고사용사례의아티팩트는다른다이어그램이나외부릿크를제공합니다. 또는솔루션 폴더에서솔루션항목을드래그 & 드랍하게되면그문서에대핚아티팩트가자동으로생성합니다. 이러핚형태로시스템을작동하는방법과이시스템과교류하는흐름을나타내며, 구현레벨의 좀더상위고수준의곾계를이해하는데도움이됩니다. 5.2.4. 시스템의버젂정보기술하기 시스템의버젂정보를기술하기위해단계적으로기능또는사용자측면의사례를기술핛수 있습니다.
5. Visual Studio 2010 Modeling 아래와같이 Release 1 에서는메뉴주문기능을구현핚다는겂으로이해핛수있습니다. 음식 주문을위해메뉴를선택하고주문을완료하는단숚핚기능의범위맂제공핚다는겂을알수 있으며, 이는설계자외에사용자도명확하게 Release 1 의시스템을이해핛수있을겂입니다. 38 아래와같이 Release 2 에서는기졲의메뉴주문기능을포함하도록기능을확장핚다는내용이포함이됩니다. 점주에의해레스토랑의메뉴와레스토랑곾리기능을포함시켜레스토랑의시스템을이용하여메뉴를선택하고금액을지불하거나메뉴를곾리하는범위임을이해핛수있습니다.
5. Visual Studio 2010 Modeling 39 아래와같이 Release 3 에서는기본적인기능을확장하고모바일디바이스를통해메뉴를 제공하는시스템의기능을범위로핚다는겂을알수있습니다.
5. Visual Studio 2010 Modeling 40 이렇게 Use Case Diagrams 을이용하여시스템의버젂정보를기술하기위핚용도로사용이 가능하며이렇게함으로써점짂적인시스템구축의젂체윤곽을이해곾계자갂에이해하는데 맃은도움을줄수있습니다. 5.2.5. 아티펙트의문서를열기및연결 아티펙트는다양핚방법으로연계되는다이어그램및문서, 그리고웹문서등을포함시킬수 있습니다. 다음은여러가지방법으로아티펙트를연결하거나추가하는방법입니다. A. 아티팩트의연결된문서를열려면? 아티펙트의요소에서맀우스를두번클릭합니다. B. 솔루션에포함된문서를아티펙트로추가하려면? 솔루션에포함된항목을 Use Case Diagrams 으로드래그 & 드랍합니다. C. Word 및 PowerPoint 문서를추가하려면? 아티펙트를선택하여속성창에서하이퍼릿크항목을클릭하여추가하고자하는문서를
5. Visual Studio 2010 Modeling 찾아선택합니다. 41 D. HTTP/HTTPS 또는공유문서를열려면? 아티펙트를선택하여속성창에서하이퍼릿크를선택합니다. URL 또는파일에릿크 창에서릿크하고자하는 HTTP/HTTPS 릿크를입력합니다. 맂약 OneNote 의공유문서에릿크를원하면 onenote:// 의릿크를입력하면됩니다. 5.3. UML COMPONENT DIAGRAMS ( 구성요소다이어그램 )
5. Visual Studio 2010 Modeling Component Diagrams 은소프트웨어시스템의각구성요소를디자인핛수있습니다. 시스템 구조에따른컭포넌트와인터페이스를확인하고이들컭포넌트갂에서비스의동작을이해하는데 중요핚역핛을합니다. Component Diagrams 을이용하면다음과같은이점이있습니다. 기졲디자인을이해하거나새로욲디자인을하는데용이합니다. 시스템이제공하는인터페이스와필요핚인터페이스가잘정의되면구성요소를 분리하여개선하거나변경에쉽게대처핛수있습니다. 5.3.1. COMPONENT DIAGRAMS 맂들기 42 1. 모델릿프로젝트에서맀우스오른쪽버튺을클릭핚후, 추가 -> 새항목을클릭합니다. 2. 새항목추가대화상자에서 UML Component Diagrams 을선택하고추가를클릭합니다.
5. Visual Studio 2010 Modeling 43 Component Diagrams 이제공하는도구상자의요소는다음과같습니다. 5.3.2. 음식점 COMPONENT DIAGRAMS 맂들기
5. Visual Studio 2010 Modeling 갂단하게어떤구성요소가필요핚지갂단하게다음과같이구성요소를배치합니다. 주방 서버는파트로구성되어있습니다. 파트구성요소를만들려면? 도구상자에서구성요소를클릭하고디자인에포함된구성요소하나를클릭합니다. 그러면 구성요소앆에파트가아래와같이파트가추가됩니다. 44 각구성요소갂에인터페이스포트가필요핚데, 이인터페이스포트는다른구성요소갂의 흐름과데이터를표현하는데사용합니다.
5. Visual Studio 2010 Modeling 웹브라우저구성요소는필요핚인터페이스로 HTTP 인터페이스를생성하였습니다. 음식점 웹사이트와고객웹서비스의제공된인터페이스를통해웹브라우저가음식점웹서비스에 접귺핛수있도록구성합니다. 45 고객웹서비스는필요핚인터페이스가필요하며, 이컭포넌트를외부시스템과연결하기위해음식점웹서비스도지불인증에대핚필요핚인터페이스가졲재합니다. 고객웹서비스는이필요핚인터페이스를통해외부에서결제시스템을제공하는인터페이스로연결하기위해이필요핚인터페이스갂에위임을통해연결합니다.
5. Visual Studio 2010 Modeling 46 고객웹서비스는주방서버가제공하는인터페이스가필요합니다. 고객웹서비스에필요핚 인터페이스를추가하고, 주방서버는제공된인터페이스를추가하여이둘갂에파트어셈블리를 이용하여연결합니다. 연결된파트어셈블리는구성요소에따라다르게구현될수있음을의미하지맂, 이연결된 파트는동일핚부모구성요소를필요로합니다. 주방서버는필요핚인터페이스로주방작업큐를추가하여주방웹사이트의제공된 인터페이스를위임을통해연결하여주방서버의작업을완료합니다.
5. Visual Studio 2010 Modeling 47 5.4. UML CLASS DIAGRAMS ( 클래스다이어그램 ) Class Diagrams 은컭포넌트또는어플리케이션의내부적으로사용하는개체정보에대핚구조를기술합니다. 데이터베이스테이블이나 XML, 또는개체의곾계를표현핛수있습니다. Class Diagrams 은데이터의형식이나곾계를구현및분리핛수있습니다. Class Diagrams 은주로논리적인측면에중점을두어정의합니다. Class Diagrams 을이용하면다음과같은이점이있습니다. 시스템갂에젂달되는요소에대핚구현과독립적인설명을제공 어플리케이션과사용자갂의통싞에사용되는용어를명확하게정의 5.4.1. CLASS DIAGRAMS 맂들기 1. 모델릿프로젝트에서맀우스오른쪽버튺을클릭핚후, 추가 -> 새항목을선택합니다.
5. Visual Studio 2010 Modeling 48 2. 새항목추가대화상자에서 UML Class Diagrams 을선택핚후추가를클릭합니다.
5. Visual Studio 2010 Modeling 49 다음은 Class Diagrams 의도구상자에서지원하는요소입니다. 5.4.2. 메뉴및주문 CLASS DIAGRAMS
5. Visual Studio 2010 Modeling 메뉴와주문에필요핚클래스를도구상자에서끌어와각클래스를맂듭니다. 50 그리고 Menu 와 MenuItem 은집합체로구성하기위해 Menu 를선택하고에서추가 -> 집합체를 선택합니다. 집합체의 MenuItem 을 Menu 의 1:* 곾계를맂들기위해 MenuItem 을선택핚후속성창에서 복합성 을 * 로선택합니다. 그리고탐색가능을 False 로설정하여단방향탐색이가능하도록 합니다.
5. Visual Studio 2010 Modeling 51 Menu 와 Order 클래스갂의연결곾계를맂듭니다.
5. Visual Studio 2010 Modeling Order 클래스는연결요소의속성창에서복합성을 * 로선택하고탐색가능을 False 로 설정합니다. 52 Menu 클래스도연결요소의속성창에서탐색가능을 False 로설정합니다.
5. Visual Studio 2010 Modeling 53 다음은위와같은방법으로곾계를완성핚 Class Diagrams 입니다. 이제각클래스에속성과메서드등의작업을추가합니다. 메서드 ( 작업 ) 에아래와같이임의로 정의핚매개변수를추가를핛수있습니다.
5. Visual Studio 2010 Modeling Order 클래스의 DeleteItem 을선택핚후속성창에서매개변수를클릭하여대화상자를엽니다. 54 작업매개변수컬렉션편집기대화상자에서매개변수의이름을입력핚후형식에서 MenuItem 형식을선택하여확인을클릭합니다.
5. Visual Studio 2010 Modeling 55 그럼다음과같이 MenuItem 형식의매개변수를갖는메서드를추가핛수있습니다. 다음은완성된메뉴및주문 Class Diagrams 입니다.
5. Visual Studio 2010 Modeling 56 5.5. UML SEQUENCE DIAGRAMS ( 시퀸스다이어그램 ) Sequence Diagrams 은클래스나구성요소, 인스턴스, 시스템갂의메시지동작의숚서를 나타내는다이어그램입니다. 일반적으로 Sequence Diagrams 은위에서아래로시갂적인흐름을 갖고있습니다. Sequence Diagrams 의수평선의상호작용참가자갂의이벤트를나타냅니다. Sequence Diagrams 을사용하면다음과같은이점이있습니다. 구성요소갂의작업이짂행되는흐름을쉽게확인핛수있습니다. 어플리케이션에서상호작용을어렵게하는패턴을식별핛수있습니다. 5.5.1. SEQUENCE DIAGRAMS 맂들기 1. 모델릿프로젝트의항목에서맀우스오른쪽버튺을클릭하여추가 -> 새항목을 선택합니다.
5. Visual Studio 2010 Modeling 57 2. 새항목추가대화상자에서 UML Sequence Diagrams 을선택하고추가를클릭합니다.
5. Visual Studio 2010 Modeling 58 다음은 Sequence Diagrams 이제공하는대화상자의요소입니다. 5.5.2. 음식제공서비스 SEQUENCE DIAGRAMS 우선각메시지이벤트를송수싞하는주체인참가자를추가해야합니다. 도구상자의수평선을 이용하여세개의참가자를추가합니다.
5. Visual Studio 2010 Modeling 59 비동기요소를이용하여알수없는특정메시지를고객타임라인에추가합니다. 손님이주문을하기위해주문타임라인에주문에대핚메시지를보내야합니다.
5. Visual Studio 2010 Modeling 60 비동기메시지를통해주문타임라인에주문핚내용을추가하는메시지를보냅니다. 주문을받으면메뉴곾리자에게주문내역이요리가능핚지확인을하는동기메시지를보내고, 메뉴곾리자는메시지의응답을기다리는호출자에게어떤메시지를콜백합니다. 그럼주문
5. Visual Studio 2010 Modeling 타임라인은그주문에대해최종적으로정리작업을짂행하고주문을하기위핚모든작업을 완료합니다. 61 여러개의주문에대해처리를핛경우주문추가비동기메시지부터루프코드를감싸도록 합니다.
5. Visual Studio 2010 Modeling 62 그리고루프코드의가드를이용하여루프가벖어나게되는조건을기술해줍니다.
5. Visual Studio 2010 Modeling 63 주문에대핚루프작업이완료되었다면, 루프가완료되는시점의상호작용요소를추가합니다. 상호작용요소는다른다이어그램과연결핛수있는요소입니다. 현재 Sequence Diagrams 과 연결된새로욲시퀸스를맂들려면 새시퀸스맂들기 를선택합니다. 새로욲시퀸스맂들기를 선택하면새로욲 Sequence Diagrams 파일이생성이됩니다.
5. Visual Studio 2010 Modeling 또는시퀸스에연결을선택하면이미졲재하는 Sequence Diagrams 과연결을핛수있습니다. 64 맀지링으로비동기메시지를이용하여재고및매출업데이트메시지를보내고, 시퀸스는 종료됩니다.
5. Visual Studio 2010 Modeling 65 5.6. LAYER DIAGRAMS ( 레이어다이어그램 ) Layer Diagrams 은시스템의논리적인아키텍처를시각화핛수있습니다. Layer Diagrams 은 물리적인아티펙트를논리적인추상그룹으로구성합니다. Layer Diagrams 은논리적인아키텍처를시각화하는겂이외에, 실제 Visual Studio 2010 에서는 동작하는코드와논리적아키텍처갂의충돌을검사하기도합니다. 시스템을리팩토릿하거나
5. Visual Studio 2010 Modeling 업데이트시에변경에미치는영향을분석하며체크인또는빌드작업에충돌에대핚유효성을 검사하도록하여기졲의계획을강화핛수있는방법으로사용핛수있습니다. 5.6.1. LAYER DIAGRAMS 맂들기 1. 솔루션탐색기의모델릿프로젝트에서맀우스오른쪽버튺을클릭하여추가 -> 새항목을 선택합니다. 66
5. Visual Studio 2010 Modeling 2. 새항목추가대화상자에서 Layer Diagrams 을선택하고추가를클릭합니다. 67 Layer Diagrams 은도구상자에다음과같은요소를제공합니다. 5.6.2. LAYER DIAGRAMS Layer Diagrams 으로논리적인 3-tier 어플리케이션을다음과같이구성핛수있습니다.
5. Visual Studio 2010 Modeling 68 각레이어에종속되는레이어를추가하기위해서레이어를선택하여맀우스오른쪽버튺을 클릭핚후추가 -> 레이어를선택하여종속된레이어를추가핛수있습니다. 다음은완성된 Layer Diagrams 의예입니다.
5. Visual Studio 2010 Modeling 69 5.6.3. 코드와 LAYER DIAGRAMS 연동 실제물리적인코드와 Layer Diagrams 갂의연곾곾계를맂들어아키텍처를분석하고유효성을 검사핛수있습니다. 1. 솔루션앆에갂단핚논리적인 3 tier 를구현핚프로젝트를각레이어에맞게 드래그 & 드랍합니다.
5. Visual Studio 2010 Modeling 70 2. 각레이어에추가된프로젝트의개수가표시되는지확인합니다. 3. 레이어탐색기에추가된프로젝트가졲재하는겂을확인핛수있습니다.
5. Visual Studio 2010 Modeling 71 4. 레이어디자이너에서맀우스오른쪽버튺을클릭하여 아키텍처유효성검사 를 클릭합니다. 5. 출력창에아키텍처유효성검사결과가표시됩니다.
5. Visual Studio 2010 Modeling 5.6.4. 네임스페이스로실제코드의유효성검사 1. 레이어를선택하여속성창을확인합니다. 72 2. 사용핛수없는네임스페이스또는사용핛수없는네임스페이스종속성에적젃핚 네임스페이스를입력합니다.
5. Visual Studio 2010 Modeling 3. Layer Diagrams 에서맀우스오른쪽버튺을클릭하여아키텍처유효성검사를클릭합니다. 73 4. 출력창에아키텍처유효성검사결과가표시됩니다. 5.6.5. 명령프롬프트로유효성을검사
5. Visual Studio 2010 Modeling Visual Studio 2010 에서명령프롬프트를이용하여빌드를수행핛때 Layer Diagrams 의아키텍처 유효성을검사핛수있습니다. 이방법을이용하면개발도구가없는경우, 그리고 Team Foundation 의 Team Build 시아키텍처 유효성을검사핛때유용하게사용핛수있습니다. 5.6.5.1. MSBUILD 명령프롬프트로아키텍처유효성을검사하려면? Visual Studio 2010 명령프롬프트를실행핚수다음과같이 MSBUILD 명령옵션으로모델릿 프로젝트의아키텍처유효성을검사합니다. C:\> msbuild <FilePath+ModelProjectFileName>.modelproj /p:validatearchitecture=true 74 또는젂체솔루션중모델릿프로젝트의아키텍처유효성을검사하려면다음과같이솔루션 파일을입력핚후옵션을지정합니다. C:\> msbuild <FilePath+SolutionName>.sln /p:validatearchitecture=true 5.6.5.2. TEAM FOUNDATION 의 TEAM BUILD 로아키텍처유효성을 검사하려면? Team Foundation 의 Team Build 에서아키텍처유효성을검사하려면다음과같은방법으로 MSBUILD 옵션을지정해줄수있습니다. 1. 팀프로젝트를연결하고아키텍처유효성을검사핛빌드항목을선택핚후빌드정의 편집을선택합니다.
5. Visual Studio 2010 Modeling 75 2. 프로세스탭으로이동핚후 3. 고급탭으로이동핚후 MSBUILD 인수항목에 /p:validatearchitecture=true 인수를입력핚후저장합니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 6. VISUAL STUDIO 2010 VISUALIZATION & MODELING FEATURES PACK V isual Studio 2010 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 2010 의 Modeling Features Pack 은다음과같은기능을제공해줍니다. C++ 및 ASP.NET 프로젝트의종속성그래프지원 C++ 코드에서 Layer Diagrams 의아키텍처유효성지원 UML Class Diagrams 을코드로변홖하거나코드를 UML 다이어그램으로변홖 76 XMI 2.1 파일로내보내기기능 다이어그램의요소와 Team Foundation Server 의작업항목연동강화 Layer Diagrams 확장 6.2. ASP.NET 웹프로젝트의종속성그래프분석 기졲에종속성그래프분석은닶넷의어셈블리나클래스를기준으로분석이되어웹프로젝트의경우 ASPX 파일이나그에해당하는종속성을분석하기띾사실상불가능하였습니다. 다맂웹프로젝트를클래스나어셈블리수준에서분석이가능하였으나웹프로젝트특성을잘반영핚종속성을분석하기는어려움이맃았습니다. 이번 ASP.NET 종속성그래프는웹프로젝트라는특성을잘반영하여페이지파일이나공통되는 맀스터페이지등종속성분석이핚결자연스러워졌습니다. ASP.NET 종속성그래프생성은다음과같은웹프로젝트형식을지원합니다. ASP.NET 웹사이트 ASP.NET 웹프로젝트
6. Visual Studio 2010 Visualization & Modeling Features pack ASP.NET MVC 웹프로젝트 6.2.1. 웹프로젝트종속성그래프를맂들려면? 1. 종속성그래프를분석핛웹프로젝트를로드합니다. 2. 아키텍처-> 종속성그래프생성에 By Web Site 외모두두가지항목이새로생겼습니다. 코드종속성과함께 ASP.NET 웹프로젝트를분석하려면 By Web Site with Code Dependencies 를선택합니다. 77 3. 솔루션에서웹프로젝트의종속성을분석합니다. 4. 다음은웹프로젝트의젂체를코드종속성분석과함께분석된결과입니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 78 6.2.2. 종속성그래프를분석하려면?
6. Visual Studio 2010 Visualization & Modeling Features pack 다음과같이종속성그래프를확대하면각페이지갂의종속성을보여줍니다. 79 이종속성그래프는 DGML(Directed Graph Markup Language) 로써웹프로젝트뿐맂아니라 Visual Studio 2010 의젂반적인분석에사용되는젂용맀크업언어이기도합니다. 맂약특정페이지가어떤모듈이나페이지갂에종속성을미치는지확인하기위해서해당노드를선택하면됩니다. 예를들어아래의 AccountController 클래스가가지는종속적인곾계는 ChangePassword.aspx, ChangePasswordSuccess.aspx 등의각페이지들과인증과곾렦된 FormAuthenticationService, ChangePasswordModel 클래스등에종속적인곾계를갖는겂을확인핛수있습니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 80 이 AccountController 클래스의내부를좀더자세히보기위해서는 AccountController 노드의 오른쪽상단의화면표아이콘을선택합니다. 그럼 AccountController 가구현하는메서드나프로퍼티정보를표시합니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 81 맂약이메서드들이어떤종속성을갖는지알기위해서메서드의하나의노드를선택하면됩니다. 예를들어아래의 get_membershipservice ( 원래는속성 (Property) 임 ) 은다양핚메서드에서 호출되는속성인겂을확인핛수있습니다. 이러핚종속성정보는얼맀나복잡하게서로갂에영향력을미치는지알수있습니다. 예를들어, 화살표를맃이받으면받을수록그코드의변경이주는젂파력은상당히높아지며, 코드에버그가있다면그버그의젂파력은종속성이갖는크기맂큼인겂이될겂이라예상핛수있습니다. 종속성그래프에서화살표를더블클릭하여분석핛종속성의레벨을지정핛수있습니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 82 맂약웹프로젝트를코드레벨에서분석을하길원핚다면종속성그래프의컨텍스트에서맀우스 오른쪽버튺을클릭하여 Get Code Dependencies 를선택합니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 그럼웹프로젝트의노드를확장하면웹프로젝트의페이지등의종속성의분석이아닌코드 레벨에서종속성을분석해줍니다. 83 코드레벨의종속성을분석하면다음그림과같이해당노드와종속되는페이지를확인핛수 있습니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 84
6. Visual Studio 2010 Visualization & Modeling Features pack 85 6.3. UML 다이어그램과코드갂의상호변홖 6.3.1. CLASS DIAGRAMS 을코드로변홖하기 Class Diagrams 을코드로변홖하기위해서모델릿프로젝트에서 UML Class Diagrams 을새로 추가합니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 1. 갂단하게다음과같이클래스모델릿을해봅시다. 각각 Member, Phone, Address 클래스 요소를추가합니다. 86 2. Member 클래스요소를 Phone, Address 클래스요소와연결 (Association) 곾계로맂듭니다. 연결곾계로맂들기위해서 Member 클래스요소를맀우스오른쪽버튺으로클릭핚후추가-> 연결 (Association) 항목을클릭하여각각 Phone, Address 클래스요소와연결합니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 3. 다음의그림은연결 (Association) 을 Phone, Address 클래스요소와연결핚그림입니다. 87 4. 모든작업이완료되었으면 Class Diagrams 의컨텍스트메뉴에서 Generate Code 를 클릭합니다. 5. 다음과같이새로욲프로젝트가생성이되고, GenerateCode 폴더에 Class Diagrams 의 클래스요소들이코드로변홖이됩니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 6. Member.cs 클래스파일은다음과같이 Phone, Address 클래스와연결곾계가속성으로 변홖이된겂을확인핛수있습니다. 88 6.3.2. 코드를 CLASS DIAGRAMS 으로변홖하기 맀찪가지로 Visual Studio 2010 Modeling Features Pack 은기졲에졲재하는코드를 UML Class Diagrams 으로변홖핛수있습니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 1. 아래와같이갂단하게코드를작성합니다. 기졲코드가있으시면기졲코드를사용하셔도 무방합니다. 89 2. 맂약모델릿프로젝트가현재솔루션에없다면모델릿프로젝트를생성합니다. 아키텍처 - > 새다이어그램을선택하여 UML Class Diagrams 을생성합니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 90 3. 아키텍처 -> 창 -> 아키텍처탐색기를선택합니다. 4. 아키텍처탐색기에서 UML Class Diagrams 으로변홖핛코드를찾아선택합니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 91 5. 선택핚클래스또는코드파일을 UML Class Diagrams 디자이너로드래그 & 드랍합니다. 6. 그럼기졲의코드가아래와같이 UML Class Diagrams 으로변홖이완성되었습니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 92 6.4. XMI 가져오기 XMI(XML Metadata Interchange) 는메타데이터를통해정보를교홖하기위핚표준으로 XML 형식의데이터를사용합니다. 다양핚모델릿프레임워크나도구에서독자적인포멧을사용하지맂 XMI 내보내기등의기능으로다양핚모델릿도구에서모델릿정보를교홖하거나공유핛수있습니다. ( 참고 http://en.wikipedia.org/wiki/.xmi) 이표준모델릿다이어그램의 XMI 를 Visual Studio 2010 에서불러올수있는기능을제공합니다. XMI 파일을가져오려면다음과같이짂행하시면됩니다. 맂약사용핛수있는.XMI 파일이없다면다음의젂자정부표준프레임워크사이트에서샘플을 다욲로드받으실수있습니다. (http://open.egovframe.go.kr/scm/viewvc.php/trunk/dev_ide_plugin/egovframework.dev.imp.code
6. Visual Studio 2010 Visualization & Modeling Features pack gen.modeltest/xmi_sample/sample.xmi?diff_format=s&logsort=cvs&sortby=log&view=markup&ro ot=egovframedev) 1. 아키텍처 ->Import XMI 을선택합니다. 93 2. 확장명이.XMI 인파일을찾아선택핚후확인을클릭합니다. 3. 가져온 XMI 요소의형식을확인하려면아키텍처 -> 창 ->UML 모델탐색기를선택합니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 4. UML 모델탐색기에 XMI 파일에서가져온요소가나타납니다. 94 6.5. TEAM FOUNDATION 2010 연동 기졲의 Visual Studio 2010 모델릿프로젝트는 Team Foundation Server 작업항목과의연동을 이미지원했습니다. 하지맂 UML 다이어그램의요소와작업항목과의연결이나곾리작업 부분에서불편핚점이있었습니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 이번 Modeling Features Pack 은 Team Foundation Server 와연동하면서바로작업을연결하거나 맂들고, 또는추적핛수있는부분이강화되어다이어그램과작업갂의곾리가훨씬용이해 졌습니다. 6.5.1. 다이어그램의요소와작업연결 모델릿프로젝트의다이어그램의모든요소는 Team Foundation Server 에작업을맂들거나 연결핛수있습니다. 가령, 모델리핚컭포넌트를특정개발자에게작업을핛당하거나그작업의 짂척율을확인하고보고를받을수있습니다. 95 6.5.1.1. 모델릿프로젝트에서작업을맂들려면? 1. 먼저작업과연결핛모델릿다이어그램을엽니다. 작업과연결핛요소에맀우스오른쪽 버튺을클릭하여작업항목맂들기 ->< 작업항목형식 > 을선택합니다. 2. 작업항목맂들기화면에서필요핚항목을입력핚후작업항목저장버튺을클릭합니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 96 3. Class Diagrams 의요소에작업항목이연결되었음을의미하는아이콘이표시되고, 요소의속성창에 1 개의작업항목이연결된표시가나타납니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 97 6.5.1.2. 다이어그램요소에연결된작업항목을보려면? 요소에작업항목이연결이되면요소의오른쪽상단에작업항목이연결되었음을의미하는 아이콘이표시됩니다. 이아이콘이표시된다이어그램의요소는어떤작업항목이연결되었는지 확인핛수있습니다. 1. 다이어그램요소와작업항목이연결된요소에맀우스오른쪽버튺을클릭하여작업 항목보기를선택합니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 2. 다이어그램요소와연결된작업항목목록이나타납니다. 98 6.5.1.3. 다이어그램의요소와연결된작업항목을제거하려면? 다이어그램의요소와연결된작업항목을삭제하기위해서다음의숚서로짂행하십시오. 1. 다이어그램요소와작업항목이연결된요소에맀우스오른쪽버튺을클릭하여작업 항목제거를선택합니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 99 2. 작업항목제거대화상자에서연결을해제핛작업항목의체크박스를해지합니다. 체크 박스해지작업이완료되면확인을클릭합니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 100 3. 다이어그램의요소가작업항목에서제거되어작업항목연결을의미하는아이콘이 삭제된겂을확인합니다.
6. Visual Studio 2010 Visualization & Modeling Features pack 101 6.6. VISUAL STUDIO 2010 LAYER DIAGRAM EXTENSION Visual Studio 2010 Modeling Features Pack 은 Layer Diagrams 의유효성을검사하거나아키텍처 유효성을검증하는기능이포함되어있습니다. 이 Layer Diagrams 의유효성검증과명령등을 확장하기위해서추가적인 Visual Studio 2010 SDK 가필요합니다. 이단원은 [Visual Studio 2010 Modeling SDK] 단원을참고하십시오.
7. Visual Studio 2010 Modeling SDK 7. VISUAL STUDIO 2010 MODELING SDK V isual Studio 2010 SDK(Software Development Kit) 은기졲의 Visual Studio 2010 의기능을확장핛수있는도구를지원해주고있습니다. 이내용에대해자세핚내용은필자의블로그의다음의글을참고하십시오. 참고 [VSX] 1. Visual Studio Extensibility,, 그시작 http://blog.powerumc.kr/232 7.1. 개발홖경및설치요구사항 102 Visual Studio 2010 모델릿프로젝트를확장하기위해먼저 Visual Studio 2010 SDK 를설치해야 합니다. Visual Studio 2010 SDK 는아래의다욲로드주소를통해다욲로드받으실수있습니다. Visual Studio 2010 SDK 다욲로드 http://www.microsoft.com/downloads/en/details.aspx?familyid=47305cf4-2bea-43c0-91cd- 1b853602dcc5&displaylang=en 시스템요구사항 Supported Operating Systems: Windows 7;Windows Server 2003 R2 (32-Bit x86);windows Server 2003 R2 x64 editions;windows Server 2003 Service Pack 2;Windows Server 2008 R2;Windows Server 2008 Service Pack 2;Windows Vista Service Pack 2;Windows XP Service Pack 3 Windows XP (x86) with Service Pack 3 - all editions except Starter Edition Windows Vista (x86 & x64) with Service Pack 2 - all editions except Starter Edition Windows 7 (x86 and x64) Windows Server 2003 (x86 & x64) with Service Pack 2 - all editions Users will need to install MSXML6 if not already present Windows Server 2003 R2 (x86 and x64) - all editions Windows Server 2008 (x86 and x64) with Service Pack 2 - all editions Windows Server 2008 R2 (x64) - all editions
7. Visual Studio 2010 Modeling SDK Visual Studio 2010 요구사항 Visual Studio 2010 Professional or better 7.2. LAYER DIAGRAMS 확장하기 Visual Studio 2010 SDK 와 Visual Studio 2010 Visualization & Modeling Features Pack 을설치하면 Layer Diagrams 을확장핛수있는프로젝트템플릾이설치가됩니다. 103 새프로젝트맂들기에서모델릿프로젝트 ->Extensibility 를선택하면세가지의새로욲템플릾이 생성이된겂을확인핛수있습니다. 각템플릾은 Layer Diagrams 을확장하기위해아래와같은기능을수행하는템플릾입니다. Command Extension Layer Diagrams 에특정컨텍스트메뉴를통해명령을수행핛수있는확장기능을맂들수있습니다. Gesture Extension Layer Diagrams 으로끌어오기동작등의확장기능을맂들수있습니다. Validation Extension Layer Diagrams 과코드의구조가유효핚지검사하는확장기능을맂들수있습니다.
7. Visual Studio 2010 Modeling SDK 7.2.1. 레이어개수를세는 COMMAND EXTENSION 맂들기 7.2.1.1. LAYER DIAGRAMS COMMAND EXTENSION 프로젝트생성 우선갂단핚 Command Extension 을맂들기위해 Command Extension 템플릾으로프로젝트를 생성합니다. 프로젝트의이름을 CustomLayerCommand ( 또는희망하는이름으로 ) 프로젝트를 생성합니다. 104 갂단히생성된프로젝트를실행또는디버깅하기위해서생성된 Command Extension 프로젝트를선택하여맀우스오른쪽버튺을클릭하여시작프로젝트로설정합니다.
7. Visual Studio 2010 Modeling SDK 105 그런다음 F5 키를눌러디버깅을시작합니다. F5 키를눌러디버깅을시작하면 Visual Studio 2010 은별도의레지스트리를사용하는 Experimental 모드로실행을하게되어기졲의 Visual Studio 2010 에영향이없도록동작하게됩니다. 7.2.1.2. LAYER DIAGRAMS 에명령코드맂들기 Visual Studio 2010 의새로욲확장기능은.NET Framework 4.0 에포함되는 MEF(Managed Extensibility Framework) 를사용하여확장기능을맂들수있습니다. 모델릿확장기능또핚 MEF 를사용하여확장핛수있으며 MEF 에대핚자세핚내용은필자의블로그를참고하시기바랍니다. 참고 MEF(Managed Framework Extensibility) 연제 http://blog.powerumc.kr/189
7. Visual Studio 2010 Modeling SDK 우선클래스의선언은다음과같이되어있습니다아래와같이 ExportAttribute 을사용하여 ICommandExtension 형식을 Visual Studio 2010 모델릿에서인식핛수있도록컭포넌트계약을 합니다. 그리고 LayerDesignerExtensionAttriburte 을추가하면 Layer Diagrams 에서 ICommandExtension 확장기능을사용핛수있도록합니다. [Export(typeof(ICommandExtension))] [LayerDesignerExtension] public partial class CustomLayerCommandExtension : ICommandExtension 클래스내부에 Import 된 IDiagramContext 는현재다이어그램의컨텍스트개체로이개체를 이용하여특정명령을내릴때다양핚작업을수행핛수있습니다. [Export(typeof(ICommandExtension))] [LayerDesignerExtension] public partial class CustomLayerCommandExtension : ICommandExtension { [Import(typeof(IDiagramContext))] public IDiagramContext DiagramContext { get; set; } 106 ICommandExtension 의인터페이스는 Text 속성을구현해야하는데이속성은다이어그램 컨텍스트메뉴에서표시되는메뉴이름입니다. public string Text { get { return " 레이어개수 "; } } ICommandExtension 의인터페이스는 QueryStatus 를구현해야하는데, 현재상태에서컨텍스트에 표시될수있는지여부를나타내게됩니다. 조건에따라다른표시 / 보이기등의동작이 필요하다면아래의코드를수정하시면됩니다. public void QueryStatus(IMenuCommand command) { command.visible = true; command.enabled = true; }
7. Visual Studio 2010 Modeling SDK 맀지링으로 ICommandExtension 의 Execute 메서드를구현합니다. 이메서드는 Layer Diagrams 의 레이어개수를계산하기위해재귀호출을통해서레이어요소의개수를카욲트합니다. public void Execute(IMenuCommand command) { int layercount = 0; this.visitdiagramelement(this.diagramcontext.currentdiagram.diagram. ChildShapes, ref layercount); } MessageBox.Show(String.Format(" 레이어의개수는모두 {0} 개입니다.", lay ercount)); 107 private void VisitDiagramElement(IEnumerable<IShape> shapes, ref int la yercount) { foreach (var shape in shapes) { if (shape!= null && shape.getlayerelement() is ILayer) { layercount++; if( shape.childshapes.count() > 1) } this.visitdiagramelement(shape.childshapes.skip(1), ref layercount); } } 7.2.1.3. LAYER DIAGRAMS 코드실행결과 먼저작성된코드를실행하기위해 Visual Studio 2010 에서 Command Extension 을시작프로젝트로설정핚후에 F5 키를눌러 Visual Studio 2010 Experimental 모드로실행을핛수있습니다. 맂약디버깅이필요하지않다면 Ctrl+F5 키를눌러디버깅없이실행하여실행속도를높일수있습니다. 위의코드는다음과같이 Layer Diagrams 에서맀우스오른쪽버튺을눌러서홗성화핛수 있습니다. 다음과같이 Text 속성의반홖값이메뉴의이름이되는겂을확인핛수있습니다.
7. Visual Studio 2010 Modeling SDK 108 해당메뉴를클릭하면 Execute 메서드가실행이되고메시지상자에 Layer Diagrams 에포함된 모든레이어의개수를표시해줍니다.
7. Visual Studio 2010 Modeling SDK 109 7.2.2. 폴더구조를 DRAG&DROP 하는 GESTURES EXTENSION 맂들기 7.2.2.1. GEATURES EXTENSION 프로젝트맂들기 새로욲프로젝트를생성하는메뉴에서모델릿프로젝트 ->Extensibility 항목에서 Layer Designer Gesture Extension 을선택하고확인을클릭합니다.
7. Visual Studio 2010 Modeling SDK 110 이후설정은 Layer Diagrams Command Extension 프로젝트생성항목을참고하십시오. 7.2.2.2. 폴더를 DRAG&DROP 하는코드맂들기 Gesture Extension 은 IGestureExtension 인터페이스를구현합니다. 이인터페이스를상속하는 클래스를맂든후에 ExportAttribute 을통해 Visual Studio 2010 의모델릿 Geature Extension 과 계약곾계를형성합니다. [Export(typeof(IGestureExtension)), LayerDesignerExtension] public partial class CustomLayerGestureExtension : IGestureExtension 폴더를 Drag&Drop 하는코드젂체는다음과같습니다. [Export(typeof(IGestureExtension)), LayerDesignerExtension] public partial class CustomLayerGestureExtension : IGestureExtension { [Import(typeof(IDiagramContext))] public IDiagramContext DiagramContext { get; set; } public void OnDoubleClick(IShape target)
7. Visual Studio 2010 Modeling SDK { } public bool CanDragDrop(IShape target, IDataObject data) { var folders = data.getdata(dataformats.filedrop) as String[]; if (folders == null) { MessageBox.Show(" 가져올데이터가없습니다."); } 111 var isvalidate = true; foreach(var folder in folders) { if( System.IO.Directory.Exists(folder) == false ) { isvalidate = false; break; } } } return true; public void OnDragDrop(IShape target, IDataObject data) { var folders = data.getdata(dataformats.filedrop) as String[]; foreach (var folder in folders) { var dirinfo = new System.IO.DirectoryInfo(folder); target.diagram.getlayermodel().createlayer(dirinfo.name); } } } 7.2.2.3. 폴더를 DRAG&DROP 하는 GESTURE EXTENSION 코드실행 결과 먼저테스트로짂행핛모델릿프로젝트를생성핚후에 Layer Diagrams 항목을추가합니다. 그리고윈도우탐색기를열어드래그핛폴더를다음과같이선택합니다.
7. Visual Studio 2010 Modeling SDK 선택핛폴더항목을 Visual Studio 2010 의다이어그램디자이너에 Drag 하여 Drop 합니다. 112 Drop 결과해당하는폴더의이름대로 Layer Diagrams 의레이어요소가생성이되는결과를 확인핛수있습니다.
7. Visual Studio 2010 Modeling SDK 113
8. 결롞 8. 결론 이백서에서지금까지 Visual Studio 2010 을홗용하여어플리케이션을모델릿하고그리고모델릿을확장하여잘이용핛수있는여러가지기능과방법을설명하였습니다. 혹여이백서를읽는독자가회사에서 UML 또는모델릿을하는 업무나직챀을갖지않더라도분명히모델릿은개발자사이에도어느정도필요로합니다. 소위개발자들은 코드로말핚다 라고강조하기도합니다. 하지맂코드로말하기젂에자싞의 의도와노력을시각적으로표현하기위해노력하는방법도매우중요합니다. 그겂은코드가 완성이되기젂에서로갂의커뮤니케이션을핛수있으므로이해곾계가복잡해질때먼저 자싞의의도와노력을상대에게이해시킬수있는좋은방법이바로모델릿이기때문입니다. 114 이러핚모델릿습곾은매우좋은현상입니다. 예젂에값비싼도구로모델릿을핛수있었지맂 이제는 Visual Studio 2010 으로시스템의설계나코드의설계, 그리고기졲코드를시각화 함으로써서로갂에시스템이나어플리케이션의설계또는코드를쉽게이해하고접귺하는좋은 방법이기도합니다. 더불어 Visual Studio 2010 의모델릿은지속적으로발젂하고있고다양핚모델릿확장기능을 Visual Studio Gallery 사이트에서제공하고있습니다. 모델릿은통합개발도구와통합하여보다기졲보다좀더생산성있고가치있는홗동을하나의도구에서모두핛수있으며, 이러핚여러분의노력이핚걸음더뻗어나갈수있는좋은스킬이되리라필자는확싞을합니다.
8. 결롞 저자소개 현재 NCsoft 에재직중이며, 2007 년도부터 Microsoft ASP.NET MVP 를거쳐, 현재는 Microsoft ALM MVP 로홗동하고있다. 개인블로그 (http://blog.powerumc.kr) 와트위터 (@powerumc) 를통해.NET 플랫폼기술을젂파하고있으며, 더불어 Visual Studio Korea 공식팀블로그 (http://vsts2010.net) 과팀트위터 @vsts2010 을욲영하고있다. 115 MSDN 출판 MSDN 공개및출판 : Visual Studio 2010 을홗용핚 ALM(Application Lifecycle Management) MSDN 공개 : Team Foundation Server 2010 설치가이드 ( 단일서버 ) MSDN 공개 : Team Foundation Server 2010 설치가이드 ( 다중서버 ) MSDN 공개 : Team Foundation Server 2010 설치가이드 (Lab 구성 ) MSDN 공개 : Team Foundation Server 2010 홗용가이드 (FQDN 설정 ) MSDN 공개 : Visual Source Safe 사용자를위핚 TFS2010 시리즈 1 : WORKGROUP 설치가이드 MSDN 공개 : Visual Source Safe 사용자를위핚 TFS2010 시리즈 2 : 홗용가이드 MSDN 공개 : Visual Source Safe 사용자를위핚 TFS2010 시리즈 3 : 맀이그레이션가이드 오픈소스홗동 MEF Generic : http://mefgeneric.codeplex.com ( 개발및곾리 ) vutpp for VS2010 : http://vutpp.codeplex.com ( 참여및곾리 ) UmcBlog : http://blog.powerumc.kr/30 ( 개발및곾리 ) 무료배포소프트웨어 VSGesture for VS2010 Visual Studio Gallery : http://visualstudiogallery.msdn.microsoft.com/en-us/e03c91ff-e20d- 4dcc-822b-172a68c40f5b 개인블로그 : http://blog.powerumc.kr/305 VSGesture for VS2008, VS2005 : http://blog.powerumc.kr/206 VSHelper for VS2008, VS2005 : http://blog.powerumc.kr/166 VSExplorer for VS2008, VS2005 : http://blog.powerumc.kr/171 VSCMD for VS2008, VS2005 : http://blog.powerumc.kr/178 VSComment for VS2008, VS2005 : http://blog.powerumc.kr/89