Unified Modeling Language
객체지향 소프트웨어 개발 과정에서 산출물을 명세화, 시각화, 문서화할 때 사용되는 모델링 기술과 방법론을 통합해서 만든 표준화된 범용 모델링 언어
UML은 방법론을 통합한 것으로, 표준화된 모델링 기법을 제공한다.
다양한 프로그래밍 언어로 실행 시스템의 예측 가능
UML을 소스코드로 변환하여 구축 가능
역변환하여 역공학 가능
UML은 사물, 관계, 다이어그램으로 구성된다.
추상적인 개념으로, 주제를 나타내는 요소
단어 관점에서 명사 또는 동사를 의미한다.
사물의 의미를 확장하고 명확히 하는 요소
사물과 사물을 연결하여 관계를 표현하는 요소
단어 관점에서 형용사 또는 부사를 의미한다.
사물과 관계를 모아 그림으로 표현한 형태
형식과 목적에 따라 9가지로 정의한다.
Structural Diagram / Static Diagram
클래스에 속한 사물(객체)들, 즉 인스턴스를 특정 시점의 객체와 객체 사이의 관계로 표현한 다이어그램
연관된 모든 인스턴스를 표현한다.
인스턴스 Instance
객체 지향 프로그래밍에서 해당 클래스의 구조로 컴퓨터 저장 공간에서 할당된 실체
시스템을 구성하는 물리적인 컴포넌트와 그들 사이의 의존 관계를 나타내는 다이어그램
구현 단계에서 사용된다.
구성 요소: 컴포넌트, 인터페이스, 의존 관계
컴포넌트 사이의 의존 관계는 한 컴포넌트에 변경이 발생한 경우, 변경 범위 추적에 유용하다.
컴포넌트 사이의 종속성을 표현하고, 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현하는 다이어그램
구현 단계에서 사용된다.
유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현하는 다이어그램
시스템의 서로 다른 패키지들 사이의 의존 관계를 표현하기 위한 다이어그램
패키지: 요소들을 그룹으로 조직하기 위한 요소
의존 관계: 하나의 패키지가 다른 패키지를 사용하는 관계
의존성의 성질을 나타내기 위해 스테레오 타입을 붙일 수 있다.
(스테레오 타입: <<import>>
, <<access>>
)
객체 간 동적 상호 작용을 시간적 개념을 중심으로 메시지 흐름으로 표현하는 다이어그램
구성 요소: 객체, 생명선, 실행, 메시지
동작에 참여하는 객체들이 주고받는 메시지를 표현하고, 메시지뿐만 아니라 객체 간의 연관까지 표현하는 다이어그램
시스템이나 객체들이 메시지를 주고받으며 시간의 흐름에 따라 상호 작용하는 과정을 표현하고, 문제에 객체의 연관을 표현하는 다이어그램
구성 요소: 액터, 객체, 링크, 메시지
하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지 표현하는 다이어그램
구성 요소: 상태, 시작 상태, 종료 상태, 전이, 이벤트, 전이 조건
시스템이 어떤 기능을 수행하는지를 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서대로 표현하는 다이어그램
구성 요소: 시작점, 전이, 액션/액티비티, 조건(판단) 노드, 병합 노드, 포크 노드, 조인 노드, 구획면
UML의 기본적 요소 이외의 새로운 요소를 만들어내기 위한 확장 메커니즘
형태는 기존의 UML의 요소를 그대로 사용하지만 내부 의미는 다른 목적으로 사용하도록 확장한다.
길러멧 기호 <<>>
를 사용하여 표현한다.
<<include>>
<<extend>>
<<interface>>
<<entity>>
<<boundary>>
<<control>>
클래스가 서로 개념적으로 연결된 선
2개 이상의 사물이 서로 관련되어 있는 상태를 표현
양방향 관계의 경우 화살표 생략
실선으로 표현, 방향성은 화살표
하나의 클래스가 또 다른 클래스를 사용하는 관계
다른 클래스의 멤버 함수 사용
사물 사이에 서로 연관은 있으나, 필요에 따라 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계를 표현
하나의 클래스에 있는 멤버 함수의 인자가 변함에 따라 다른 클래스에 영향을 미칠 때의 관계
점선으로 표현, 영향을 주는 사물이 영향을 받는 사물 쪽으로 점선 화살표
하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현
일반적인 개념을 부모(상위), 구체적인 개념을 자식(하위)
구체적(하위)인 사물에서 일반적(상위)인 사물 쪽으로 속이 빈 화살표를 연결
extends
메서드 사용
화살표로 표현
추상 클래스나 인터페이스를 상속받아 자식 클래스가 추상 메서드를 구현할 때 사용
사물이 할 수 있거나, 해야 하는 기능(행위, 인터페이스)으로 서로를 그룹화할 수 있는 관계 표현
implements
메서드 사용
점선 화살표로 표현
추상 클래스
<<abstract>>
- 객체 인스턴스를 생성하지 않고, 단지 유사 클래스들의 공통된 특징을 정의하고, 하나 이상의 추상 메서드와 일반 필드 및 일반 메서드를 포함하는 클래스
- 동일한 부모를 가지는 클래스를 묶는 개념으로 상속을 받아서 기능을 확장시키는 것이 목적
인터페이스
<<interface>>
- 기능을 모아놓은 클래스로 추상 메서드와 상수만을 포함하는 추상 클래스
- 구현하는 모든 클래스에 대해 특정한 메서드가 반드시 존재하도록 강제하는 역할
영구적이고, 집합 관계보다 더 강한 관계로 구성
포함되는 쪽(Part; 부분)에서 포함하는 쪽(Whole; 전체)으로 속이 채워진 마름모를 연결
집합 관계의 특수한 형태로, 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계를 표현
종속적이다.
전체와 부분을 나타낸다.
채워진 마름모 & 화살표
하나의 객체에 여러 개의 독립적인 객체들이 구성되는 관계
하나의 사물이 다른 사물에 포함되어 있는 관계 표현
포함되는 쪽(Part; 부분)에서 포함하는 쪽(Whole; 전체)으로 속이 빈 마름모를 연결
독립적이다.
전체와 부분을 나타낸다.
빈 마름모 & 화살표