UML
개념
- 객체지향 소프트웨어 개발 과정에서 산출물을 명세화, 시각화, 문서화할 때 사용되는 모델링 기술과 방법론을 통합해서 만든 표준화된 범용 모델링 언어
UML의 특징
가구명문 - 가시화 언어 / 구축 언어 / 명세화 언어 / 문서화 언어
UML의 구성 요소
사관다 - 사물 / 관계 / 다이어그램
구조적 다이어그램(= 정적 다이어그램)
클객컴배복패
클래스 다이어그램 | - 객체지향 모델링 시 클래스의 속성 및 연산과 클래스 간 정적인 관계를 표현한 다이어그램 |
객체 다이어그램 | - 클래스에 속한 사물들, 즉 인스턴스를 특정 시점의 객체와 객체 사이의 관계로 표현한 다이어그램 - 연관된 모든 인스턴스를 표현 |
컴포넌트 다이어그램 | - 시스템을 구성하는 물리적인 컴포넌트와 그들 사이의 의존 관계를 나타내는 다이어그램 |
배치 다이어그램 | - 컴포넌트 사이의 종속성을 표현하고, 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현하는 다이어그램 |
복합체 구조 | - 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현하는 다이어그램 |
패키지 다이어그램 | - 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현한 다이어그램 |
행위적 다이어그램(= 동적 다이어그램)
유시커 상활타
유스케이스 | - 시스템이 제공하고 있는 기능 및 그와 관련된 외부 요소를 사용자의 관점에서 표현하는 다이어그램 |
시퀀스 | - 객체 간 동적 상호작용을 시간적 개념을 중심으로 메시지 흐름으로 표현한 다이어그램 |
커뮤니케이션 | - 동작에 참여하는 객체들이 주고받는 메시지를 표현하고, 메시지뿐만 아니라 객체 간의 연관까지 표현하는 다이어그램 |
상태 | - 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호작용에 따라 상태가 어떻게 변화하는지 표현하는 다이어그램 |
활동 | - 시스템이 어떤 기능을 수행하는지를 객체의 처리 로직이나 조건에 따른 처리의 흐름으로 순서대로 표현하는 다이어그램 |
타이밍 | - 객체 상태 변화와 시간 제약을 명시적으로 표현하는 다이어그램 |
스테레오 타입
개념
- UML의 기본적 요소 이외의 새로운 요소를 만들어내기 위한 확장 메커니즘
- UML의 스테레오 타입은 길러멧 기호를 사용하여 표현
스테레오 타입의 유형
<<include>> | - 하나의 유스케이스가 어떤 시점에 반드시 다른 유스케이스를 실행하는 포함 관계 | ![]() |
<<extend>> | - 하나의 유스케이스가 어떤 시점에 다른 유스케이스를 실행할 수도 있고, 그렇지 않을 수도 있는 확장 관계 | ![]() |
<<interface>> | - 모든 메서드가 추상 메서드이며 바로 인스턴스를 만들 수 없는 클래스로 추상 메서드와 상수만으로 구성된 클래스 | ![]() |
<<entity>> | - 일반적으로 정보 또는 오래 지속되는 연관된 행위를 형상화하는 클래스로 유스케이스 처리 흐름이 수행되는 과정에서 기억 장치에 저장되어야 할 정보를 표현하는 클래스 | ![]() |
<<boundary>> | - 시스템과 외부 액터와의 상호작용을 담당하는 클래스 | ![]() |
<<control>> | - 시스템이 제공하는 기능의 로직 및 제어를 담당하는 클래스 | ![]() |
클래스 다이어그램
개념 : 객체지향 모델링 시 클래스의 속성 및 연산과 클래스 간 정적인 관계를 표현한 다이어그램
구성요소
클래스 | - 공통의 속성, 연산(메서드), 관계, 의미를 공유하는 객체들의 집합 |
속성 | - 클래스의 구조적 특성에 이름을 붙인 것으로 특성에 해당하는 인스턴스가 보유할 수 있는 값의 범위를 기술 |
연산 | - 이름, 타입, 매개변수들과 연관된 행위를 호출하는데 요구되는 제약사항들을 명시하는 클래스의 행위적 특징 - 객체에 요청하여 행동에 영향을 줄 수 있는 서비스 |
접근 제어자 | - 클래스에 접근할 수 있는 정도를 표현 - - : 클래스 내부 접근만 허용(private) - + : 클래스 외부 접근을 허용(public) - # : 동일 패키지/파생 클래스에서 접근 가능(protected) - ~ : 동일 패키지 클래스에서 접근 가능(default) |
UML의 관계
연의 일실 포집 - 연관 관계(association) / 의존 관계(dependency) / 일반화 관계(generalization) / 실체화 관계(realization) / 포함 관계(composition) / 집합 관계(aggregation)
연관 관계(association) | ![]() |
의존 관계(dependency) | ![]() |
일반화 관계(generalization) | ![]() |
실체화 관계(realization) | ![]() |
포함 관계(composition) | ![]() |
집합 관계(aggregation) | ![]() |
추상 클래스 / 인터페이스
추상 클래스 | - 객체 인스턴스를 생성하지 않고, 단지 유사 클래스들의 공통된 특징을 정의하고, 하나 이상의 추상 메서드와 일반 필드 및 일반 메서드를 포함하는 클래스 - 동일한 부모를 가지는 클래스를 묶는 개념으로 상속을 받아서 기능을 확장시키는 것이 목적 |
인터페이스 | - 기능(Function)을 모아놓은 클래스로 추상 메서드와 상수만을 포함하는 추상 클래스 - 구현하는 모든 클래스에 대해 특정한 메서드가 반드시 존재하도록 강제하는 역할 |
유스케이스 다이어그램
- 시스템이 제공하고 있는 기능 및 그와 관련된 외부 요소를 사용자의 관점에서 표현하는 다이어그램
포함 관계 | - 하나의 유스케이스가 어떤 시점에 반드시 다른 유스케이스를 실행하는 포함 관계 | ![]() |
확장 관계 | - 하나의 유스케이스가 어떤 시점에 다른 유스케이스를 실행할 수도 있고, 그렇지 않을 수도 있는 확장 관계 | ![]() |
일반화 관계 | - 추상적인 액터와 좀 더 구체적인 액터 사이에 맺어주는 관계 - 일반화 관계를 액터에 적용하면 유스케이스 다이어그램에서 사용되는 여러 액터들의 의미를 좀 더 명확하게 하고 다이어그램도 보다 간결하게 작성 |
![]() |
시퀀스 다이어그램
- 객체 간 상호작용을 메시지 흐름으로 표현한 다이어그램
패키지 다이어그램
- 시스템의 서로 다른 패키지들 사이의 의존 관계를 표현하기 위한 다이어그램
활동 다이어그램
- 시스템이 어떤 기능을 수행하는지를 객체의 처리 로직이나 조건에 따른 처리의 흐름으로 순서대로 표현하는 다이어그램
상태 다이어그램
- 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호작용에 따라 상태가 어떻게 변화하는지 표현하는 다이어그램
커뮤니케이션 다이어그램
- 시퀀스 다이어그램과 같이 동작에 참여하는 객체들이 주고받는 메시지를 표현하고, 메시지뿐만 아니라 객체 간의 연관까지 표현하는 다이어그램
컴포넌트 다이어그램
- 시스템을 구성하는 물리적인 컴포넌트와 그들 사이의 의존 관계를 나타내는 다이어그램