2 장 UML 의구성 UML 아키텍처 UML 메커니즘 한빛미디어 ( 주 )
학습목표 UML 의구성요소를학습한다. UML 의관계를이해한다. 다이어그램의개념을이해한다. 2
UML 의구성요소 UML은기본요소를구성하는 사물 (Things) 사물간의관계를나타내는 관계 (Relationship) 사물과관계를도형으로표현하는 다이어그램 (Diagram) [ 그림 2-1] 3
사물 사물은추상적개념으로서모델에서가장중요 1 구조사물 (Structural Things) : 시스템의구조를표현하는사물 2 행동사물 (Behavioral Things) : 시스템의행위를표현하는사물 3 그룹사물 (Grouping Things) : 개념을그룹화하는사물 4 주해사물 (Annotation Things) : 부가적으로개념을설명하는사물 4
구조사물 UML 모델의명사형 모델의정적인부분이며, 개념적 물리적요소표현 유스케이스 (Use Case) 유스케이스는시스템이수행하는활동들을순차적으로기술 액터 (Actor, 행위자 ) 에게의미있는결과를제공 유스케이스는모델에서행동사물을구조화하기위해사용되고통신으로실현 유스케이스는실선으로된타원으로표현하고보통이름을안에넣는다. [ 그림 2-5] 유스케이스 5
클래스 (Class) 동일한속성, 오퍼레이션, 관계, 그리고의미를공유하는객체를기술한것 클래스는직사각형으로표현 사각형안에이름, 속성, 오퍼레이션을넣는다. [ 그림 2-2] 클래스 6
컴포넌트 (Component) 컴포넌트는시스템의물리적 ( 눈에보이는 ) 이고대체가능한부분 컴포넌트는일반적으로클래스, 인터페이스, 그리고통신과같이서로다른논리요소를물리적으로패키지화한것 컴포넌트는탭이달린직사각형으로표시하며이름을안에넣는다. [ 그림 2-7] 컴포넌트 7
노드 (Node) 노드는실행할때에존재하는물리적요소이다. 컴포넌트가노드에존재할수있으며노드에서노드로이동 노드는육면체로표시하고이름을안에넣는다. [ 그림 2-8] 노드 8
행동사물 행동사물은 UML 모델의동적부분 모델의동사로서, 시간과공간에따른행동을나타낸다. 교류 (Interaction) 교류는행동이며, 목적을위해객체들간에주고받는메시지로구성 객체로이루어진공동체의행동, 또는개별오퍼레이션의행동을교류로명세화 교류의다양한요소 : 메시지, 활동순서 ( 메시지에의해호출되는행동 ), 링크 메시지는직선으로나타내고, 항상오퍼레이션이름을포함 [ 그림 2-9] 메시지 9
상태머신 (State Machine) 상태머신은상태의순서를지정하는행동 개별클래스의행동이나여러클래스들로된특정행동을하나의상태로지정 상태머신의서로다른요소 : 상태전이 ( 상태에서다른상태로의흐름 ), 사건 ( 전이를유발시키는것 ), 활동 ( 전이에따른응답 ) 상태는둥근직사각형으로표현하며안에이름을넣고, 필요시하위상태를포함 [ 그림 2-10] 상태머신 10
그룹사물 그룹사물 : UML 모델을조직화하며, 모델을분해하고담을수있는상자를의미 그룹사물 : 패키지 패키지 (Package) 패키지는요소를그룹으로묶는다. 구조사물, 행동사물, 그리고다른그룹사물까지도하나의패키지내에들어감 컴포넌트가물리적인것에반해패키지는개념적 ( 개발시에만존재한다는의미 ) 패키지는탭이달린폴더로표현하며보통이름만쓰는데, 때때로그안에있는내용을표현하기도한다. [ 그림 2-11] 패키지 11
주해사물 주해사물은 UML 모델을설명하는부분 주석으로서모델에있는어떠한요소에대해서설명하고, 비고를표시할때사용 노트 (Note) 노트는하나의요소또는공동체에첨부되는제약과주석을나타내기위해사용 노트는접힌직사각형으로표현되며, 문자와그래픽을함께나타낼수있다. [ 그림 2-12] 노트 12
UML 구성관계요소 관계 (Relationship) 의존 (Dependency) 연관 (Association) 일반화 (Generalization) 실체화 (Realization) 13
UML 구성관계요소 의존 의존은두사물간의의미적관계 한사물의명세서가바뀌면그것을사용하는다른사물에게영향을끼치는것 ( 그반대도반드시성립하는것은아니다. ) 의존은점선으로된직선을사용하고, 의존하고있는사물을향하고있다. 의존은한클래스가다른클래스를오퍼레이션의매개변수로사용하는경우에주로나타난다. [ 그림 2-13] 의존 14
연관 UML 구성관계요소 연관은구조사물을연결하는실선으로표현 연관은구조적관계로서어느한사물객체가다른사물객체와연결을의미 두클래스가서로연결되어연관이있다면, 한쪽객체에서다른객체로옮겨갈수있으며그반대도가능 한연관의양쪽끝이같은클래스를향해원을그리며순환하는것도가능 한클래스의객체가있을때같은클래스의다른객체에게연결할수있다는의미 연관에추가할수있는것들 기본형태에연관의이름, 역할, 다중성, 그리고집합연관등을추가 쌍방연관 : 정확하게두클래스를연결하는연관 다수연관 : 2개이상의클래스를연결하는연관 15
UML 구성관계요소 1 이름 연관은이름을가질수있다. 관계의의미를설명하기위해이름을사용 의미의모호함을없애기위해이름에방향성을추가할수있는데, 이름이읽히기를원하는방향으로방향삼각형을표기 [ 그림 2-14] 이름 2 역할 클래스가연관에참여하면그것이수행해야하는특별한역할을가진다. 클래스가수행하는역할을명시적으로이름지을수있다. 클래스옆에원하는역할을써줌으로써연관관계내에서의역할을표시 [ 그림 2-15] 역할 16
UML 구성관계요소 3 다중성 연관은객체간구조적관계를표현 한연관에참여하는하나의객체에대해상대쪽에는몇개의객체가연결되어있는지를밝히는것이중요한때가있다. 몇개 를일컬어연관역할에대한다중성이라한다. 다중성은하나 (1), 제로혹은하나 (0..1), 다수 (0..*), 하나이상 (1..*) 등으로표현 [ 그림 2-16] 다중성 17
UML 구성관계요소 4 집합연관 순수한연관은두동료클래스사이의구조적관계를표현하는데, 두클래스는개념적으로같은수준에위치 전체 / 부분 관계를모델링하려고할때가있다. 한클래스는더큰것 ( 전체 ) 을대표하고그것은더작은것들 ( 부분 ) 로구성 이러한관계를집합연관 ( has-a 관계 ) 전체쪽한객체가부분쪽객체들을소유 연관에속이빈다이아몬드를전체쪽에추가하여표현 [ 그림 2-17] 집합연관 18
UML 구성관계요소 일반화 일반화는일반화된사물과좀더특수화된사물사이의관계 ( is-a-kind-of 관계 ) 일반화는자식객체가부모객체가사용되는어느곳에서나사용될수있다는것을의미 ( 그반대는성립하지않는다.) 자식객체는부모객체를대신할수있다는것 일반화는실선으로서속이빈큰화살표로부모를향해그린다. 부모 / 자식관계를표현하려면일반화를사용 일반화는주로클래스와인터페이스사이에서상속관계를보여주기위해사용 UML 에서는다양한사물들사이에서도일반화를사용 ( 패키지 ) [ 그림 2-18] 일반화 19
UML 구성관계요소 실체화 객체들사이의의미적관계로서한객체가다른객체의계약을지정 의존과일반화의혼합이며, 그표기법도의존과일반화에서가져왔다. 인터페이스와인터페이스에오퍼레이션이나서비스를제공하는클래스나컴포넌트사이의관계를지정하기위해서사용 [ 그림 2-19] 실체화관계 20
다이어그램 다이어그램 (Diagram) 다이어그램은요소들을그림으로표현한것 서로다른관점에서시스템을가시화하기위해다이어그램으로표현하기때문에각다이어그램은시스템을여러방면으로투영하는것 시스템의동적인부분 ( 행위모델링 ) 을가시화하기위해 5 가지다이어그램사용 1 유스케이스다이어그램 (Usecase Diagram) 2 순차다이어그램 (Sequence Diagram) 3 통신다이어그램 (Communication Diagram) 4 상태다이어그램 (State Diagram) 5 활동다이어그램 (Activity Diagram) 시스템의정적인부분 ( 구조모델링 ) 을가시화하기위해 4 가지다이어그램사용 1 클래스다이어그램 (Class Diagram) 2 객체다이어그램 (Object Diagram) 3 컴포넌트다이어그램 (Component Diagram) 4 배치다이어그램 (Deployment Diagram) 21
다이어그램 유스케이스다이어그램 유스케이스 ( 시스템을사용하는다양한경우 ) 와행위자 ( 외부행위자 ) 의관계를구조적으로나타낸다. 시스템의정적유스케이스뷰를다룬다. 시스템행동을조직화하고모델링하는데특히중요 22
다이어그램 순차다이어그램과통신다이어그램 순차다이어그램과통신다이어그램은교류도 (Interaction Diagram) 의한종류 교류도는 객체와관계, 그리고이들사이에보낼수있는메시지로구성되는교류 교류도는시스템의동적뷰를다룬다. 23
다이어그램 순차다이어그램 순차다이어그램은 메시지의시간적순서를강조하는교류도 시스템외부이벤트를처리하기위하여시스템내부객체간에주고받는동적메시지를시간의흐름에따라표현한것 24
다이어그램 통신다이어그램 메시지를주고받는객체의구조적구성을강조하는교류도 순차다이어그램과동일한내용을객체상호관계의관점에서표현한것 순차와통신다이어그램은동일한구조로되어있어서서로변환이가능 25
다이어그램 상태다이어그램 상태머신을나타내며, 시스템의내부전이를표현 상태머신은상태 (State), 전이 (Transition), 이벤트 (Event), 활동 (Activity) 으로구성 시스템의동적뷰를다룬다. 인터페이스, 클래스, 또는통신의행동을모델링하는데중요 이벤트에따라순차적으로일어나는객체행동에중점을두기때문에빠른반응이필요한시스템을모델링할때유용 26
다이어그램 활동다이어그램 시스템내부에있는활동의흐름 객체간의제어흐름에중점을둔다. 시스템의동적뷰를다룬다. 시스템기능을모델링할때중요하다. 27
다이어그램 클래스다이어그램 클래스, 인터페이스, 통신, 그리고이들의관계들을나타내며, 객체지향시스템모델링에서가장공통적으로쓰이는다이어그램 시스템의정적설계뷰를다루며, 활성클래스를갖는클래스다이어그램은시스템의정적프로세스뷰를다룬다. 객체다이어그램 객체와객체들사이의관계를나타낸다. 특정시점의객체들의구조적상태를표현 클래스다이어그램처럼시스템의정적설계뷰와정적프로세스뷰를다루지만실제사례나프로토타입사례의시각에서표현 28
다이어그램 컴포넌트다이어그램 컴포넌트사이의구성과의존을나타내며, 시스템의정적구현뷰를다룬다. 클래스다이어그램과관련이있는데, 일반적으로하나의컴포넌트는클래스다이어그램에있는하나또는그이상의클래스, 인터페이스, 통신들과대응 29
다이어그램 배치다이어그램 실행시처리하는노드와그노드에있는컴포넌트들의구성을나타내며, 시스템의정적배치뷰를나타낸다. 컴포넌트다이어그램과관련이있는데, 일반적으로하나의노드는컴포넌트다이어그램안에있는하나또는그이상의컴포넌트를수용하기때문 30
Thank you