레이블이 다이어그램인 게시물을 표시합니다. 모든 게시물 표시
레이블이 다이어그램인 게시물을 표시합니다. 모든 게시물 표시

2016년 3월 17일 목요일

[UML 4교시] Class 다이어그램을 알아보자

Class 다이어그램이란

1. 개념

  • Subsystem : 물리적인 시스템의 부분 혹은 전체를 명세화하기 위해 요소들을 그룹화하는 요소입니다.

  • Interface : 클래스에 의해 제공되는 서비스를 구성하는 연산들을 포함하는 요소입니다. 또한 연산들을 효과적인 그룹으로 나누고 그것들을 특징지을 수 있는 방법을 제공합니다. 하지만, 인터페이스로는 객체가 생성될 수 없습니다.


  • Providing Interface : Subsystem1에서는 Interface1을 제공해야 한다.


  • Requiring Interface : Subsystem1에서는 Inteface1을 요구하고 있다.

  • Class : 객체의 구조와 행위를 묘사하는 속성(Attribute)과 연산(Operation)의 집합을 선언하는 요소입니다. 그리고, 클래스는 템플릿 파리미터를 가질 수 있습니다.


2. 클래스 다이어그램 표시구문

Class 다이어그램 사용예시

3. StarUML 구문 사용법

  • 콤마(,) : 여러 개의 다이어그램 개체를 나열해서 사용할 때 이용합니다.
  • 연결(-) : 연결 표시가 앞/뒤에 따라 구분되며 시작점 위치가 주(Main) 개체가 된다.
  • 부등호(<,>) : 단방향 작용을 의미하며 등호의 꼭지점 방향이 주(Main) 개체가 된다.
  • 점선(--) : 상호 의존적 관계를 의미하며 부등호(<,>)와 같이 사용할 수 있다.
  • 등호(=) : 상속적 관계를 의미하며 항상 부등호(<,>)와 같이 사용한다.
  • 포함(i) : 의존적 포함 관계를 의미하며 항상 연결, 부등호(<,>)와 같이 사용한다.
  • 확장(e) : 의존적 확장 관계를 의미하며 항상 연결, 부등호(<,>)와 같이 사용한다.
  • 괄호((,)) : 요구인터페이스를 의미하며 항상 연결과 같이 사용한다.
  • 엣(@) : 제공인터페이스를 의미하며 항상 연결과 같이 사용한다.
  • 각진괄호(<>) : 집합 관계를 의미하며 항상 연결과 같이 사용한다.
  • 각진채움괄호(<*>) : 합성 관계를 의미하며 항상 연결과 같이 사용한다.

[UML 2교시] UML 다이어그램별 표기법에 대하여 알아보자

UML다이어그램 표기법

이번 시간에는 UML을 작성하기 위해 필요한 다이어그램과 StarUML 도구의 사용법에 대하여 알아보기로 하겠습니다.

1. 다이어그램

