Team Report Introduction to OOAD using UML tools 과목명 : 소프트웨어공학개론담당 : 유준범교수님제출일 : 2010. 10. 27 8조 200310548 이정우 200911364 곽수미 200911372 김민하 200911373 김바울
목차 1. OOAD (orient analysis and design) 1-1. OOAD 란? 1-2. Object Attributes 와 Operation 1-3. 모델과모델링 1-4. 객체지향설계 1-5. 객체지향설계원칙 2. UML 2-1. UML(Unified Modeling Language) 이란? 2-2. UML 을이용한모델링의특성 2-3. UML 의구성요소 3. UML 도구를사용하여, OOAD 를수행 3-1UML 모델및다이어그램 3-2. 관련작업
1. OOAD (orient analysis and design) 1-1. OOAD 란? OOAD란소프트웨어를개발하는하나의방법론으로모든소프트웨어시스템의주요기본요소를사물을가리키는객체와그객체들을하나의집합으로묶은클래스로구성하는객체지향적인분석과설계방법을말합니다. 객체지향적이란것은현실계에실재하는사물, 즉객체들을지향한다는것입니다. 예를들어쇼핑몰을구축한다고가정할때여기서의객체는 " 고객, 상품, 결재계좌등 " 이라할수있고객체지향적이라는것은바로이러한실재생활들을보다편리하고빠르게이용할수있게하는프로그램을현실생활에기초해서설계하는개념입니다. 객체지향이란개념은이러한실용성때문에최근에급속히확장해가고있습니다. 1-2. Object Attributes 와 Operation Attributes는 Property 즉 " 속성 " 이라는뜻이며, 객체나데이터가갖고있는특성을추출해사용합니다. 주로명사형으로표현되어지고예를들자면 자동차라는클래스에서엔진, 휠, 핸들등과같은객체 를말합니다. Operation은객체에행동 (Action) 을부여하여객체로하여금어떠한행동을취하게하는역할을합니다. 주로 Class File 에서는 "Method" 라고말합니다. 예를들자면자동차를 운전하다, 세차하다, 팔다, 새로사다 라는동사형으로표현되어집니다. Abstract는추상화라고도하며 " 명사와동사를추출하는것 " 을말합니다. 실제객체를프로그램으로응용해내는것입니다. 이과정이가장중요한과정인데, 추상화를어떻게하느냐에따라클래스설계가결정됩니다. 이것이모델링의핵심과정이고성패를결정짓는주요요소입니다. 1-3. 모델과모델링 모델이란하나의시스템을개발하는데있어현실을추상화시켜놓은청사진을말합니다. 그리고모델링이란정보시스템설계모델을실제현실세계에맞게구현하는작업을말합니다. 이러한모델이필요한이유는미리모델을만들어보면서앞으로개발하려는시스템을좀더구체적이고도명확하게인식할수있기때문입니다. 따라서모델링은시스템을현재또는원하는모습으로가시화하도록도움을주기때문에중요합니다. 1-4. 객체지향설계 1) 객체모델링단계 클래스를만들기위한작업을의미합니다. 추상화단계라고도합니다. 컴퓨터를예를들어 보면컴퓨터란사물 ( 객체 ) 를처리하기위해각종컴퓨터가가지고있는특성을분리하고분
리된특성의공통점을뽑아내는데이때, CPU, 메모리, HDD, 모니터등등이아마도컴퓨터 특성의공통점이될것입니다. 2) 클래스정의단계객체모델링단계에서산출된공통점을가지고실제로컴퓨터가처리할수있는구조로바꾸는단계입니다. 메모리에용량, 제조사, 속도등의욧가있는데, 이러한요소들을어떤방법을사용하여어떤처리를하고어떤결과를산출할지를설계하고만든는단계가클래스정의단계입니다. 3) 객체생성과사용정의된클래스를메모리에적재해서사용하는단계입니다. 클래스를정의했다고메모리에적재되는것은아닙니다. 클래스를사용하기위해서는클래스를인스턴스 (Instance) 화하여야하는데이인스턴스가객체라고할수있습니다. 1-5. 객체지향설계원칙 1) SRP - 단일책임원칙 (Single Responsibility Principle) : 클래스는단한가지의변경이유 ( 책임 ) 만을가져야합니다. 2) OCP - 개방-폐쇄원칙 (Open-Closed Principle) : 소프트웨어개체 ( 클래스, 모듈, 함수등등 ) 는확장에대해열려있어야하고, 수정에대해서는닫혀있어야합니다. 3) LSP - Liskov 교체원칙 (Liskov Substitution Principle) : 하위타입 (Sub type) 은그것의기반타입 (Base type) 에대해치환가능해야합니다. 4) DIP - 의존관계역전원칙 (Dependency Inversion Principle) : - 상위수준의모듈은하위수준의모듈에의존해서는안됩니다. 둘모두추상화에의존해야한다. - 추상화는구체적인사항에의존해서는안됩니다. 구체적인사항은추상화에의존해야합니다. 5) ISP - 인터페이스격리원칙 (Interface Segregation Principle) : 클라이언트가자신이사용하지않는메소드에의존하도록강제되어서는안됩니다. 2. UML 2-1. UML(Unified Modeling Language) 이란? UML 이란소프트웨어개발과정에서산출되는산출물들을명시, 개발, 문서화하기위한
모델링언어입니다. 1) 가시화언어 : 개념모델작성, 오류없이전달, 의사소통의용이, Graphic 언어 2) 명세화언어 : 정확한모델제시, 완전한모델작성, 분석, 설계의결정표현 3) 구축언어 : 다양한 Prog. 언어와연결, 왕복공학가능, ( 순공학 / 역공학 ) 실행시스템예측가능 4) 문서화언어 : 시스템에대한통제, 평가, 의사소통의문서 ( 요구사항, Architecture, 설계, Source Code, Project 계획,Test, Prototype, Release) 2-2. UML 을이용한모델링의특성 사용사례분석기법을사용하여사용자관점에서의업무과정을포착할수있고업무객체와업무논리를포착할수있도록하는커뮤니케이션도구로써업무객체와업무논리로부터응용시스템을분석하고설계할수있도록합니다. 또시스템의복잡성을관리할수있도록하여사람이보통한번에효과적으로다룰수있는한계를넘을수있고소프트웨어의아키텍처를정의할수있도록하여프로그래밍언어, 시스템구현환경과독립적으로시스템을모델링할수있습니다. (3계층소프트웨어아키텍처에따라사용자인터페이스는비쥬얼베이직혹은자바, 업무논리는 C++ 혹은자바, 데이터베이스서버는 C++ 과 SQL로구현 ) 재사용가능한시스템구성컴포넌트를모델링함으로써재사용을촉진시켜이를여러시스템에서사용할수있습니다. 2-3. UML 의구성요소 1) UML의사물 (thing) UML의사물 (thing) 에는구조사물 (structural things), 행동사물 (behavioral things), 그룹사물 (groupings things), 주해사물 (annotational things) 이 4가지종류가있습니다. (1) 구조사물 (structural things) : 보통명사형으로표현되어모델의정적인부분을표현합니다. 구조사물의용어로는클래스 ( 동일한속성, 오퍼레이션, 관계, 그리고의미를공유하는객체들을기술 ), 인터페이스 ( 클래스또는컴포넌트의서비스를명세화하는오퍼레이션들의집합 ), 쓰임새 ( 시스템이수행하는순차적활동들을기술하며, 행위자 (actor) 와반응 ), 컴포넌트, 노드등이있습니다. (2) 행동사물 (behavioral things) : UML모델의동적인부분을표현하며시간과공간에따른행동을표현합니다. 용어로는교류 (interaction), 상태머신 ( 상태의순서를지정하는행동 ) 이있습니다. (3) 그룹사물 (groupings things) : UML모델을조직하는부분입니다. (4) 주해사물 (annotational things) 은 UML모델을설명하는부분으로모델의어떠한요소들에대하여명확하게설명하고정하는것입니다.
2) UML의관계 UML의관계를알기위해먼저클래스에대해보면혼자서존재하는클래스는거의없으며, 다양한방식으로다른사물과교류하는것을알수있습니다. 클래스를먼저파악하고나면, 클래스들간의관계에주목해야하는데의존, 연관, 일반화, 실체화의 4가지관계가있습니다. 첫째로, 의존 (dependency) 관계란한쪽사물의변화가다른사물에영향을주는관계로서한쪽의변화가다른쪽에영향을미치는경우입니다. 두번째, 일반화 (generalization) 관계는특수화 (specialization)/ 일반화 (generalization) 관계라 고도하며보다일반적인클래스와이클래스와완전한일관성을가지며보다상세하고추 가적인정보를제공하는클래스간의분류학적관계입니다. 세번째, 연관 (association) 관계는객체들간의링크 ( 연결 ) 가있음을표현하는것으로어느한사물객체가다른사물객체와연결되어있음을나타냅니다. 연관관계에는두가지가있는데먼저집합연관 (aggregation) 관계는전체 / 부분관계이며전체와부분은서로독립적으로창조되고파괴됩니다. 복합연관 (composition) 관계도전체 / 부분관계이며부분의창조와파괴는전체의결과로서일어남 ( 동일한수명을가짐 ) 을뜻합니다. (1) 집합연관 (aggregation) 관계 (2) 복합연관 (composition) 관계 예 : 어느특정윈도우가두개의스크롤바, 제목, 그리고본체로구성되어있다면윈도우가 없어지면이들구성요소들도없어지게됩니다. 마지막으로실체화 (realization) 관계는한쪽분류자는다른쪽분류자가수행하기로되어있 는계약을명세화하며, 일반화와의존관계의절충을뜻합니다.
3) UML의도해 (1) Use Case 다이어그램먼저 Use Case는사용자의시스템에대한요건을이해하기위한것으로, 가장근본적인요소입니다. Use case는이후의모든시스템분석, 설계, 개발, 시험에걸쳐영향을미치게되며, 개발진행기간동안시스템의행위에대한테스트의기본이됩니다. Use Case는시스템의사용자입장에서의기능적인요구사항과시스템내에서혹은외부시스템과의상호작용하는행위들의집합을나타내야하며, 이러한모든 Use Case는내부의구현을생각하지않습니다. Actor는 Use Case와의상호작용시에 Use Case를사용하는사용자의역할들의집합을말하며, 사람뿐만아니라하드웨어디바이스, 다른외부시스템등이될수있습니다. Use Case 다이어그램은시스템의 Use Case View를모델링하는다이어그램입니다. Use Case View란시스템의구현을배제하고시스템전체혹은시스템의일부분과외부와의상호작용및시스템자체의행위 (Behavior) 등을보는관점을나타냅니다. Use Case 다이어그램이필요한이유는, 다른 Use Case들간관계뿐만아니라사용자와개발자, 시스템설계자와의의사소통도구가되고개발자에게시스템의범위와시스템의기능적요구사항들을시각화하여쉬운이해를제공하기때문입니다. Use Case 다이어그램의모델링순서로는모든 Actor들을추출하여 Actor중좀더일반적인혹은더특화된 Actor들을선별하여구성합니다. 각 Actor에관한상호작용에서 Use Case를추출하여이러한상호작용을통한상태의변화를 Use Case로추출합니다. 여기서추출된 Use Case에서좀더일반적인혹은특화된 Use Case로구성합니다. Use Case는다이어그램중간에타원을그려서, 타원의중앙또는아래에 Use Case의이름을적습니다. Actor를그리려면다이어그램의왼쪽이나오른쪽에사람모양을그려넣습니다. 다이어그램에 Use Case가없다는것은시스템이수행하지않은일을보여주고있는것입니다. 따라서다이어그램에제공된명확하고간단한 Use Case 설명을통해시스템에필요한기능이존재하는지의여부를쉽게알수있습니다. 예 : 신용카드인증시스템 Actor의추출 - 신용카드를사용하는개인고객, 단체고객 - 신용카드로거래를하는소매기관 - 고객의신용상태를처리하는기관 Use Case의추출 - 고객이신용카드를사용하여카드거래를합니다. - 거래에대한대금을처리합니다. - 고객개인의계좌를관리합니다. 이러한 Use Case 를가지고 UML 을표현하는도해로는클래스도 (Class diagram), 객체다 이어그램 (Object diagram), 쓰임새다이어그램 (Use case diagram), 순차다이어그램 (Sequence diagram), 협력다이어그램 (Collaboration diagram), 상태다이어그램
-> 클래스이름 -> 클래스속성 (Statechart diagram), 활동 -> 클래스다이어그램메소드(Activity diagram), 컴포넌트 다이어그램 (Component diagram), 배치다이어그램 (Deployment diagram) 가있다. (2) 클래스다이어그램 (Class diagram) 클래스다이어그램은다른엔티티들 ( 사람, 제품, 데이터 ) 이서로어떻게관계를맺고있는지를보여줍니다. 개별적인객체라기보다는동일한속성, 오퍼레이션, 관계, 그리고의미를공유하는객체집합으로시스템의어휘모델링입니다. 다시말해서, 이것은시스템의정적구조라고할수있습니다. 클래스에는가시성 (visibility), 다중성 (multiplicity) 이라는두가지특성이있는데, 먼저가시성 (visibility) 이란속성이나오퍼레이션을다른분류자에의해사용될수있는지여부를지정하는것으로서특징으로서는공용 (public) 특성 ( 모든외부분류자들이사용할수있음-"+"), 보호 (protected) 특성 ( 이분류자의모든자식들이사용할수있음 -"#"), 전용 (private) 특성 ( 이분류자자신만이사용할수있음-"-") 이있습니다. 여기서의분류자란구조적, 행동적특성을설명하기위한메커니즘으로클래스, 컴포넌트, 노드, 쓰임새등이있습니다. 다중성 (multiplicity) 이란하나의클래스가가질수있는인스턴스수와특정실체에잠정적으로허용가능한관계수의범위를뜻하는특성이며, '1..*1..1 0..*' 등으로표현합니다. 클래스다이어그램의클래스객체는세개의섹션으로설명합니다. 위섹션은클래스의이름, 중간섹션은클래스의속성, 가장아래섹션은클래스의메소드를나타냅니다. 클래스다이어그램의경우상속관계를그릴때에는화살표방향을위로향하게하여수퍼클래스를지시하게하면서화살표모양은완벽한삼각형이되도록해야합니다. 상관관계는두클래스들이서로를인식하고있다면일직선이되어야하고, 클래스의한편만알고있는관계라면화살표표시가되어있는선을그어야합니다. (3) 객체다이어그램 (Object diagram)
<<import>> 객체는클래스로부터생성되는한인스턴스라고도하며클래스와동일한관계를갖습니다. 다음예와같이객체이름 : 클래스이름으로표현되거나객체이름이생략되기도합니다. <<import>> (4) 패키지다이어그램 (packages diagram) 요소들을그룹으로조직하기위한범용메커니즘으로수입 (import) 과수출 (export) 로표현합니다. 한패키지가수출하는부분은그패키지를명시적으로수입하는패키지의내용물들에만보이며그룹에접근이가능하더라도그룹내부에서보호되는것에는접근이불가능합니다. 예 : 위그림에서 policies는명시적으로 GUI 패키지를수입하고있습니다. 따라서 policies 패키지의내용물들은 GUI::window와 GUI::Form을볼수있습니다. 그러나 GUI::EventHandler는보호되어있으므로볼수없으며, Server패키지는 GUI를수입하지않으므로어떤내용물에도접근할수없습니다. (5) 교류다이어그램
교류다이어그램에는순차다이어그램 (Sequence diagram) 과협력다이어그램 (Collaboration diagram) 이있습니다. - 순차다이어그램 (Sequence diagram) : 객체들이어떻게상호작용하는지를메시지순서에초점을맞추어보여주는다이어그램으로 2차원으로그려지며세로축아래방향으로는발생시간순서로메시지 / 호출의흐름을의미하고가로축은메시지가전송되는일련의객체인스턴스로구성됩니다. - 협력다이어그램 (Collaboration diagram) : 교류에참여하는객체의구조를강조하며객체역할간의관계를보여주고상호작용이일어나는객체와그들간의연결을중심으로상호작용을표현합니다. (6) 상태다이어그램 (state diagram) 객체는시간에따라각기다른상태에있을수있는데, 상태다이어그램 (state diagram) 을통하여시간에따른상태의변화를나타낼수있습니다. 예 : 세탁기의단계별상태변화 이처럼여러가지의다이어그램을사용하게되면설계된시스템의가능한모든시점의다 이어그램이포함되어있어서각각의 UML 다이어그램은자신이나타내고있는시점을하나 로합칠수있는수단을제공하여모든참여자를만족시키게됩니다.
3. UML 도구를사용하여, OOAD 를수행 3-1UML 모델및다이어그램 모델을만들고다이어그램을추가합니다. UML 모델작업 모델을편집하기위해다이어그램을그립니다. 모델을다른팀멤버가작업할수있는단위로나누기위해패키지를만듭니다. 특정한목적으로표준 UML 모델요소를확장하기위해스테레오타입을사용하여모델요소를사용자지정합니다. 작업, 테스트사례, 버그, 요구사항, 문제점또는모델의특정파트와연결된다른작업유형등을추적할수있도록작업항목을모델요소에연결합니다. Visual Studio Ultimate 을사용하지않는사람을포함하여다른사용자와공유할수있도록모델과다이어그램을저장합니다. 1) UML 모델링다이어그램만들기 -모델링프로젝트에다이어그램만들기다이어그램을만들어프로젝트에추가하려면 1 메뉴에서새다이어그램을클릭하면새다이어그램추가대화상자가나타납니다.
2 원하는모델링다이어그램의형식을클릭합니다. 3 새다이어그램의이름을입력합니다. 4 모델링프로젝트에추가상자에서다음을수행합니다. - 솔루션에이미있는모델링프로젝트를선택하고확인을클릭합니다. 2) UML 모델링다이어그램그리기모델링다이어그램에는관계로연결된모델요소의컬렉션이표시됩니다. 각요소는모양으로표시되고각관계는두모양사이의연결선으로표시됩니다. 두가지종류의도구가있는데, 하나는요소에사용되고다른하나는관계에사용됩니다. 예를들어 UML 클래스다이어그램도구상자에서클래스는요소도구이고연결은관계도구입니다. 다이어그램 동작다이어그램구성요소다이어그램클래스다이어그램시퀀스다이어그램사용사례다이어그램레이어다이어그램 나타내는요소 비즈니스프로세스에서참가자와동작간의워크플로 시스템구성요소, 구성요소의인터페이스, 포트및관계 시스템에서데이터를저장하고교환하는데사용되는형식및형식관계개체, 구성요소, 시스템또는행위자간의상호작용시퀀스 시스템에서지원하는사용자목표및작업 코드에서서로다른파트간의종속성 - 동작다이어그램
간단한제어흐름 분기와루프를사용하여동작시퀀스를나타낼수있습니다. 모양요소설명및주속성 1 동작 2 제어흐름 사용자또는소프트웨어가일부작업을수행하는작업내부단계입니다. 들어오는모든흐름에토큰이도달하면동작이시작될수있습니다. 동작이끝나면보내는모든흐름에토큰이전송됩니다. 본문 - 동작을자세하게지정합니다. 언어 - 본문의식언어입니다. 로컬사후조건 - 실행이끝날때충족되어야하는제약조건이며동작을통해달성하는목표입니다. 로컬사전조건 - 실행이시작되기전에충족되어야할제약조건입니다. 동작간의제어흐름을보여주는연결선입니다. 다이어그램을해석하려면토큰이한동작에서다음동작으로이동하는경우를가정해봅니다. 제어흐름을만들려면연결선도구를사용합니다. 3 초기노드 작업에서하나이상의첫번째동작을나타냅니다. 작업이시작되면초기노드에서토큰이이동합니다. 4 동작최종노드 작업의끝입니다. 토큰이도착하면작업이종료됩니다. 5 의사결정노드 흐름에서조건부분기입니다. 하나의입력과둘이상의출력을포함합니다. 들어오는토큰은한출력에서만나타납니다. 6 가드 토큰이연결선을따라흐를수있는지여부를지정하는조건입니다. 의사결정노드의보내는흐름에서주로사용됩니다. 가드를설정하려면흐름을마우스오른쪽단추로클릭하고속성을클릭한다음, 가드속성을설정합니다. 7 병합노드 의사결정노드로분할된흐름을병합하는데필요합니다. 둘이상의입력과하나의출력을포함합니다. 어떤입력의토큰이라도출력에서나타납니다. 8 주석 연결된요소에대한추가정보를제공합니다. 다른동작다이어그램에서보다자세하게정의되는동작입니다. 9 동작호출동작 ( 표시되지않음 ) 동기 - true 이면작업이종료할때까지동작이대기합니다. 동작 - 호출된동작입니다. 작업호출동작클래스인스턴스에서작업을호출하는동작입니다. 동작 UML 동작다이어그램 동작다이어그램에서나타내는워크플로입니다. 동작의속성을표시하려면 UML 모델탐색기에서해당동작을선택해야합니다. 읽기전용 - true 이면개체의상태를변경하지않아야합니다. 단일실행 - true 이면한번에이다이어그램을실행할수있는횟수가최대 1 회입니다. 동작을표시하는다이어그램입니다. 속성을표시하려면다이어그램의빈부분을클릭합니다.
동작다이어그램의이름, 다이어그램을포함하는파일및다이 어그램에서표시하는동작이모두다를수있습니다. - 동시흐름 동시에실행되는동작의시퀀스를기술할수있습니다. 모양 요소 11 분기노드 12 조인노드 13 14 신호보내기동작 이벤트적용동작 설명 단일흐름을동시흐름으로나눕니다. 들어오는각토큰은보내는각연결선에서토큰을생성합니다. 동시흐름을단일흐름으로결합합니다. 들어오는모든흐름에대기중인토큰이있는경우출력에서토큰이생성됩니다. 다른동작또는같은동작의동시스레드에메시지나신호를보내는동작입니다. 메시지의형식과내용은동작의제목에포함되거나추가주석에지정됩니다. 이동작은데이터를신호로전송하며이렇게신호로전송된데이터는입력핀 (16) 또는개체흐름의동작에전달될수있습니다. 동작을계속하기전에메시지또는신호를기다리는동작입니다. 이동작에서받을수있는메시지의형식은제목에포함되거나추가주석이지정됩니다. 동작에들어오는제어흐름이없으면메시지를받을때마다토큰을생성합니다. 이동작은데이터를신호로받으며이렇게신호로받은데이터는출력핀 (17) 또는개체흐름에전달될수있습니다. 역마샬링 - true 이면형식화된출력핀이여러개있을수있
으며데이터가이러한출력핀으로역마샬링됩니다. false 이면모든데이터가한핀에나타납니다. -데이터흐름동작간의데이터흐름을기술할수있습니다. 이단원에사용되는요소에대한자세한내용은 Guidelines for Drawing an Activity Diagram을항목의 Drawing Data Flows 단원을참조하십시오. 모양 요소 설명 흐름을따라지나가는데이터를나타냅니다. 15 개체노드 16 입력핀 17 출력핀 18 동작매개변수노드 순서지정 - 여러토큰이저장되는방식입니다. 선택영역 - 다른다이어그램에정의할수있는데이터필터링프로세스를호출합니다. 상한 - 0 은데이터가흐름을바로지나가야한다는것을나타내고 * 는데이터를흐름에저장할수있다는것을나타냅니다. 형식 - 저장및전송된개체의형식입니다. 동작이실행될때받을수있는데이터를나타냅니다. 형식 - 전송된개체의형식입니다. 동작이실행될때생성되는데이터를나타냅니다. 형식 - 전송된개체의형식입니다. 동작에의해데이터를생성하거나받을때사용할수있는개체노드입니다. 다이어그램에서나타내는동작이다른동작에서호출되거나다이어그램에서작업또는기능을기술할때사용됩니다. 형식 - 전송된개체의형식입니다.
( 표시되지않음 ) 개체흐름 동작과개체노드간의데이터흐름을보여주는연결선입니다. 개체흐름을만들려면연결선도구를사용하여입력핀이나출력핀또는개체노드를다른요소에연결합니다. 선택영역 - 다른다이어그램에정의할수있는데이터필터링프로세스를호출합니다. 변환 - 다른다이어그램에정의할수있는데이터변환프로세스를호출합니다. 멀티캐스트 - 수신자개체또는구성요소가여러개있을수있음을나타냅니다. 다중수신 - 여러개체또는구성요소로부터입력을받을수있음을나타냅니다. - 구성요소다이어그램 모양요소설명및주속성 1 구성요소 2 3 제공된인터페이스포트필요한인터페이 재사용가능한시스템기능요소입니다. 구성요소는인터페이스를통해동작을제공하고사용하며다른구성요소를사용할수있습니다. 확장 / 축소컨트롤 (9) 을사용하여구성요소의내부파트를숨기거나표시할수있습니다. 구성요소는클래스의한종류입니다. 간접인스턴스화됨true( 기본값 ) 이면구성요소가디자인아티팩트로만존재하고런타임에파트만존재합니다. 구성요소에서구현하고다른구성요소나외부시스템에서사용할수있는그룹메시지또는호출을나타냅니다. 포트는인터페이스를형식으로갖는구성요소의속성입니다. 구성요소에서다른구성요소나외부시스템에보내는그룹메시지또는호출을나타냅니다. 구성요소는최소한이러한작업을제공하는구성
스포트 4 종속성 5 파트 6 파트어셈블리 7 위임 8 일반화 9 ( 표시되지않음 ) 축소 / 확장컨트롤 주석 요소와결합하도록디자인되었습니다. 포트는인터페이스를형식으로갖습니다. 한구성요소의필요한인터페이스가다른구성요소의제공된인터페이스에의해충족된다는것을나타내는데사용할수있습니다. 종속성은모델요소간에한요소의디자인이다른요소의디자인에의존한다는것을나타낼때좀더일반적으로사용될수있습니다. 일반적으로다른구성요소를형식으로갖는구성요소의특성입니다. 파트는부모구성요소의내부디자인에사용되며부모구성요소내에중첩된모양으로표시됩니다. 기존구성요소형식의파트를만들려면 UML 모델탐색기의구성요소를소유자구성요소로끌어옵니다. 새형식의파트를만들려면구성요소도구를클릭하고소유자구성요소를클릭합니다. 예를들어 Car 구성요소에는 engine:carengine, backleft:wheel, frontright:wheel 등의파트가있습니다. 둘이상의파트에같은형식을사용할수있으며서로다른구성요소에같은형식의파트가있을수있습니다. 형식. 모델에서다른곳에정의되는파트의형식입니다. 일반적으로형식은또하나의구성요소입니다. 복합성. 기본값은 1입니다. 이값을 0..1로설정하여파트가 null 값을가질수있음을나타내거나, * 로설정하여파트가특정형식의인스턴스컬렉션임을나타내거나, 숫자범위로확인되는식으로설정할수있습니다. 한파트의필요한인터페이스포트와다른파트의제공된인터페이스포트간연결입니다. 파트어셈블리는구성요소에따라다르게구현될수있습니다. 연결된파트에는동일한부모구성요소가있어야합니다. 구성요소에포함된한파트의인터페이스에포트를연결합니다. 구성요소에전송되는메시지가파트에서처리되거나, 파트에서보내는메시지가부모구성요소에서전송된다는것을나타냅니다. 한구성요소가다른구성요소에서상속됨을나타냅니다. 파트와인터페이스는상속됩니다. 이컨트롤을사용하면구성요소의내부파트를숨기거나표시할수있습니다. 추가설명이필요한경우사용합니다. 연결선도구를사용하여다이어그램의여러요소에주석을연결할수있습니다. - 클래스다이어그램 UML 클래스다이어그램형식의속성 속성 정규화된이름 기본값 속성이나타나는요소 설명 이름 기본이름 모든요소 요소를식별합니다. 포함하는 패키지 :: 형식 모든요소 이름 접두사가지정됩니다. 색 형식종류의기본값 모든요소 요소를고유하게식별합니다. 요소를포함하는패키지의정규화된이름으로 이도형의색입니다. 다른속성과달리이속성은기본모델요소의속성이아닙니다. 같은형식의여러뷰에서로다른색을사용할수있습니다.
추상 False 클래스 리프 False 클래스, 인터페이스 활성 False 클래스 표시유형 작업항목 공용 클래스, 인터페이스, 열거형 0 개연결모든요소 설명 ( 비어있음 ) 모든요소 템플릿바인딩 템플릿매개변수 ( 없음 ) ( 없음 ) 클래스, 인터페이스, 열거형 클래스, 인터페이스, 열거형 true이면클래스를인스턴스화할수없으며기본클래스로사용됩니다. true이면형식이파생형식을가질수없습니다. true이면이형식의각인스턴스가컨트롤스레드와연결됩니다. 공용 - 전체에표시됩니다. 전용 - 이형식은자신을소유하는패키지내에표시됩니다. 패키지 - 패키지내에서만표시됩니다. 이요소와연결된작업항목의수입니다. 항목에대한전반적인설명을여기에입력할수있습니다. 비어있지않으면이형식은매개변수값을이템플릿클래스에바인딩하여정의됩니다. 템플릿매개변수의바인딩을표시하려면이속성을확장합니다. 비어있지않으면이속성은여기나열된매개변수를포함하는템플릿클래스입니다. 매개변수를추가하거나각매개변수의속성을보려면 [ ] 모양을클릭합니다. -UML 클래스다이어그램특성의속성특성시그니처는 UML 클래스다이어그램의클래스또는인터페이스에서해당특성을나타내는줄입니다. 시그니처형태는다음과같습니다. + AttributeName : TypeName [*] + 는공용표시유형을나타냅니다.-( 전용 ), #( 보호됨 ), ~( 패키지 ) 등의값도허용됩니다. 특성이정적이면 AttributeName에밑줄이표시됩니다. 특성에형식이없으면 : TypeName이생략됩니다. [*] 는복합성을나타냅니다. 따라서복합성이 1이면생략됩니다. 속성 기본값 설명 기본값 ( 비어있음 ) 분류자가인스턴스화되는경우특성의값입니다. 읽기전 False true 이면특성의값을변경할수없습니다. 정적 False true이면이특성의단일값이이형식의모든인스턴스에서공유됩니다. true이면다이어그램에나타날때특성이름에밑줄이표시됩니다. 이름 ( 새 소유하는분류자내에서고유해야합니다.
이름 ) 형식 ( 없음 ) 표시유형 작업항목 공용 0 개연결 정수와같은기본형식이거나모델에정의된형식입니다. 이속성에새형식의이름을입력하면 UML 모델탐색기의지정되지않은형식에형식이추가됩니다. 다음은시그니처에나타나는문자및허용된값입니다. + 공용 - 전체에표시됩니다. - 전용 - 소유하는형식외부에표시되지않습니다. # 보호됨 - 소유자로부터파생된형식에표시됩니다. ~ 패키지 - 같은패키지에있는다른형식에표시됩니다. 연결된작업항목의수입니다. 읽기전용입니다. 리프 False true이면파생형식에서이특성을재정의할수없습니다. 파생 False true이면이특성이다른특성에서계산됩니다. 예를들어 Diagonal 은 Width와 Height에서계산됩니다. 세부정보는설명에작성하거나주석으로연결되어야합니다. 설명 ( 비어전반적인설명을입력하거나, 특성의값에대한제약조건을정의할있음 ) 수있습니다. 1 - 이특성에는지정된형식의단일값이있습니다. 복합성 1 순서지정됨 고유 False False 0..1 - 이특성에는 null 값이있을수있습니다. * - 이특성의값은값컬렉션입니다. 1..* - 이특성의값은적어도하나의값을포함하는컬렉션입니다. n..m - 이특성의값은 n개에서 m개사이의값을포함하는컬렉션입니다. true이면컬렉션이순차목록을구성합니다. 복합성이 1보다큰경우에사용됩니다. true이면컬렉션에중복값이없습니다. 복합성이 1보다큰경우에사용됩니다. -UML 클래스다이어그램작업의속성작업시그니처는 UML 클래스다이어그램의클래스또는인터페이스에서해당작업을나타내는텍스트줄입니다. 시그니처형태는다음과같습니다. + OperationName (parameter1 : Type1 [*],...) : ReturnType [*] + 는공용표시유형을나타냅니다.-( 전용 ), #( 보호됨 ), ~( 패키지 ) 등의값도허용됩니다. OperationName은정적속성이 true이면밑줄이표시되고추상속성이 true이면기울임꼴로표시됩니다. 반환형식이정의되지않으면 : ReturnType이생략됩니다. [*] 는매개변수또는반환형식이다양함을나타냅니다. 따라서복합성이 1이면생략됩니다. 속성 기본값 설명 이름 ( 새이름 ) 포함하는형식내에서고유해야합니다. 매개 ( 없음 ) name:type, name:type, 형식의목록입니다. 목록을편집하려면
변수 반환형식 사후조건사전조건본문조건 표시유형 시그니처 작업항목 동시성 ( 없음 ) ( 없음 ) ( 없음 ) [ ] 기호를클릭합니다. 형식은기본형식이거나모델에정의된형식일수있습니다. 이속성에새형식의이름을입력하면 UML 모델탐색기의지정되지않은형식에형식이추가됩니다. ( 없음 ), 기본형식또는모델에정의된형식입니다. 이속성에새형식의이름을입력하면 UML 모델탐색기의지정되지않은형식에형식이추가됩니다. 작업실행전후에시스템상태의관계를지정하는선택적조건입니다. 작업이실행되기전에시스템상태에대한가정을지정하는선택적조건입니다. ( 없음 ) 작업에서반환하는값에대한선택적제약조건입니다. 공용 +Nam e() 0 개연결 순차 다음은시그니처에나타나는문자및허용된값입니다. + 공용 - 전체에표시됩니다. - 전용 - 소유하는형식외부에표시되지않습니다. # 보호됨 - 소유자로부터파생된형식에표시됩니다. ~ 패키지 - 같은패키지에있는다른형식에표시됩니다. 이작업의표시유형, 이름, 매개변수및반환형식을요약합니다. 다이어그램에서시그니처를편집하거나개별속성을편집하여이러한속성을변경할수있습니다. 연결된작업항목의수입니다. 읽기전용입니다. 순차 - 동시성제어없이작업이디자인됩니다. 이작업을동시에호출하면오류가발생할수있습니다. 가드됨 - 다른인스턴스가완료될때까지자동으로작업이차단됩니다. 동시 - 여러호출을동시에실행할수있도록작업이디자인됩니다. 정적 False true이면이작업은이형식의모든인스턴스에서공유됩니다. true이면다이어그램에나타날때작업이름에밑줄이표시됩니다. 추상 False true이면이작업에코드가연결되지않습니다. 따라서소유클래스는추상적입니다. 리프 False 디자이너는파생클래스에서이작업을재정의할수없도록합니다. 쿼리 False true이면이작업에의해시스템상태가크게변경되지않습니다. 따라서시스템상태를확인하기위한테스트에이속성을사용할수있습니다. 1 - 지정된형식의단일값입니다. 복합성 1 0..1 - null 일수있습니다. * - 지정된형식의값컬렉션입니다. 1..* - 최소한하나이상의값을포함하는컬렉션입니다. n..m - n개에서 m개사이의값을포함하는컬렉션입니다. 순서지정됨 False true이면컬렉션이순차목록을구성합니다. 복합성이 1보다큰경우에사용됩니다. true이면컬렉션에중복값이없습니다. 복합성이 1보다큰경우에사고유 False 용됩니다. -UML 클래스다이어그램연결의속성
속성설명이름 (1) 연결을식별합니다. 다이어그램에서연결의중간점근처에도나타납니다. 정규화된연결을고유하게식별합니다. 연결의첫번째역할을포함하는패키지의정이름규화된이름으로접두사가지정됩니다. 작업항목이연결에연결된작업항목의수입니다. 연결선의색입니다. 다른속성과달리이속성은모델에서기본관계의속성색이아니라이연결뷰의속성입니다. 연결의각끝을역할이라고합니다. 각역할은연결의반대쪽끝에있는클래스에서이와동등한특성의속성을기술합니다. 첫번째역할 두번째역할 예제다이어그램에서 Menu 와 Menu Item 사이의연결에는 Menu 와 Contents 라는역할이있습니다. Contents 는 Menu 클래스의특성이름입니다. - 각역할의속성 각역할의속성을보려면첫번째역할또는두번째역할속성을확장합니다. 속성기본값설명역할이역할의역할의이름이며, 다이어그램에서연결의끝근처에나타납니다. 이름 (2) 형식이름없음 (4) - 클래스인스턴스간의일반적인관계를나타냅니다. 집계 파생 파생 Union 없음 False 복합 (5) - 이역할의개체는반대역할의개체를포함합니다. 복합도구를사용하여복합집합체와의연결을만들수있습니다. 공유 (6) - 이역할의개체는다른역할의개체에대한참조를포함합니다. 집합체도구를사용하여공유집합체와의연결을만들수있습니다. 정확한해석이지역규칙에공개되어있습니다. true이면링크의이끝에있는개체가다른특성및연결에서계산됩니다. 예를들어 MyWorkPlace는 MyEmployer.WorkPlace에서계산됩니다. 세부정보는설명에입력하거나주석으로연결되어야합니다. False true 이면이역할은파생형식의역할집합을결합한것입니다.
탐색가능 읽기전용 True False 복합성 (3) 1 순서지정됨 고유 표시유형 False False 공용 이방향으로연결을읽을수있습니다. 반대역할의인스턴스가있으면기술하는소프트웨어에서이역할의연결된인스턴스를효율적으로결정할수있습니다. 한역할만탐색가능한경우에는연결에서탐색가능방향으로화살표 (7) 가나타납니다. 기본적으로연결도구는한방향으로탐색가능한연결을만듭니다. 이를양방향연결로변환하려면연결을선택하고스마트태그를클릭한다음, 양방향만들기를클릭합니다. true이면연결의인스턴스를만든후에는변경할수없습니다. 링크가항상같은개체를대상으로합니다. 1 - 연결의이끝이항상하나의개체에연결됩니다. 그림에서모든 Menu Item에는하나의 Menu가있습니다. 0..1 - 연결의이끝이하나의개체에연결되거나링크가없습니다. * - 연결의다른끝에있는모든개체가이끝에있는개체컬렉션에연결되고컬렉션은비어있을수있습니다. 1..* - 연결의다른끝에있는모든개체가이끝에서최소한하나이상의개체에연결됩니다. 그림에서모든 Menu 에는 Menu Item 이최소한하나이상있습니다. n..m - 다른끝에있는각개체는이끝에있는개체에대한 n ~ m개의링크컬렉션을포함합니다. true이면반환된컬렉션이순차목록을구성합니다. 복합성이 1보다큰경우에사용됩니다. true이면반환된컬렉션에중복값이없습니다. 복합성이 1보다큰경우에사용됩니다. 공용 - 전체에표시됩니다. 전용 - 소유하는형식외부에표시되지않습니다. 보호됨 - 소유자로부터파생된형식에표시됩니다. 패키지 - 같은패키지에있는다른형식에표시됩니다. -UML 클래스다이어그램
모양 요소 설명 1 클래스 지정된구조또는동작특징을공유하는개체의정의입니다. 1 분류자 클래스, 인터페이스또는열거형의일반이름입니다. 구성요소, 사용사례및행위자도분류자입니다. 2 축소 / 확장분류자의세부정보를볼수없으면해당분류자의왼쪽위에있는확컨트롤장기를클릭합니다. 각세그먼트에서 [+] 를클릭해야할수도있습니다. 3 특성 분류자의각인스턴스에연결된형식화된값입니다. 특성을추가하려면특성섹션을클릭하고 Enter 키를누릅니다. 그런다음특성의시그니처를입력합니다. 4 작업 분류자인스턴스에서수행할수있는메서드또는함수입니다. 작업을추가하려면작업섹션을클릭하고 Enter 키를누릅니다. 그런다음작업의시그니처를입력합니다. 5 연결 두분류자의멤버간관계입니다. 5a 집계 공유소유권관계를나타내는연결입니다. 소유자역할의집합체속성은공유로설정됩니다. 5b 컴퍼지션 전체와부분관계를나타내는연결입니다. 소유자역할의집합체속성은복합으로설정됩니다. 6 연결이름 연결이름입니다. 이이름은비워둘수있습니다. 7 역할이름 연결의한쪽끝에있는역할의이름입니다. 이이름은연결된개체를참조하는데사용할수있습니다. 이전그림에서임의의 Order O에대해 O.ChosenMenu는연결된 Menu입니다. 각역할에는고유한속성이있으며, 이러한속성은연결속성아래에나열됩니다. 8 복합성 이쪽끝의개체중에서다른쪽의각개체에연결할수있는개체의수를나타냅니다. 이예제에서각 Order는정확히하나의 Menu에만연결되어야합니다. 9 일반화 * 는연결할수있는링크수에상한이없음을의미합니다. 특정분류자는일반분류자에서정의의일부를상속합니다. 일반분류자는연결선의화살표끝에있습니다. 특성, 연결및작업은특정분류자에서상속합니다. 두분류자간의일반화관계를만들려면상속도구를사용합니다.
모양 요소 10 인터페이스 외부에서볼수있는개체동작의일부에대한정의입니다. 11 열거형 리터럴값집합으로구성되는분류자입니다. 분류자, 연결, 동작, 수명선, 구성요소및패키지그룹입니다. 논리클래 스다이어그램은멤버분류자와패키지가패키지내에포함되어있음을 나타냅니다. 12 패키지 13 namespa ce 14 종속성 설명 Package1 내의 Class1 이패키지외부의 Class1 과구별되도록이름은패키지내에서범위가지정됩니다. 패키지이름은콘텐츠의정규화된이름속성의일부로나타납니다. UML 다이어그램의연결된패키지속성을설정하여패키지를참조할수있습니다. 그러면해당다이어그램에서만드는모든요소가패키지의일부가됩니다. 이러한요소는 UML 모델탐색기에서패키지아래에나타납니다. 한패키지가다른패키지의모든정의를포함한다는것을나타내는패키지간관계입니다. 화살촉끝에있는분류자가변경되면종속분류자의정의또는구현이변경될수있습니다. 모양 요소 15 인식 16 인식 설명 클래스는인터페이스에서정의하는작업및특성을구현합니다. 클래스와인터페이스간의인식관계를만들려면상속도구를사용합니다. 같은관계의대체표현입니다. 롤리팝기호의레이블은인터페이스를식별합니다. 이표현을만들려면기존인식관계를선택합니다. 그러면연결근처에스마트태그가나타납니다. 이스마트태그를클릭하고롤리팝으로표시를클릭합니다. -시퀀스다이어그램시퀀스다이어그램에는다음과같은두가지종류가있습니다. 1.NET 시퀀스다이어그램은프로그램코드에서생성할수있으며프로젝트내에배치할수있습니다. 2 UML 시퀀스다이어그램은 UML 모델의일부이며 UML 모델링프로젝트내에서만존재합니다. 요소의일부속성이다르지만두종류의시퀀스다이어그램은비슷합니다.
모양 요소 1 수명선 2 행위자 3 동기메시지 4 비동기메시지 5 실행발생 6 콜백메시지 7 자체메시지 Description 줄아래로시간이진행하는동안상호작용중에참가자에발생하는이벤트시퀀스를나타내는세로선입니다. 이참가자는클래스, 구성요소또는행위자인스턴스가될수있습니다. 개발중인시스템외부의참가자입니다. 행위자속성을설정하여수명선맨위에행위자기호가나타나도록만들수있습니다. 보낸사람은계속하기전에동기메시지에대한응답을기다립니다. 다이어그램은호출및반환을모두보여줍니다. 동기메시지는동일한방식으로동작하는다른종류의메시지뿐만아니라프로그램내에서일반함수호출을나타내는데사용됩니다. 보낸사람이계속하기전에응답을보낼필요가없는메시지입니다. 비동기메시지는보낸사람의호출만보여줍니다. 별도의스레드또는새스레드의컬렉션사이의통신을나타냅니다. 참가자의수명선에나타나고참가자가작업을실행하는기간을나타내는세로음영의사각형입니다. 실행은참가자가메시지를받는곳에서시작됩니다. 시작메시지가동기메시지인경우실행은보낸사람에게다시 «반환» 화살표로종료됩니다. 이전호출에서반환을기다리는참가자에게다시반환하는메시지입니다. 결과실행발생은기존발생위에나타납니다. 참가자가자신에게보내는메시지입니다. 결과실행발생은보내는실행위에나타납니다.
8 메시지만들기 참가자를만드는메시지입니다. 참가자가메시지만들기를받으면수신자가받는첫번째메시지여야합니다. 9 찾기메시지 알수없거나지정되지않은참가자의비동기메시지입니다. 10 손실된메시지 알수없거나지정되지않은참가자에게보내는비동기메시지입니다. 11 주석 메모는수명선의모든점에첨부할수있습니다. 다른다이어그램에정의되어있는메시지의시퀀스를묶습니다. 12 상호작용사용 상호작용사용을만들려면도구를클릭한다음포함하려는수명선 으로끕니다. 13 결합조각 조각의컬렉션입니다. 각조각은메시지를하나이상포함할수있습니다. 결합조각에는여러가지종류가있습니다. 조각을만들려면메시지를마우스오른쪽단추로클릭하고코드감싸기를가리킨다음, 조각의형식을클릭합니다. 14 조각가드 조각이발생하는지여부와관련한조건을지정하는데사용할수있습니다. 가드를설정하려면단편을선택한다음가드를선택한값을입력합니다. 상호작용 메시지의컬렉션은시퀀스다이어그램에서표시되는수명선입니다. 상호작용의속성을보려면 UML 모델탐색기에서해당동작을선택해야합니다. 시퀀스다이어그램 상호작용을표시하는다이어그램입니다. 속성을보려면다이어그램의빈부분을클릭합니다. 참고 시퀀스다이어그램의이름, 다이어그램에서표시하는상호작용및 다이어그램을포함하는파일이모두다를수있습니다. - 사용사례다이어그램 행위자, 사용사례, 하위시스템 모양 요소 1 행위자 설명및주속성 응용프로그램이나시스템과상호작용하는사용자, 조직또는외부시스템을나타냅니다. 행위자는형식의한유형입니다.
이미지경로 - 기본행위자아이콘대신사용해야할이미지의파일경로입니다. 아이콘은 Visual Studio 프로젝트내의리소스파일이어야합니다. 2 사용사례 특정목표를위해하나이상의행위자가수행하는동작을나타냅니다. 사용사례는형식의한유형입니다. 제목 - 사용사례가나타나는하위시스템입니다. 3 연결 행위자가사용사례에참여한다는것을나타냅니다. 작업중인시스템이나응용프로그램또는하위파트입니다. 큰 네트워크에서응용프로그램의단일클래스까지무엇이든가능합 니다. 4 하위시스템또는구성요소 시스템또는구성요소에서지원하는사용사례는사각형영역안에나타납니다. 일부사용사례를사각형외부에표시하면시스템범위를명확하게할수있으므로유용합니다. 기본적으로사용사례다이어그램의하위시스템은구성요소다이어그램의구성요소와형식이같습니다. 간접인스턴스화됨 - false 이면실행시스템에이하위시스템과직접대응하는개체가하나이상있고,true 이면하위시스템은구성파트의인스턴스화를통해서만실행시스템에나타나는디자인생성자입니다. - 사용사례구성 모양 요소 설명 5 포함 포함하는사용사례는포함된사용사례를호출합니다. 포함은사용사례가세부단계로구분되는방식을나타내는데사용됩니다. 포함된사용사례는화살촉끝에있습니다. 사용사례다이어그램에는단계의순서가표시되지않습니다. 이러한세부적인내용은동작다이어그램, 시퀀스다이어그램또는다른문서를사용하여나타낼수있습니다. 6 확장 확장하는사용사례는확장된사용사례에목표와단계를추가합니다. 확장은특정조건에서만동작합니다. 확장된사용사례는화살촉끝에있습니다. 사용사례다이어그램에는어떤상황에서확장이사용되는지정확하게나타나지않습니다. 이러한내용은주석또는다른문서에기록할수있
7 상속 습니다. 특수화된요소와일반화된요소를연결합니다. 일반화된요소는화살촉끝에있습니다. 특수화된사용사례는일반화사례의목표및행위자를상속하고좀더구체적인목표와단계를추가할수있습니다. 특수화된행위자는일반화행위자의사용사례, 특성및연결을상속하고더추가할수있습니다. 8 종속성 소스디자인이대상디자인에의존한다는것을나타냅니다. 9 주석 전반적인설명을다이어그램에추가하는데사용됩니다. 10 11( 표시되지않음 ) 아티팩트 패키지 아티팩트는다른다이어그램이나문서에대한링크를제공합니다. 솔루션탐색기에서파일을끌어아티팩트를만들수있습니다. 이파일은종속성을사용하여다이어그램의다른요소에연결될수있습니다. 아티팩트는일반적으로사용사례에대해자세히설명하는시퀀스다이어그램, OneNote 페이지, Word 문서또는 PowerPoint 프레젠테이션에사용사례를연결하는데사용됩니다. 해당문서는 Visual Studio 솔루션의항목이거나 SharePoint 사이트같은공유위치의문서일수있습니다. 하이퍼링크 : 다이어그램또는문서의 URL 이나파일경로입니다. 아티팩트를두번클릭하면해당아티팩트가연결된파일또는웹페이지가열립니다. 사용사례, 행위자및하위시스템을패키지안에포함할수있습니다. 패키지모양은다이어그램에나타나지않지만다이어그램의 LinkedPackage 속성을설정할수있습니다. 이후에다이어그램에서만드는요소는패키지안에배치됩니다. - 레이어다이어그램 모양 요소 1 레이어 설명 시스템에있는물리적아티팩트의논리그룹입니다. 아티팩트가레이어에연결되어있으면레이어의왼쪽위모퉁이에숫자가나타납니다. 레이어에연결된아티팩트의목록을보려면레이어를마우스오른쪽단추로클릭하고링크보기를클릭합니다. 사용할수없는네임스페이스종속성 - 이레이어와연결된아티팩트가지정된네임스페이스에종속될수없도록지정합니다. 사용할수없는네임스페이스 - 이레이어와연결된아티팩트가지정된네임스페이스에속하면안되도록지정합니다. 필요한네임스페이스 - 이레이어와연결된아티팩트가지정된네임스페이스중하나여야하도록지정합니다. 2 종속성 한레이어가다른레이어의기능을사용할수있지만반대의경우는가능하지않음을나타냅니다. 방향 - 종속성의방향을지정합니다. 3 한레이어가다른레이어의기능을사용할수있으며반대의경우도가양방향능함을나타냅니다. 종속성 방향 - 종속성의방향을지정합니다. 4 주석 다이어그램또는다이어그램의요소에전반적인설명을추가하는데사용합니다. 5 주석링크 다이어그램의요소에주석을연결하는데사용합니다.
-레이어탐색기솔루션에있는하나이상의아티팩트, 예를들면프로젝트, 클래스, 네임스페이스, 프로젝트파일및소프트웨어의기타파트에각레이어를연결할수있습니다. 연결된아티팩트를검사하려면 1 레이어다이어그램에서하나이상의레이어를마우스오른쪽단추로클릭하고링크보기를클릭합니다. 2 레이어탐색기가열리고선택한레이어에연결된아티팩트가표시됩니다. 레이어탐색기에는아티팩트링크의각속성을보여주는열이있습니다. 레이어탐색기의열 설명 범주 클래스, 네임스페이스, 소스파일등과같은아티팩트의종류입니다. 레이어 아티팩트에연결되는레이어입니다. 유효성검사지원 True 이면레이어유효성검사를통해프로젝트가이요소에대한종속성을따르는지확인할수있습니다. False 이면링크가레이어유효성검사에참여하지않습니다. 식별자연결된아티팩트에대한참조입니다. 3) 패키지및네임스페이스정의 -네임스페이스패키지는작업을여러영역으로나눌때유용합니다. 각패키지는여러패키지에정의된이름이서로충돌하지않도록네임스페이스를정의합니다. 예를들어패키지가 MyPackage 인경우패키지내의클래스는 MyPackage::MyClass와같은이름을갖게됩니다. 모델도네임스페이스를정의하므로모델에포함된모든요소의정규화된이름은모델이름으로시작합니다. -패키지만들기 UML 클래스다이어그램에서패키지를만들려면 1 UML 클래스다이어그램을열거나새로만듭니다. 2 패키지도구를클릭합니다. 3 다이어그램에서아무곳이나클릭합니다. 그러면새패키지모양이나타납니다. 4 기존패키지내부를클릭하면한패키지를다른패키지안에중첩시킬수있습니다. 5 패키지의새이름을입력합니다. - 패키지내에모델요소만들기 다음과같은네가지방법을사용하여패키지내에모델요소를배치할수있습니다. 1 UML 모델탐색기에서패키지에새요소를추가합니다.
2 UML 클래스다이어그램에서패키지에클래스및기타형식을추가합니다. 3 다이어그램에서만든새요소가특정패키지내에배치되도록다이어그램의 LinkedPackage 속성을설정합니다. 클래스다이어그램, 구성요소다이어그램및사용사례다이어그램을이런방식으로패키지에연결할수있습니다. 4 UML 모델탐색기에서패키지내부또는외부로요소를이동합니다. -패키지간의가져오기관계가져오기는가져온패키지에정의된요소, 즉관계의화살표끝에있는요소가가져오는패키지에서도효과적으로정의된다는의미입니다. 표시유형이패키지로정의된요소는가져오는패키지에서도볼수있습니다. 가져오기관계에루프를만들지마십시오. 다른패키지에서한패키지의요소를참조하려면요소의정규화된이름을사용해야합니다. 예를들어 SalesCommon 패키지에서 CustomerAddress 형식을정의한다고가정해봅니다. 또한 RestaurantSales라는다른패키지에서 Customer Address 형식의특성을포함하는 MealOrder 형식을정의하려고합니다. 이때다음과같은두옵션을사용할수있습니다. 1정규화된이름 SalesCommon::CustomerAddress를사용하여특성의형식을지정합니다.CustomerAddress의표시유형속성이공용으로설정된경우에만이렇게해야합니다. 2RestaurantSales 패키지에서 SalesCommon 패키지로가져오기관계를만듭니다. 그러면정규화된이름을사용하지않고 CustomerAddress를사용할수있습니다. - 패키지속성 속성 기본값 설명 이름 ( 새이름 ) 패키지이름입니다. 다이어그램또는속성창에서변경할수있습니다. 정규화된이름 Container :: package name 이패키지를포함하는모델또는패키지의이름이앞에나오는전체이름입니다. 프로필 ( 비어있음 ) 이패키지에연결된프로필목록입니다. 이러한프로필은패키지내의요소에적용할수있는스테레오타입을제공합니다. 스테레오타입을사용하여모델사용자지정을참조하십시오. 표시유형 공용 부모패키지외부에서패키지의표시유형입니다. 작업항목 ( 비어있음 ) 연결된작업항목의목록입니다. 정의위치 ( 이름 ) 패키지의세부정보가저장되는파일이름입니다. 파일은 ModelDefinition 프로젝트폴더에있습니다. 이정보는소스제어용도로사용될경우도움이됩니다. 설명 ( 비어있음 ) 패키지에대한설명입니다. 이패키지에적용되는스테레오타입입니다. 사용할수있는스테레오타 ( 비어있음 ) 스테레오타입목록은이패키지및이패키지를포함하는입패키지에대해선택한프로필에따라결정됩니다. - 패키지저장방식
새패키지를만들면 ModelDefinition 프로젝트폴더에새.uml 파일이만들어집니다. 마찬가지로패키지인루트모델도.uml 파일에저장됩니다. 또한각다이어그램은두개의파일, 즉다이어그램의모양을나타내는파일과모양의위치를기록하는.layout 파일에저장됩니다. 4) 프로필및스테레오타입을사용하여모델사용자지정요소의속성목록을변경할수있는스테레오타입을모델요소에적용할수있습니다. 스테레오타입은프로필이라는컬렉션내에정의됩니다. 스테레오타입을사용하려면프로필에패키지를연결합니다. 이렇게하면프로필에정의된스테레오타입을패키지의요소에적용할수있습니다. 일부프로필은사용자지정프로필을정의할수있습니다. 스테레오타입은요소의속성목록에설정할수있습니다. 다음예제와같이다이어그램에나타나는주요모양의경우적용된스테레오타입도모양에함께나타납니다. 5) 모델요소에작업항목연결작업항목에모델요소를연결할수있습니다. 이렇게하면작업, 테스트사례, 버그, 요구사항, 문제점또는모델의특정파트와연결된다른작업유형등을추적할수있습니다. 또한연결된작업항목에문서를첨부하여모델요소에문서를연결할수도있습니다. 예를들어다음과같은링크를만들수있습니다. - 스토리가작업시퀀스로구현되는방식을설명하는동작다이어그램에사용자스토리작업항목을연결합니다. - 올바로구현되었는지확인하는테스트사례작업항목에사용사례다이어그램의사용사례를연결합니다. - 특성구현의오류에대한버그작업항목에 UML 클래스다이어그램에있는클래스의특성을연결합니다. - 개발을추적하는작업 (Task) 작업항목에구성요소다이어그램의구성요소를연결합니다. 이러한작업은대개더작은여러작업의부모입니다. 다이어그램또는 UML 모델탐색기에서선택할수있는요소에작업항목을연결할수있습니다. 예를들면다음과같은요소입니다. - UML 클래스, 수명선, 사용사례, 하위시스템, 동작, 개체노드, 구성요소, 인터페이스등 UML 모델의모든요소 - 연결, 일반화, 종속성, 흐름, 메시지등 UML 모델의모든관계 - 클래스의특성과작업, 수명선의실행발생, 동작의입력 / 출력핀, 구성요소의파트와포트등요소의파트 - 레이어및레이어종속성
- 주석및주석링크 - 다이어그램. 다이어그램을선택하려면다이어그램의빈부분을클릭합니다. (1)Team Foundation Server에연결하려면 1 보기메뉴에서팀탐색기를클릭합니다. 2 올바른서버및프로젝트가표시되지않으면기존팀프로젝트추가를클릭하고올바른서버와프로젝트를선택합니다. 3 팀탐색기에서작업항목을만들고연결하거나볼프로젝트를클릭합니다. 4 프로젝트가팀탐색기에강조표시된상태로나타납니다. (2) 모델요소에연결된작업항목을열려면 1 팀탐색기에서모델요소가연결된 Team Foundation Server에연결되어있는지확인합니다. 2 다이어그램또는 UML 모델탐색기에서모델요소를마우스오른쪽단추로클릭하고작업항목보기를클릭합니다. 3 작업항목목록창이열립니다. 여기에서는연결된작업항목의목록을보여줍니다. 6) 모델과다이어그램을저장 Visual Studio Ultimate 을사용하지않는사람을포함하여다른사용자와공유할수있도록모델과다이어그램을저장합니다. 3-2. 관련작업 관련작업현재시스템에서파트간의동작, 관계및조직을시각화하고분석합니다. 모델을사용하여사용자요구를명확하게하고전달합니다. 모델을사용하여시스템의전체구조및동작을기술하고사용자요구를충족하도록합니다. 소프트웨어가사용자요구및시스템의전반적인아키텍처와일관성있게유지되도록합니다. 모델을사용하여개발중에시스템을쉽게이해하고변경합니다. 1) 기존코드탐색 코드에서기존관계와패턴을검사하기위해종속성그래프를생성할수있습니다. 코드관계를탐색합니다. 작업 종속성그래프나다른그래프를생성하여코드의관계를확인합니다.
기존코드를찾습니다. 아키텍처탐색기를사용하여 Visual Studio 솔루션의소스코드나컴파일된코드를찾고탐색할수있습니다. 코드상호작용을탐색합니다. 코드에서시퀀스다이어그램을생성하여코드의상호작용을파악합니다. 코드구조를탐색합니다. 클래스다이어그램을만들어프로젝트의클래스구조를검사합니다. 시스템의상위수준디자인을나타내고이디자인을기준으로코드의유효성을검사합니다. 레이어다이어그램을만들어시스템의상위수준디자인과해당종속성을나타냅니다. 이디자인을기준으로코드의유효성을검사하여코드가디자인과일관성을유지하는지확인합니다. 사용자요구사항및시스템디자인을전달합니다. 동작, 구성요소, 클래스, 시퀀스및사용사례다이어그램과같은 UML 다이어그램을그려소프트웨어시스템의아키텍처와사용자요구사항을모델링합니다. 2) 사용자요구사항모델링 사용자요구사항을나타내는다양한종류의뷰를만들수있습니다. 다이어그램또는문서사용사례다이어그램개념클래스다이어그램동작다이어그램시퀀스다이어그램추가문서또는작업항목추가문서또는작업항목 요구사항모델에서기술하는내용 시스템사용자및시스템사용자가시스템에서수행하는작업 요구사항을기술하는데사용되는형식의용어및시스템인터페이스에서볼수있는형식 사용자가수행하는동작과시스템또는시스템요소사이의정보및워크플로 사용자와시스템또는시스템요소사이의상호작용시퀀스. 동작다이어그램을대체할수있는뷰입니다. 성능, 보안, 유용성및안정성기준 특정사용사례에제한되지않는제약조건및규칙 -시스템이사용되는방식기술시스템사용자및시스템용도를기술하려면사용사례다이어그램을만듭니다. 예를들어온라인식사판매시스템은고객이메뉴에서품목을선택할수있고공급식당에서메뉴를업데이트할수있도록해야합니다.
사용사례가어떻게구성되는지하위사례를표시할수도있습니다. 예를들어식사를주문 하는것은구매의한부분이며지불과배달을포함합니다. 또한개발중인시스템의범위에포함되는사용사례를표시할수있습니다. 사용사례다이어그램은해당사례에대한요약만제공합니다. 자세한설명을제공하려면다이어그램의사용사례를별도의문서및다른다이어그램으로연결하는링크를만들어야합니다. 사용사례다이어그램을그리면팀에서다음과같이할수있습니다. 1 상세한구현내용에신경쓰지않고사용자가시스템으로수행할작업에만집중할수있습니다. 2 현재시스템또는특정릴리스의시스템에포함할범위를논의할수있습니다. -요구사항을기술하는데사용되는용어정의 UML 클래스다이어그램을사용하면다음과같은용도로사용되는비즈니스개념의일관성있는용어모음을개발할수있습니다. 1 시스템이동작하는비즈니스를논의하는사용자에게유용합니다. 2 예를들어사용사례, 비즈니스규칙및사용자스토리설명에서사용자의요구를기술하는데유용합니다. 3 시스템 API에서또는사용자인터페이스를통해교환되는정보의유형을나타내는데유용합니다.
4 시스템또는수용테스트설명을기술하는데유용합니다. 이용도로사용되는 UML 클래스다이어그램의콘텐츠를개념클래스다이어그램이라고합니다. 도메인모델또는분석클래스모델이라고도합니다. 개념클래스다이어그램에서는시스템의내부디자인정보는전혀표시하지않고요구사항설명에필요한클래스만나타냅니다. 즉, 이다이어그램에는시스템의내부디자인에대한정보가나타나지않습니다. 일반적으로개념클래스에는작업또는인터페이스를나타내지않습니다. 예를들어 Dinner Now 시스템에대해다음과같은개념클래스를그릴수있습니다. 개념클래스다이어그램에서는요구사항모델전체에서사용하는용어모음을제공합니다. 예를들어 Order a Meal 사용사례에대한자세한설명에서다음과같이작성할수있습니다. 고객은 Order를만들기위해 Menu를선택한다음, Menu에서 Menu Items를선택하여 Order에서 Order Items를만듭니다. 설명에사용된용어가모델에서클래스이름이되는것에주목하십시오. 이다이어그램은클래스관계에서모호성을제거합니다. 1 사용자의요구를논의할때사용되는기본용어를정의하고표준화할수있습니다. 2 이러한용어의관계를명확하게나타낼수있습니다. -비즈니스규칙표시비즈니스규칙은특정사용사례와연결되지않고시스템전체에서관찰되어야하는요구사항입니다. 대부분의비즈니스규칙은개념클래스간관계에대한제약조건입니다. 이러한정적비즈니스규칙을개념클래스다이어그램의관련클래스와연결된주석으로작성할수있습니다. 예를들면다음과같습니다.
-서비스품질요구사항기술서비스품질요구사항은몇가지범주로구성됩니다. 1 성능 2 보안 3 유용성 4 안정성 5 견고성특정사용사례를기술할때이러한요구사항중일부를포함할수있습니다. 다른요구사항은사용사례에제한되지않으며별도의문서에서가장효과적으로작성됩니다. 가능한경우요구사항모델에정의된용어를따르면유용합니다. -사용자와시스템사이의워크플로표시동작다이어그램을사용하면각사용사례사이의워크플로를나타낼수있습니다. 대부분의경우시스템내부와외부에서사용자가수행할주요작업을보여주는동작다이어그램을그려요구사항모델을시작하면유용합니다. 예를들면다음과같습니다.
같은정보를서로다른뷰로나타내려는경우사용사례다이어그램과동작다이어그램을 그릴수있습니다. 예를들면다음과같습니다. -사용자와시스템사이의상호작용표시시퀀스다이어그램을사용하면시스템과외부행위자간또는각시스템구성요소간의메시지교환을나타낼수있습니다. 이렇게하면사용사례에서상호작용시퀀스를명확히나타내는단계뷰를제공할수있습니다. 시퀀스다이어그램은사용사례에상호작용대상이여러개있는경우와시스템에 API가있는경우특히유용합니다. 예를들면다음과같습니다. 시퀀스다이어그램은생성중인시스템으로들어오는메시지를쉽게볼수있다는장점이
있습니다. -모델을사용하여불일치줄이기일반적으로모델을만들면사용자의요구사항에서불일치및모호성문제가상당히줄어듭니다. 각다이어그램에서제공하는뷰의관계를조사하면사용자가다루는주요개념을쉽게이해할수있으며사용자가시스템에서무엇을필요로하는지스스로이해하도록도움을줄수있습니다. 3) 소프트웨어시스템의아키텍처모델링모델을사용하면디자인전체에서사용되는패턴을기술할수도있습니다. 모델의목적은자연어를사용하여기술할때발생하는모호성을줄이고, 동료와함께디자인을시각화하고대체디자인을논의하는데도움을주는것입니다. 모델은다른문서또는토론과함께사용되어야합니다. 모델자체는아키텍처의완전한사양을나타내지않습니다. 시스템아키텍처는다음과같은두영역으로나눌수있습니다. 1 고급디자인. 여기에서는주요구성요소를나타내고이러한구성요소가각요구사항을수행하기위해다른요소와상호작용하는방식을기술합니다. 2 구성요소의디자인전체에사용되는디자인패턴및규칙. 패턴은프로그래밍목표를달성하기위한특정한방법을기술합니다. -고급디자인고급디자인은시스템의주요구성요소를나타내고이러한구성요소가디자인목표를달성하기위해다른요소와상호작용하는방식을기술합니다. 1 요구사항이해 : 디자인은사용자의요구를명확하게이해하는것에서시작됩니다. 2 아키텍처패턴 : 시스템의아키텍처요소및핵심기술에대한선택항목입니다. 3 구성요소및구성요소인터페이스 : 시스템의주요파트를보여주는구성요소다이어그램을그리고, 시스템의파트가서로상호작용할때사용하는인터페이스를나타낼수있습니다. 각구성요소의인터페이스에는시퀀스다이어그램에서식별한모든메시지가포함됩니다. 4 구성요소간상호작용 : 각사용사례, 이벤트또는들어오는메시지에대해필요한응답을얻기위해시스템의주요구성요소가상호작용하는방식을보여주는시퀀스다이어그램을그릴수있습니다. 5 구성요소및인터페이스의데이터모델 : 구성요소간에전달되고구성요소내에저장되는정보를기술하기위해클래스다이어그램을그릴수있습니다. - 요구사항이해 완전한응용프로그램의고급디자인은요구사항모델또는기타사용자요구에대한기
술과함께가장효과적으로개발됩니다. 요구사항모델은다음과같은중요한정보를제공합니다. 1 제공된인터페이스 : 제공된인터페이스는시스템이나구성요소에서사용자에게제공해야하는서비스또는작업을나열합니다. 이때사용자는사람일수도있고다른소프트웨어구성요소일수도있습니다. 2 필요한인터페이스 : 필요한인터페이스는시스템이나구성요소에서사용할수있는서비스또는작업을나열합니다. 어떤경우에는이러한모든서비스를시스템의일부로디자인할수있습니다. 다른경우, 특히대부분의구성에서다른구성요소와결합할수있는구성요소를디자인하는경우에는외부적문제에의해필요한인터페이스가설정됩니다. 3 서비스품질요구사항 : 성능, 보안, 안정성및시스템에서충족해야할기타목표와제약조건입니다. 요구사항모델은시스템사용자의관점에서작성됩니다. 이때사용자는사람일수도있고다른소프트웨어구성요소일수도있습니다. 사용자는시스템의내부작업에대해아무것도모릅니다. 이와달리아키텍처모델의목표는내부작업을기술하고이러한작업이사용자의요구를충족하는방식을보여주는데있습니다. 요구사항모델과아키텍처모델을별개로유지하면사용자와요구사항에대해더쉽게논의할수있으므로유용합니다. 또한요구사항을변경하지않으면서디자인을리팩터링하고대체아키텍처를고려할수있습니다. 다음과같은두가지방법으로요구사항모델과아키텍처모델을분리할수있습니다. 4 두모델을각각같은솔루션의다른프로젝트에둡니다. 이렇게하면 UML 모델탐색기에별도의모델로나타나고, 여러명의팀멤버가동시에모델에서작업할수있습니다. 두모델간에제한된종류의추적을만들수있습니다. 5 두모델을각각같은 UML 모델의다른패키지에둡니다. 이렇게하면모델간의종속성을쉽게추적할수있지만두명이상의사용자가동시에모델에서작업할수없습니다. 또한매우큰모델을 Visual Studio로로드할때시간이오래걸립니다. 따라서이방법은큰프로젝트에적합하지않습니다. 요구사항모델또는아키텍처모델에나타내야할세부정보의양은프로젝트의규모와팀의크기및배포에따라다릅니다. 짧은프로젝트의소규모팀은비즈니스개념및일부디자인패턴의클래스다이어그램을스케치하는정도로충분하지만여러나라에배포되는큰프로젝트는매우상세하게기술해야합니다. -아키텍처패턴개발초기단계에서는디자인이의존하는주요기술및요소를선택해야합니다. 1 데이터베이스와파일시스템사이의선택, 네트워크응용프로그램과웹클라이언트사이의선택등과같은기본기술선택 2 Windows Workflow Foundation 또는 ADO.NET Entity Framework 사이의선택과같은프레임워크선택 3 엔터프라이즈서비스버스또는지점간채널사이의선택과같은통합방식선택
이러한선택은대개규모및유연성과같은서비스품질요구사항에의해결정되며상세요구사항이알려지기전에지정할수있습니다. 큰시스템의경우하드웨어와소프트웨어의구성은서로긴밀하게관련되어있습니다. 이러한선택은아키텍처모델을사용하고해석하는방식에영향을줍니다. -구성요소및구성요소인터페이스 1 구성요소다이어그램을만들어시스템의주요파트를나타냅니다. 2 구성요소와해당인터페이스간의종속성을그려시스템의구조를나타냅니다. 3 구성요소의인터페이스를사용하여각구성요소에서제공하거나필요로하는서비스를나타냅니다. 4 규모가큰디자인의경우별도의다이어그램을그려각구성요소를더작은파트로분해할수있습니다. -구성요소아키텍처모델의중심이되는뷰는시스템의주요파트및각파트가서로의존하는방식을보여주는구성요소다이어그램입니다. 큰시스템의구성요소다이어그램에는대개다음과같은구성요소가포함됩니다. 1 프레젠테이션 : 사용자에대한액세스를제공하는구성요소이며일반적으로웹브라우저에서실행됩니다. 2 웹서비스구성요소 : 클라이언트와서버간의연결을제공합니다. 3 사용사례컨트롤러 : 각시나리오의단계를통해사용자를안내합니다. 4 비즈니스핵심 : 요구사항모델의클래스를기반으로하는클래스를포함하고, 핵심작업을구현하며, 비즈니스제약조건을적용합니다. 5 데이터베이스 : 비즈니스개체를저장합니다. 6 로깅및오류처리구성요소 -구성요소간의종속성구성요소자체뿐만아니라구성요소간의종속성도나타낼수있습니다. 두구성요소간의종속성화살표는한구성요소의디자인변경이다른구성요소의디자인에영향을줄수있음을나타냅니다. 이는대개한구성요소가다른구성요소에서제공하는서비스나기능을직접또는간접적으로사용하기때문입니다. 올바른구조의아키텍처에는종속성이명확하게배열되어다음과같은조건을만족합니다. 1 종속성그래프에루프가없습니다. 2 모든종속성이한레이어의구성요소에서다른레이어의구성요소로움직이도록구성요소를레이어로정렬할수있습니다. 두레이어간의모든종속성은같은방향으로이동합니다.
종속성관리는유지관리가가능한소프트웨어를생성하는데있어서가장중요합니다. -인터페이스구성요소에인터페이스를배치하면각구성요소에서제공하는주요작업그룹을구분하고이름을지정할수있습니다. 예를들어웹기반판매시스템의구성요소에는고객이상품을구매하는인터페이스, 판매업체에서카탈로그를업데이트하는인터페이스, 시스템을관리하는세번째인터페이스가있을수있습니다. 구성요소에포함할수있는제공된인터페이스와필요한인터페이스의수에는제한이없습니다. 제공된인터페이스와필요한인터페이스를둘다정의하면디자인의나머지부분에서구성요소가완벽하게분리되므로다음과같은기법을사용할수있습니다. 1 관련구성요소가테스트도구에의해시뮬레이션되도록구성요소를테스트도구에배치합니다. 2 구성요소를다른구성요소와독립적으로개발합니다. 3 인터페이스를다른구성요소에결합하여다른컨텍스트에서구성요소를다시사용합니다. -구성요소를파트로분해각구성요소내에서하위구성요소를파트로나타낼수있습니다. 다음과같은경우에는파트를사용합니다. 1 부모구성요소의디자인에서항상파트의구성요소형식을사용해야하는경우. 따라서파트의디자인이부모구성요소의디자인에반드시필요합니다. 2 부모구성요소에구체적인요소가없는경우. 예를들어뷰와사용자상호작용을처리하는실제구성요소의컬렉션을나타내는개념적구성요소, 즉프레젠테이션레이어가있을수있습니다. 다음과같은경우에는필요한인터페이스를통해액세스되는별도의구성요소를사용합니다. 3 요청하는구성요소가인터페이스를통해런타임에다른제공하는구성요소에결합될수있는경우 4 한공급자를다른공급자로쉽게바꿀수있는디자인인경우대개필요한인터페이스를사용하는것이파트를사용하는것보다좋습니다. 이방법은디자인하는데시간이더걸리지만결과시스템의유연성이뛰어납니다. 또한구성요소를별도로테스트하기도쉽습니다. 이를통해개발계획에서결합을줄일수있습니다. - 구성요소간상호작용 1 시스템의사용사례를식별합니다. 2 각사용사례에대해시스템의구성요소가다른구성요소및사용자와공동으로작
업하여필요한결과를달성하는방식을보여주는다이어그램을하나이상그립니다. 일반적으로시퀀스다이어그램또는동작다이어그램을그릴수있습니다. 3 인터페이스를사용하여각구성요소가수신하는메시지를지정합니다. 4 인터페이스에서작업의효과를기술합니다. 5 각구성요소에대해절차를반복하여파트의상호작용방식을보여줍니다. 예를들어웹기반판매시스템의요구사항모델에서고객의구매를사용사례로정의할수있습니다. 이경우프레젠테이션레이어의구성요소와고객의상호작용을나타내고, 웨어하우스및회계구성요소와고객의상호작용을나타내는시퀀스다이어그램을만들수있습니다. -시작이벤트식별대부분의소프트웨어시스템에서수행되는작업은다양한입력또는이벤트에제공하는응답에의해편리하게나눌수있습니다. 시작이벤트는다음이벤트중하나일수있습니다. 1 사용사례의첫번째동작 : 이동작은요구사항모델에서사용사례의단계또는동작다이어그램의동작으로나타날수있습니다. 2 프로그래밍인터페이스의메시지 : 개발하는시스템이규모가큰시스템의구성요소인경우에는구성요소인터페이스중하나에서작업으로기술해야합니다. 3 시스템에서모니터링되는특정조건또는정기적인이벤트 ( 예 : 시간 ). -디자인패턴디자인패턴은소프트웨어의특정요소, 특히시스템의여러파트에서되풀이되는요소를디자인하는방법을요약한것입니다. 프로젝트전체에일정한방법을사용하면디자인비용을줄이고사용자인터페이스의일관성을유지할수있으며코드를이해하고변경하는데필요한노력을줄일수있습니다. 소프트웨어아키텍처작업의일부는디자인전체에사용해야할패턴을결정하는것입니다. 프로젝트가진행됨에따라새패턴및기존패턴의업데이트가검색되므로대개이작업은계속됩니다. 초기단계에서주요디자인패턴을각각시험하도록개발계획을구성하는것이좋습니다. 디자인패턴은문서에기술되며일반적으로다음과같은요소를포함합니다. 1 이름 2 패턴을적용할수있는컨텍스트에대한설명. 예를들면개발자가패턴을적용할때고려해야할기준을지정합니다. 3 패턴으로해결하는문제에대한간단한설명 4 주요파트및파트관계모델. 클래스또는구성요소와인터페이스및이들간의종속성과연결등이될수있습니다. 요소는대개다음과같은두범주에포함됩니다. 5 개발자가패턴이사용되는코드의모든부분에서복제해야할요소. 템플릿형식을
사용하여이러한요소를기술할수있습니다. 6 개발자가사용해야할프레임워크클래스를기술하는요소 7 시퀀스다이어그램또는동작다이어그램을사용하는파트간상호작용모델 8 명명규칙 9 패턴으로문제를해결하는방식에대한설명 10 개발자가채택할수있는패턴변형에대한설명 4) 개발하는동안시스템유효성검사 Visual Studio Ultimate 를사용하면소프트웨어를사용자요구사항및시스템아키텍처에 맞게일관성을유지할수있습니다. 모델의일관성을확인합니다. 작업 프로젝트에서모델을사용하고해석하는방식에따라일부요소조합을허용하지않는것이유용할수있습니다. 예를들어 UML 클래스가항상.NET 규격이름을갖도록제한할수있습니다. 이와같은제약조건은 Visual Studio 확장에서정의할수있습니다. 소프트웨어가사용자의요구사항에맞는지확인합니다. 요구사항및아키텍처모델을사용하여시스템과시스템구성요소의테스트를구성할수있습니다. 이렇게하면사용자및다른관련자에게중요한요구사항을테스트할수있으며요구사항이변경될경우테스트를신속하게업데이트할수있습니다. 소프트웨어가시스템의계획된디자인과일관성을유지하는지확인합니다. 레이어다이어그램은응용프로그램구성요소간의계획된종속성을기술합니다. 개발하는동안코드의실제종속성이계획된디자인을따르는지확인할수있습니다. 5) 개발프로세스에서모델사용 모델을사용하면시스템동작환경시각화, 사용자요구명시화, 시스템아키텍처정의, 코 드분석, 요구사항을충족하는코드작성등의작업을수행하는데도움이됩니다. -모델을사용하는방법 1 모델링다이어그램을그리면요구사항, 아키텍처및고급디자인과관련된개념을명확하게할수있습니다. 2 모델을사용하면요구사항의불일치를나타낼수있습니다. 3 모델을사용하면중요한개념을전달할때자연어를사용하는경우보다모호성을줄일수있습니다. 4 경우에따라모델을사용하여코드또는기타아티팩트 ( 예 : 데이터베이스스키마또는문서 ) 를생성할수있습니다. 예를들어 Visual Studio Ultimate의모델링구성요소는모델에서생성됩니다. Extreme Agile에서 High Ceremony까지다양한프로세스에서모델을사용할수있습니다.
-남은작업예상요구사항모델을사용하면각반복의크기를기준으로프로젝트의전체크기를예상할수있습니다. 또한사용사례와클래스의수및복잡성을평가하면필요한개발작업을예상할수있습니다. 처음몇개의반복을완료한경우적용된요구사항과적용할요구사항을비교하면남은프로젝트의비용과범위를대략적으로계산할수있습니다. -추상화수준모델은소프트웨어에따라추상화범위를가집니다. 가장구체적인모델은프로그램코드를직접나타내고, 가장추상적인모델은코드에나타내거나나타내지않는비즈니스개념을나타냅니다. 모델은여러종류의다이어그램을통해볼수있습니다. 다양한종류의다이어그램은서로다른추상화수준에서디자인을기술하는데도움이됩니다. 디자인수준 비즈니스프로세스 시스템이사용될컨텍스트를이해하면사용자가거기에서무엇을필요로하는지이해하는데도움이됩니다. 사용자요구사항 사용자가시스템에서필요로하는것에대한정의입니다. 고급디자인 시스템의전체구조, 즉주요구성요소목록및이러한구성요소가함께연결되는방식을보여줍니다. 디자인패턴 디자인의모든파트에사용되는디자인문제해결방법및규칙입니다. 코드분석 몇가지형식의다이어그램을코드에서생성할수있습니다. 다이어그램형식 동작다이어그램은비즈니스목표를달성하기위해사용자와시스템간의워크플로를기술합니다. 개념클래스다이어그램은비즈니스프로세스내에서사용되는비즈니스개념을기술합니다. 사용사례다이어그램은사용자및기타외부시스템과현재개발중인시스템과의상호작용을요약합니다. 다른문서를각사용사례에첨부하여해당사례에대해상세히기술할수있습니다. UML 클래스다이어그램은사용자와시스템이의사소통하는정보의형식을기술합니다. 비즈니스규칙및서비스품질요구사항을별도의문서에기술할수있습니다. 구성요소다이어그램은시스템이여러파트로구성되는방식을기술합니다. 시퀀스다이어그램은각사용사례를구현하기위해구성요소가통신하는방식을보여줍니다. UML 클래스다이어그램은구성요소의인터페이스및구성요소간에전달되는데이터의형식을기술합니다. UML 클래스다이어그램은패턴의구조를기술합니다. 시퀀스다이어그램또는동작다이어그램은상호작용과알고리즘을보여줍니다. 시퀀스다이어그램은코드에서개체간의상호작용을보여줍니다. 레이어다이어그램은클래스간의종속성을보여줍니다. 업데이트된코드는레이어다이어그램과비교하여유효성을검사할수있습니다..NET 클래스다이어그램은코드의클래스를보여줍니다.