STUDY

[소프트웨어공학] UML 다이어그램 종류와 용도 정리

sed 2026. 5. 29. 13:00
SMALL

UML 다이어그램

UML(Unified Modeling Language)은 소프트웨어 구조와 동작을 그림으로 표현하기 위한 표준 모델링 언어이다.

 

코드만 보면 시스템 전체 구조를 한눈에 파악하기 어렵다.

특히 여러 클래스가 어떻게 연결되어 있는지, 사용자가 어떤 기능을 사용하는지, 객체들이 어떤 순서로 메시지를 주고받는지 파악하려면 시각적인 표현이 도움이 된다.

 

이때 사용하는 것이 UML 다이어그램이다.

 

UML은 소프트웨어를 개발하기 전에 설계를 정리하거나, 이미 만들어진 시스템을 문서화할 때 사용할 수 있다.

 

UML을 사용하는 이유

UML을 사용하면 복잡한 시스템을 더 쉽게 이해할 수 있다.

 

개발자끼리 말로만 설명하면 오해가 생길 수 있다.

하지만 다이어그램으로 표현하면 클래스 관계, 기능 흐름, 객체 간 상호작용을 더 명확하게 공유할 수 있다.

시스템 구조를 시각적으로 표현
개발자와 기획자 사이의 의사소통 보조
설계 문서화
복잡한 로직 이해
유지보수에 도움

 

UML은 코드를 대체하는 것이 아니라, 코드를 이해하고 설계하기 위한 보조 도구에 가깝다.

UML 다이어그램의 큰 분류

UML 다이어그램은 크게 두 가지로 나눌 수 있다.

구조 다이어그램
행위 다이어그램
 

구조 다이어그램은 시스템이 어떤 요소들로 구성되어 있는지 보여준다.

클래스, 객체, 컴포넌트, 패키지, 배포 환경처럼 정적인 구조를 표현할 때 사용한다.

 

행위 다이어그램은 시스템이 어떻게 동작하는지 보여준다.

사용자와 시스템의 상호작용, 객체 간 메시지 흐름, 상태 변화, 작업 절차처럼 동적인 흐름을 표현할 때 사용한다.

구조 다이어그램
시스템의 정적인 구조 표현

행위 다이어그램
시스템의 동적인 동작 표현
 

구조 다이어그램

구조 다이어그램은 시스템의 구성 요소와 그 관계를 표현한다.

 

대표적인 구조 다이어그램에는 다음이 있다.

클래스 다이어그램
객체 다이어그램
패키지 다이어그램
컴포넌트 다이어그램
배포 다이어그램
복합 구조 다이어그램
프로파일 다이어그램
 

이 중에서 실무나 학습에서 가장 자주 보는 것은 클래스 다이어그램, 패키지 다이어그램, 컴포넌트 다이어그램, 배포 다이어그램이다.

클래스 다이어그램

클래스 다이어그램(Class Diagram)은 시스템을 구성하는 클래스와 클래스 간 관계를 표현하는 다이어그램이다.

객체지향 설계에서 가장 대표적으로 사용된다.

클래스 이름, 속성, 메서드, 클래스 간 관계를 나타낼 수 있다.

클래스
속성
메서드
상속 관계
연관 관계
의존 관계
집합 관계
합성 관계
 

예를 들어 쇼핑몰 시스템을 설계한다고 하자.

 

회원, 주문, 상품, 결제 같은 클래스를 만들 수 있다.

Member
Order
Product
Payment
 

회원은 여러 주문을 가질 수 있고, 주문은 여러 상품을 포함할 수 있다.

 

이런 관계를 클래스 다이어그램으로 표현하면 시스템의 구조를 한눈에 볼 수 있다.

 

클래스 다이어그램은 데이터 구조와 객체 간 관계를 정리할 때 유용하다.

사용 시점
객체지향 설계
도메인 모델 정리
클래스 간 관계 파악
데이터 구조 문서화
 

객체 다이어그램

객체 다이어그램(Object Diagram)은 특정 시점의 객체 상태를 표현하는 다이어그램이다.

 

클래스 다이어그램이 설계도라면, 객체 다이어그램은 그 설계도로 실제 만들어진 객체들의 예시를 보여주는 것에 가깝다.

 

예를 들어 Member라는 클래스가 있다면 실제 객체는 다음처럼 표현할 수 있다.

member1: Member
name = "Kim"
age = 25
 

객체 다이어그램은 클래스 구조가 실제 실행 시점에 어떤 객체들로 나타나는지 보여준다.

 

다만 클래스 다이어그램만큼 자주 사용되지는 않는다.

사용 시점
특정 시점의 객체 상태 설명
클래스 다이어그램 예시 보완
객체 간 실제 연결 관계 표현
 