이어그램 종류설명
 Class Diagram클래스 다이어그램(Class Diagram)은 클래스관련 요소들의 여러 가지 정적인 관계를 시각적으로 표현한 것입니다. 클래스 다이어그램은 클래스(Class) 뿐만 아니라 인터페이스(Interface), 열거형(Enumeration), 패키지(Package) 및 여러 가지 관계들 뿐만 아니라 인스턴스(Instance)와 그것들의 연결(Link) 등도 포함할 수 있습니다.
 Use Case Diagram유스케이스 다이어그램(Use Case Diagram)은 특정 시스템 혹은 개체내의 유스케이스(Use Case)들과 그 외부의 액터(Actor)들 간의 관계를 표현한 것입니다. 유스케이스는 해당 시스템의 기능을 표현하며 그것들이 어떤 외부 액터들과 상호작용하는지를 나타냅니다.
 Sequence Diagram시퀀스 다이어그램(Sequence Diagram)은 인스턴스들이 어떻게 상호작용을 하는지를 묘사합니다. 하나의 협동-인스턴스집합(CollaborationInstanceSet)에 포함된 인스턴스(Instance)들 상호간에 주고받는 자극(Stimulus)들의 집합인 상호작용-인스턴스집합(InteractionInstanceSet)을 직접적으로 표현합니다. 시퀀스 역할 다이어그램(Sequence Role Diagram)은 역할(ClassifierRole) 중심의 관점을 반영한 반면, 시퀀스 다이어그램(Sequence Diagram)은 인스턴스(Instance) 중심의 관점을 반영한 것입니다.
 Sequence Diagram (Role)시퀀스 역할 다이어그램(Sequence Role Diagram)은 역할 개념들이 어떻게 상호작용을 하는지를 묘사합니다. 하나의 협동(Collaboration)에 포함된 역할(ClassifierRole)들 상호간에 주고받는 메시지(Message)들의 집합인 상호작용(Interaction)을 직접적으로 표현합니다. 시퀀스 다이어그램(Sequence Diagram)은 인스턴스(Instance) 중심의 관점을 반영한 반면, 시퀀스 역할 다이어그램(Sequence Role Diagram)은 역할(ClassifierRole) 중심의 관점을 반영한 것입니다.
 Collaboration Diagram협동 다이어그램(Collaboration Diagram)은 인스턴스들이 어떻게 협동하는지를 묘사합니다. 하나의 협동-인스턴스집합(CollaborationInstanceSet)에 포함된 인스턴스(Instance)들의 협동 모델을 직접적으로 표현합니다. 협동 역할 다이어그램(Collaboration Role Diagram)은 역할(ClassifierRole) 중심의 관점을 반영한 반면, 협동 다이어그램(Collaboration Diagram)은 인스턴스(Instance) 중심의 관점을 반영한 것입니다.
 Collaboration Diagram (Role)협동 역할 다이어그램(Collaboration Role Diagram)은 역할 개념들이 어떻게 협동하는지를 묘사합니다. 하나의 협동(Collaboration)에 포함된 역할(ClassifierRole)들의 협동 모델을 직접적으로 표현합니다. 협동 다이어그램(Collaboration Diagram)은 인스턴스(Instance) 중심의 관점을 반영한 반면, 협동 역할 다이어그램(Collaboration Role Diagram)은 역할(ClassifierRole) 중심의 관점을 반영한 것입니다.
 Statechart Diagram상태 다이어그램(Statechart Diagram)은 특정 개체의 동적인 행위를 상태(State)와 그것들간의 전이(Transition)를 통해 묘사합니다. 일반적으로 클래스의 인스턴스에 대한 행위를 묘사하는데 사용되지만 그 밖의 요소들에 대해서도 얼마든지 사용될 수 있습니다.
 Activity Diagram액티비티 다이어그램(Activity Diagram)은 상태 다이어그램의 특별한 형태로써, 활동들의 수행 흐름을 묘사하는데 적합합니다. 일반적으로 작업흐름(Workflow)을 표현하기 위해 많이 사용되며, 클래스, 패키지 혹은 연산 등의 개체에 대해 주로 사용됩니다.
 Component Diagram컴포넌트 다이어그램(Component Diagram)은 소프트웨어 컴포넌트 사이의 의존관계를 묘사합니다. 소프트웨어 컴포넌트를 구성하는 요소들과 그것들을 구현하는 요소들도 모두 표현될 수 있습니다.
 Deployment Diagram디플로이먼트 다이어그램(Deployment Diagram)은 물리적인 컴퓨터 및 장비 등의 하드웨어 요소들과 그것에 들이 배치되는 소프트웨어 컴포넌트, 프로세스 및 객체들의 형상을 묘사합니다.
 Composite Structure Diagram복합구조 다이어그램(Composite Structure Diagram)은 분류자(Classifier)의 내부 구조를 표현하는 다이어그램입니다. 여기에는 Classifier가 시스템의 다른 부분들과의 상호작용하는 지점 등을 포함합니다.
http://staruml.sourceforge.net/docs/user-guide(ko)/ch04.html [생성할 수 있는 다이어그램 종류 참조]

2. 다이어그램 표기법

다이어그램 종류표기법현재 요소설명
Class Diagram
Component Diagram
Deployment Diagram
Composite Structure Diagram
 
