UML ( Unified Modeling Language )의 개요
UML은 시스템 분석, 설계, 구현등 시스템 개발 과정에서 개발자와 고객간에 의사소통을 원할하게 하기위한 목적의 표준화한 대표적인 객체지향 *모델링언어이다.
( 모델링 언어 : 만들고자 하는 것을 시각적으로 표현할 수 있는 표기법, 도구 )
UML은 Rumbaugh (럼바우, OMI ), Booch, Jacobson등의 객체지향 방법론의 장점을 통합하여 객체 기술의 국제표준화기구인 OMG ( Object Management Group )에서 표준을 지정했다.
UML을 이용해 시스템 표준 구조를 표현하는 6개의 구조 다이어그램과 시스템의 동작을 표현하는 7개의 행위 다이어그램을 작성할 수 있다.
각각의 다이어그램은 사물과 사물간의 관계를 용도에 맞게 표현한다.
UML의 구성요소에는 사물( Things ), 관계( Relationships ), 다이어그램( Diagram )등이 있다.
사물 ( Things )
사물은 모델을 구성하는 가장 중요한 기본 요소로 다이어그램 안에서 관계가 형성될 수 있는 대상을 말한다.
사물의 종류
- 구조사물 ( Structure Things ) : 시스템의 개념적, 물리적 요소를 표현
- Class
- Use Case
- Component
- Node
- 행동사물 ( Behavioral Things ) : 시간과 공간에 따른 요소의 행위를 표현
- Interaction
- State Machine
- 그룹사물 ( Group Things ) : 요소들을 그룹으로 묶어서 표현
- Package
- 주해사물 ( Annotation Things ) : 부가적인 설명이나 제약조건등을 표현
- Note
관계 ( Relationships )
사물과 사물 사이의 연관성을 표현하는것
관계의 종류
- 연관 관계 ( Assosiation )
- 집합 관계
- 포함 관계
- 일반화 관계
- 의존 관계
- 실체화 관계
Assosiation Relationship
2개 이상의 사물이 서로 관련되어 있음을 표현한다.
사물과 사물 사이를 실선으로 표현하며 방향성은 화살표로 나타낸다.
서로에게 영향력을 주는 관계는 화살표는 없이 실선으로만 표현한다.
연관에 참여하는 객체의 개수를 의미하는 다중도를 선 위에 표현한다.
다중도 | 의미 |
1 | 1개의 객체와 연관되어 있다. |
n | n개의 객체와 연관되어 있다. |
0..1 | 없거나 1개의 연관된 객체가 존재한다. |
0..* or * | 없거나 다수개의 연관된 객체가 존재한다. |
1..* | 적어도 1개 이상의 객체가 연관되어 있다. |
n..* | 적어도 n개 이상의 객체가 연관되어 있다. |
n..m | 최소 n개에서 최대 m개이상의 객체가 연관되어 있다. |
Aggregation Relationship
포함하는 쪽( 전체, Whole )과 포함되는 쪽( 부분, Part )은 서로 독립적이다.
포함되는 쪽( 부분, Part )에서 포함하는 쪽( 전체, Whole )으로 속이 빈 마름모를 연결해서 표현한다.
Composition Relationship
집합관계의 특수한 형태로 Whole의 사물이 Part 사물에게 영향을 미치는 관계이다.
Whole과 Part는 서로 독립될 수 없고 생명 주기를 함께한다.
Part에서 Whole으로 속이 채워진 마름모를 연결해서 표현한다.
Generalization Relationship
일반적인 사물 | 구체적인 사물 |
사람 | 여자, 남자 |
일반적인 개념 | 구체적인 개념 |
상위 | 하위 |
부모 | 자식 |
구체적인 ( 하위 ) 사물에서 일반적인 ( 상위 ) 사물으로 속이 빈 화살표를 연결한다.
Dependency Relationship
연관관계처럼 서로 연관은 없으나 필요에 의해 서로 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계를 표현한다.
하나의 사물과 다른 사물이 소유관계는 아니지만 사물의 변화가 다른 사물에도 영향을 미치는 관계이다.
일반적으로 한 클래스가 다른 클래스를 오퍼레이션의 매개변수로 사용하는 경우에 나타내는 관계이다.
영향을 주는 사물( 이용자 )에서 영향을 받는 사물( 제공자 ) 쪽으로 점선 화살표를 연결한다.
Realization Relationship
사물이 할 수 있거나 해야하는 기능( Operation, Interface )로 서로를 그룹화할 수 있는 관계를 표현한다.
한 사물이 다른 사물에게 오퍼레이션을 수행하도록 지정하는 의미적 관계이며 사물에서 기능 쪽으로 속이 빈 점선 화살표를 연결한다.
다이어그램 ( Diagram )
사물과 관계를 도형으로 표현한 것을 말한다.
여러 관점에서 시스템을 가시화한 View를 제공함으로써 의사소통에 도움을 준다
정적 모델링은 구조적 다이어그램으로 표현한다
동적 모델링은 행위 다이어그램으로 표현한다.
구조적 다이어그램의 종류 ( Structure Diagram )
- Class Diagram
- Object Diagram
- Component Diagram
- Deplayment Diagram
- Composeite Structure Diagram
- Package Diagram
Class Diagram ( 클래스 다이어그램 )
Class의 속성, Class 사이의 관계, 구조를 파악하고 구조상의 문제점을 도출한다.
Object Diagram ( 객체 다이어그램 )
Class에 속한 사물( 객체 )들을 말한다.
즉, Instance를 특정 시점의 객체와 객체 사이의 관계로 표현한다.
럼바우 ( Rumbaugh ) 객체지향 분석 기법에서 객체 모델링에 활용된다.
Component Diagram ( 컴포넌트 다이어그램 )
실체 구현 모듈인 컴포넌트간의 관계나 인터페이스를 표현한다.
구현 단계에서 사용되는 다이어그램이다.
Deployment Diagram ( 배치 다이어그램 )
결과물, 프로세스, 컴포넌트등 물리적 요소들의 위치를 표현한다.
노드와 의사소통( 통신 ) 경로를 표현한다.
구현 단계에서 사용되는 다이어그램이다.
Composeite Structure Diagram ( 복합체 구조 다이어그램 )
클래스나 컴포넌트가 복합구조를 갖는 경우 해당 내부 구조를 표현한다.
Package Diagram ( 패키지 다이어그램 )
유스케이스나 클래스등의 모델 요소들을 그룹화한 패키지들의 관계를 표현한다.
행위 다이어그램의 종류 ( Behavioral Diagram )
- Use Case Diagram
- Sequence Diagram
- Communication Diagram
- State Diagram
- Active Diagram
- Interaction Diagram
- Timing Diagram
Use Case Diagram ( 유스케이스 다이어그램 )
요구를 분석하는 것으로 기능 모델링 작업에 사용한다.
사용자( Actor )와 사용 사례( Use Case )로 구성한다.
사용 사례간에는 여러 형태의 관계로 이루어진다.
Sequence Diagram ( 시퀸스 다이어그램 )
상호작용하는 시스템 또는 객체들이 주고받는 메세지를 표현한다.
Communication Diagram ( 커뮤니케이션 다이어그램 )
시퀸스 다이어그램과 같이 동작에 참여하는 객체들이 주고받는 메세지를 표현하는데, 메세지 뿐만 아니라 객체들간의 연관성까지 표현한다.
State Diagram ( 상태 다이어그램 )
하나의 객체가 자신이 속한 클래스의 상태 변화, 다른 객체와 상호작용에 따라 상태가 어떻게 변화하는지를 표현한다.
럼바우( Rumbaugh ) 객체지향 분석기법에서 동적 모델링에 사용된다.
Active Diagram ( 활동 다이어그램, 액티비티 다이어그램 )
시스템이 어떤 기능을 수행하는지 객체의 로직이나 조건에 따른 처리의 흐름을 순서에 따라 표현한다.
Interaction Overview Diagram ( 상호작용 다이어그램 )
상호작용 다이어그램간의 제어 흐름을 표현한다.
Timing Diagram ( 타이밍 다이어그램 )
객체 상태 변화와 시간 제약을 명시적으로 표현한다.
'Etc > 정보처리기사' 카테고리의 다른 글
[정처기] 디자인 패턴 ( Design Pattern )을 알아보자! (0) | 2022.02.26 |
---|---|
[정처기] 객체지향 ( Object Oriented )란?? (0) | 2022.02.18 |
[정처기] 요구사항 정의를 알아보자! (0) | 2022.02.16 |
[정처기] Software 개발 방법론의 개요 (0) | 2022.02.16 |
[정처기] Software Life Cycle ( 수명주기 )를 알아보자! (0) | 2022.02.16 |