패키지 다이어그램

패키지 다이어그램(Package Diagram)은 관련 있는 클래스나 모듈을 묶어 패키지 단위로 표현하는 다이어그램이다.

시스템이 커지면 클래스가 많아진다.

 

이때 모든 클래스를 하나의 그림에 넣으면 오히려 보기 어렵다.

패키지 다이어그램은 시스템을 큰 단위로 나누어 구조를 보여준다.

 

예를 들어 웹 서비스는 다음처럼 나눌 수 있다.

controller
service
repository
domain
config
 

각 패키지가 어떤 역할을 하고, 서로 어떤 의존 관계를 가지는지 표현할 수 있다.

사용 시점
큰 규모의 코드 구조 정리
모듈 간 의존 관계 파악
패키지 구조 설계
 

컴포넌트 다이어그램

컴포넌트 다이어그램(Component Diagram)은 시스템을 구성하는 독립적인 컴포넌트와 그 관계를 표현한다.

여기서 컴포넌트는 독립적으로 배포되거나 교체될 수 있는 소프트웨어 단위를 말한다.

 

예를 들어 하나의 서비스가 다음 컴포넌트로 구성될 수 있다.

Frontend
Backend API
Auth Service
Payment Service
Database
 

컴포넌트 다이어그램은 각 컴포넌트가 어떤 인터페이스를 제공하고, 다른 컴포넌트와 어떻게 연결되는지 보여준다.

 

마이크로서비스 구조나 큰 시스템의 모듈 구성을 설명할 때 유용하다.

사용 시점
시스템의 큰 구성 요소 표현
모듈 간 연결 구조 설명
마이크로서비스 구조 표현
외부 시스템 연동 구조 정리
 

배포 다이어그램

배포 다이어그램(Deployment Diagram)은 소프트웨어가 어떤 하드웨어나 실행 환경에 배치되는지 표현하는 다이어그램이다.

서버, 클라이언트, 데이터베이스, 네트워크 장비 같은 실행 환경을 나타낼 수 있다.

 

예를 들어 웹 서비스 배포 구조를 다음처럼 표현할 수 있다.

User Browser
Web Server
Application Server
Database Server
 

사용자는 브라우저로 웹 서버에 접속하고, 웹 서버는 애플리케이션 서버와 통신하며, 애플리케이션 서버는 데이터베이스 서버에 접근한다.

 

배포 다이어그램은 인프라 구조와 시스템 배포 환경을 설명할 때 유용하다.

사용 시점
서버 구성 설명
클라우드 배포 구조 표현
네트워크 구성 문서화
운영 환경 이해
 

행위 다이어그램

행위 다이어그램은 시스템이 어떻게 동작하는지 표현한다.

 

대표적인 행위 다이어그램에는 다음이 있다.

유스케이스 다이어그램
시퀀스 다이어그램
커뮤니케이션 다이어그램
활동 다이어그램
상태 머신 다이어그램
타이밍 다이어그램
상호작용 개요 다이어그램
 

이 중에서 자주 사용하는 것은 유스케이스 다이어그램, 시퀀스 다이어그램, 활동 다이어그램, 상태 머신 다이어그램이다.

유스케이스 다이어그램

유스케이스 다이어그램(Use Case Diagram)은 사용자가 시스템을 통해 어떤 기능을 사용할 수 있는지 표현하는 다이어그램이다.

여기서 사용자는 사람일 수도 있고, 외부 시스템일 수도 있다.

 

UML에서는 이를 액터라고 부른다.

 

예를 들어 쇼핑몰 시스템의 액터는 회원, 관리자, 결제 시스템이 될 수 있다.

회원
관리자
결제 시스템
 

회원이 사용할 수 있는 기능은 다음과 같다.

회원가입
로그인
상품 조회
장바구니 담기
주문하기
결제하기
 

유스케이스 다이어그램은 시스템의 기능 범위를 정리할 때 유용하다.

 

개발 초기에 기획자, 개발자, 고객이 “이 시스템이 무엇을 해야 하는가”를 공유할 때 많이 사용한다.

사용 시점
요구사항 분석
시스템 기능 범위 정리
사용자와 시스템의 관계 표현
개발 초기 의사소통
 

시퀀스 다이어그램

시퀀스 다이어그램(Sequence Diagram)은 객체들이 어떤 순서로 메시지를 주고받는지 표현하는 다이어그램이다.

시간의 흐름에 따라 객체 간 호출 순서를 보여준다.

 

예를 들어 사용자가 로그인하는 과정을 생각해보자.

사용자
LoginController
AuthService
UserRepository
Database
 

흐름은 다음처럼 진행될 수 있다.