<=Classifier현재 요소로부터 타겟 요소로 specialization 관계를 맺습니다. 
=>Classifier현재 요소로부터 타겟 요소로 generalization 관계를 맺습니다.
--Classifier현재 요소로부터 타겟 요소로 association 관계를 맺습니다.
<-Classifier타겟 요소로부터 현재 요소로 navigable association 관계를 맺습니다.
->Classifier현재 요소로부터 타겟 요소로 navigable association 관계를 맺습니다.
<>-Classifier현재 요소는 타겟 요소를 aggregate하는 관계를 맺습니다.
-<>Classifier타겟 요소가 현재 요소를 aggregate하는 관계를 맺습니다.
<*>-Classifier현재 요소는 타겟 요소를 compose하는 관계를 맺습니다.
-<*>Classifier타겟 요소가 현재 요소를 compose하는 관계를 맺습니다.
<--Classifier타겟 요소가 현재 요소에 대해서 dependency 관계를 맺습니다.
-->Classifier현재 요소가 타겟 요소에 대해서 dependency 관계를 맺습니다.
)-Classifier타겟 요소가 현재 요소에 대해서 requirement 관계를 맺습니다.
-(Classifier현재 요소가 타겟 요소에 대해서 requirement 관계를 맺습니다.
@-Classifier타겟 요소가 현재 요소를 realization하는 관계를 맺습니다.
-@Classifier현재 요소가 타겟 요소를 realization하는 관계를 맺습니다.
Usecase Diagram()-UseCase현재 요소와 연결된 타겟 모델(Actor)과 communication 연결을 한다.
-()Actor현재 요소와 연결된 타겟 모델(UseCase)과 communication 관계를 맺습니다.
<i-UseCase타겟 요소로부터 현재 요소로 include 관계를 맺습니다.
-i>UseCase현재 요소로부터 타겟 요소로 include 관계를 맺습니다.
<e-UseCase타겟 요소로부터 현재 요소로 extend 관계를 맺습니다.
-e>UseCase현재 요소로부터 타겟 요소로 extend 관계를 맺습니다.
Sequence Diagram
Seqeunce Diagram(Role)
<-Object, ClassifierRole현재 요소로부터 타겟 요소로 stimulus를 생성합니다.
->Object, ClassifierRole타겟 요소로부터 현재 요소로 stimulus를 생성합니다.
<->Object, ClassifierRole타겟 요소로부터 현재 요소로 return을 가지는 stimulus를 생성합니다.
<-Stimulus, Message현재 Stimulus의 Sub-Stimulus(타겟 요소로부터 들어오는)를 생성합니다.
->Stimulus, Message현재 Stimulus의 Sub-Stimulus(타겟 요소로 나가는)를 생성합니다.
<->Stimulus, Message현재 Stimulus의 Sub-Stimulus(타겟 요소로부터 나가면서 리턴을 가지는)를 생성합니다.
<~Stimulus, Message현재 Stimulus 앞에 존재하는 Stimulus(타겟 요소로부터 들어오는)를 생성합니다.
~>Stimulus, Message현재 Stimulus 앞에 존재하는 Stimulus(타겟 요소로 나가는)를 생성합니다.
<_Stimulus, Message현재 Stimulus 뒤에 존재하는 Stimulus(타겟 요소로부터 들어오는)를 생성합니다.
_>Stimulus, Message현재 Stimulus 뒤에 존재하는 Stimulus(타겟 요소로 나가는)를 생성합니다.
Collaboration Diagram
Collaboration Diagram(Role)
<-Object, ClassifierRole현재 요소로부터 타겟 요소로 stimulus를 생성합니다.
->Object, ClassifierRole타겟 요소로부터 현재 요소로 stimulus를 생성합니다.
<->Object, ClassifierRole타겟 요소로부터 현재 요소로 return을 가지는 stimulus를 생성합니다.
Statechart Diagram/
Activity Diagram
<-State, ActionState타겟 요소에서 현재 요소로 나가는 transition을 생성합니다.
->State, ActionState현재 요소에서 타겟 요소로 나가는 transition을 생성합니다.
-*State, ActionState타겟 요소(Initial State)로부터 현재 요소로 들어오는 transition을 생성합니다.
-@State, ActionState현재 요소에서 타겟 요소(Final State)로 나가는 transition을 생성합니다.
<-<>State, ActionState타겟 요소(Decision)에서 현재 요소로 들어오는 transition을 생성합니다.
-><>State, ActionState현재 요소에서 타겟요소(Decision)로 나가는 transition을 생성합니다.
-(H) -(h)State, ActionState현재 요소에서 타겟요소(History)로 나가는 transition을 생성합니다.
-(H*) -(h*)State, ActionState현재 요소에서 타겟요소(Deep History)로 나가는 transition을 생성합니다.
<-|State, ActionState타겟 요소에서 현재 요소로 join해서 들어오는 transition을 생성합니다.
|->State, ActionState현재 요소에서 타겟 요소로 fork해서 나가는 transition을 생성합니다.
http://staruml.sourceforge.net/docs/user-guide(ko)/ch04.html [단축생성 구문 참조]