UML 다이어그램이란?
UML 다이어그램은 Unified Modeling Language(통합 모델링 언어)를 사용하여 시스템과 소프트웨어를 시각화하는 방법으로 소프트웨어 엔지니어는 복잡한 소프트웨어 시스템의 설계, 아키텍처 등을 이해하기 위해 UML 다이어그램을 작성합니다.
UML 다이어그램은 중요한 코드 간의 관계와 계층 구조를 시각화하여 정보를 이해하기 쉽게 할 수 있습니다.
UML 다이어그램을 사용하면 진행 중인 프로젝트를 지속적으로 트래킹할 수 있어 소프트웨어 설계에서 정보의 사일로화를 방지할 수 있습니다.
*데이터 사일로(Data Silo)는 데이터가 격리되어 특정 조직/부서/단위에서만 정보 접근 및 공유가 가능하여 다른 조직/부서/단위에서는 데이터가 격리되는 현상
UML 다이어그램의 좋은점
위에도 서술하였지만 UML 다이어그램은 소프트웨어 개발 팀에게 매우 유용한 다이어그램 중 하나입니다.
- 복잡한 아이디어와 시스템을 쉽게 이해
UML 다이어그램을 사용하면 추상적인 아이디어와 소프트웨어 시스템을 쉽게 시각화할 수 있어 소프트웨어를 설계할 때 공동 작업이 필요한 소프트웨어 엔지니어에게 매우 유용한 도구입니다.
UML 다이어그램을 사용하면 프로그래밍 언어에 익숙하지 않은 사람들도 쉽게 시스템 작동 방식을 이해할 수 있습니다.- 복잡한 코드를 비주얼 다이어그램으로 변환
소프트웨어 구축에는 수천 줄의 복잡한 코드가 필요하며, 그 중에는 관계와 계층이 존재하는 경우가 많아 코드를 이해하는 것은 매우 어렵고 시간이 많이 걸리는 작업입니다.
그러나 UML 다이어그램을 사용하면 코딩 환경을 이해하기 쉬운 시각적 다이어그램으로 변환 할 수 있습니다.- 인식 공유에 활용
만약 팀의 누군가가 시스템의 작동 방식에 의문이 있다면, 이 다이어그램을 언제든지 참고할 수 있으며 소프트웨어 개발 프로세스의 진행 상황과 작업 우선순위에 대해 팀 구성원과 논의할 수 있습니다.- 시스템의 전체 이미지를 파악 가능
소프트웨어 개발 프로세스에서는 무엇을 만들려고 하는지 이해하고 기억하는 것이 중요합니다. 프로젝트의 전체 이미지를 시각화하지 않으면 개발자는 방대한 코드를 작성하는 동안 완성 이미지를 잃어버릴 수도 있습니다.
UML 다이어그램은 시스템의 전체 다이어그램을 시각화하는 데 도움이 되며 시스템 설계에서 지도 역할을 합니다.- 공통의 기법을 사용하여 프로그래머가 정보를 한눈에 이해 가능
모든 프로그래머가 같은 종류의 코드와 프로그래밍 언어를 이해할 수 있는 것은 아닙니다.
같은 코드의 라이브러리를 개발하는 데는 수백 가지 방법이 있습니다.
UML 다이어그램은 다른 기술과 지식을 가진 프로그래머가 사용할 수 있는 공통 언어로도 활약합니다.
UML 다이어그램의 종류

UML 다이어그램에는 ‘구조도 다이어그램’과 ‘동작 다이어그램’의 두 가지 하위 범주가 있습니다.
구조 다이어그램: 시스템을 구성하는 구성요소와 해당 구성요소 간의 관계를 그립니다. 이 다이어그램은 시스템의 정적 측면을 보여줍니다.
작동 다이어그램: 시스템에서 무슨 일이 일어나고 있는지를 나타냅니다. 모든 구성 요소가 서로 또는 다른 시스템이나 사용자와 어떻게 상호 작용하는지 보여줍니다.
구조 다이어그램
| 다이어그램 유형 | 목적 |
|---|---|
| 클래스(Class) | 시스템을 구성하는 클래스들 사이의 관계 표현 |
| 객체(Object) | 객체 정보를 보여줌 |
| 복합체 구조(Composite Structure) | 복합 구조의 클래스와 컴포넌트 내부 구조 표현 |
| 배치(Deployment) | S/W, H/W, N/W를 포함한 실행 시스템의 물리 구조 표현 |
| 컴포넌트(Component) | 컴포넌트 구조 사이의 관계 표현 |
| 패키지(Package) | 클래스나 유스 케이스 등을 포함한 여러 모델 요소들을 그룹화해 패키지를 구성하고 패키지들 사이의 관계를 표현 |
작동 다이어그램
| 다이어그램 유형 | 목적 |
|---|---|
| 활동(Activity) | 업무 처리 과정이나 연산이 수행되는 과정 표현 |
| 상태 머신(State Machine) | 객체의 생명주기 표현 |
| 유스 케이스(Use Case) | 사용자 관점에서 시스템 행위를 표현 |
| 배치(Deployment) | S/W, H/W, N/W를 포함한 실행 시스템의 물리 구조 표현 |
| 상호작용(Interaction) | 목적에 따라 4가지로 분류됨 |
| 순차(Sequence) | 시간 흐름에 따른 객체 사이의 상호작용 표현 |
| 상호작용 개요(Interaction overview) | 여러 상호작용 다이어그램 사이의 제어 흐름을 표현 |
| 통신(Communication) | 객체 사이의 관계를 중심으로 상호작용 표현 |
| 타이밍(Timing) | 객체 상태 변화와 시간 제약을 명시적으로 표현 |