UML이란 무었인가?
1. 출현배경
보통 현재 개발하고 있는 시스템의 사양을 프로젝트와 관련 없는 다른 사람에게 전하고 싶을 때는 어떤 방법을 취할까? 말로나, 문장, 도표에 의한 표현 등, 정보의 전달 방법은 여러 가지가 있다. 가능한 정확히 전하기 위해 정해놓은 표준 전달방법을 UML이라고 생각해 보면 어떨가?
물론 그 표기방법에 대해서는 보는 사람이 모두 알아야 한다는 것이 전제조건이 되겠지만, 언뜻 보기에는 훌륭한 방법이라고 생각이 된다.
이전엔 구조적인 개발방법에서는 이러한 표기법으로 DFD(Data Flow Diagram)를 주로 사용하였으며, 정보공학적 방법론에서는 여러 가지 표기법(SWOT Diagram, ERD, CRUD matrix, Process Flow Chart등)을 이용해 전달해 왔다. 물론 그 표기법과 적용법도 제창한 단체에 따라 조금씩 달랐다.
아마도 이런 것들이 개발자들 사이에서 뿐만이 아니고 이런 개발자들을 관리하는 관리자, 또한 개발을 의뢰한 클라이언트 들 모두에게 문제가 되지 않았을까?
이런 이유로 객체지향방법론에서 들고 나온 것이 UML(Unfied Modeling Language)가 아닐까?
기존의 표현법으로는 객체지향 방법론에서의 객체지향 특유의 표현을 하기 어렵고, 도표와 도표 사이의 연관관계도 알기 어렵고, 시스템 개발의 각 공정 별로 일관된 표현법을 사용하기 어려움이 새로운 분야로서 UML을 만들어 내게 되었다고 생각한다.
다시 말해 UML이란 새로운 개발 방법론인 객체지향방법론이 들고 나온 개발 지침에 입각한 도표와 이 도표를 만들고 읽기 쉽게 하는 일종의 규칙이라는 이야기로 결론내면 크게 틀리지 않을것이다.
2. UML Diagram의 분류
UML은 13개의 Diagram이 정의되어져 있다고 한다. 큰 분류로 2종류로 분류해 볼수 있다.
대표적인 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가 시스템의 다른 부분들과의 상호작용하는 지점 등을 포함합니다. |
1) 시스템의 정적인 구조를 표현하는 Diagram
Object Diagram
Class Diagram
Compozite 구조도
Component Diagram
Pakage Diagram
Deploy Diagram
2) 시스템의 넓은 움직임을 표현하는 Diagram
Activity Diagram
Use case Diagram
Cominication Diagram
Sequence Diagram
Timming Diagram
상호작용 개요도


Use Case Diagram
Sequence Diagram
Sequence Diagram (Role)
Collaboration Diagram
Collaboration Diagram (Role)
Statechart Diagram
Activity Diagram
Component Diagram
Deployment Diagram
Composite Structure Diagram
댓글을 달아 주세요