사용자가 로그인 요청
LoginController가 AuthService 호출
AuthService가 UserRepository 호출
UserRepository가 Database 조회
결과 반환
로그인 성공 또는 실패 응답
 

이런 흐름을 시퀀스 다이어그램으로 표현하면, 어떤 객체가 어떤 순서로 호출되는지 쉽게 볼 수 있다.

 

시퀀스 다이어그램은 API 흐름, 서비스 로직, 객체 간 상호작용을 설명할 때 매우 유용하다.

 

커뮤니케이션 다이어그램

커뮤니케이션 다이어그램(Communication Diagram)은 객체 간 상호작용을 표현하는 다이어그램이다.

시퀀스 다이어그램과 비슷하지만 관점이 조금 다르다.

 

시퀀스 다이어그램은 시간 순서에 초점을 둔다.
커뮤니케이션 다이어그램은 객체들이 어떻게 연결되어 메시지를 주고받는지에 초점을 둔다.

 

실무에서는 시퀀스 다이어그램이 더 자주 사용되는 편이다.

활동 다이어그램

활동 다이어그램(Activity Diagram)은 작업의 흐름을 표현하는 다이어그램이다.

흐름도와 비슷하게 볼 수 있다.

조건 분기, 반복, 병렬 처리 같은 절차를 표현할 수 있다.

 

활동 다이어그램은 업무 프로세스나 알고리즘 흐름을 설명할 때 유용하다.

상태 머신 다이어그램

상태 머신 다이어그램(State Machine Diagram)은 객체나 시스템의 상태 변화 과정을 표현하는 다이어그램이다.

어떤 객체가 여러 상태를 가지며, 이벤트에 따라 상태가 바뀌는 경우에 사용한다.

 

예를 들어 주문 객체의 상태를 생각해보자.

주문 생성
결제 대기
결제 완료
배송 중
배송 완료
주문 취소
 

주문은 처음에는 결제 대기 상태이다.
결제가 성공하면 결제 완료 상태가 되고, 상품이 출고되면 배송 중 상태가 된다.

상태 머신 다이어그램은 상태 변화가 중요한 시스템에서 유용하다.

사용 시점
상태 변화가 중요한 객체 표현
주문, 결제, 배송 상태 설계
로그인 세션 상태 표현
기기 동작 상태 표현
 

타이밍 다이어그램

타이밍 다이어그램(Timing Diagram)은 시간에 따른 상태 변화를 더 자세히 표현하는 다이어그램이다.

상태 머신 다이어그램도 상태 변화를 표현하지만, 타이밍 다이어그램은 시간 축을 더 강조한다.

 

실시간 시스템, 임베디드 시스템, 통신 프로토콜처럼 시간 조건이 중요한 경우에 사용할 수 있다.

사용 시점
시간 제약이 중요한 시스템
실시간 제어
임베디드 시스템
통신 신호 변화 표현
 

일반적인 웹 서비스 개발에서는 자주 사용되지는 않는다.

상호작용 개요 다이어그램

상호작용 개요 다이어그램(Interaction Overview Diagram)은 여러 상호작용 흐름을 큰 관점에서 표현하는 다이어그램이다.

 

활동 다이어그램과 시퀀스 다이어그램의 성격이 섞여 있다고 볼 수 있다.

 

복잡한 상호작용 과정을 큰 흐름으로 정리할 때 사용할 수 있다.

 

다만 실무에서 자주 쓰이는 편은 아니다.

UML 다이어그램 정리 표

자주 사용하는 UML 다이어그램을 정리하면 다음과 같다.

 

구분 다이어그램 용도
구조 클래스 다이어그램 클래스, 속성, 메서드, 클래스 간 관계 표현
구조 객체 다이어그램 특정 시점의 객체 상태와 객체 간 관계 표현
구조 패키지 다이어그램 패키지와 모듈 간 의존 관계 표현
구조 컴포넌트 다이어그램 시스템 컴포넌트와 인터페이스 관계 표현
구조 배포 다이어그램 서버, 장비, 실행 환경에 소프트웨어가 배치된 구조 표현
행위 유스케이스 다이어그램 사용자와 시스템 기능의 관계 표현
행위 시퀀스 다이어그램 객체 간 메시지 흐름과 호출 순서 표현
행위 커뮤니케이션 다이어그램 객체 간 연결과 상호작용 관계 표현
행위 활동 다이어그램 작업 절차와 업무 흐름 표현
행위 상태 머신 다이어그램 객체나 시스템의 상태 변화 표현
행위 타이밍 다이어그램 시간에 따른 상태 변화 표현
행위 상호작용 개요 다이어그램 복잡한 상호작용 흐름을 큰 관점에서 표현
LIST