UML로 객체지향 시스템 구조와 흐름 모델링하기
UML의 표준화 배경과 구조·행동 다이어그램, 관계 유형, 모델링 활용 방식 및 운영상 한계를 정리한다.
2026-08-14 · 최초 발행 2025-05-23
분석과 설계 사이에서 쓰는 공통 표기법
UML(Unified Modeling Language)은 시스템 분석, 설계, 구현 과정에서 사용하는 표준화된 시각적 모델링 언어다. 복잡한 소프트웨어를 시각화하고, 명세화하며, 구축·문서화하기 위한 공통 기준을 제공한다.
객체지향 모델링 방법론이 서로 분화돼 있던 1990년대에 이를 통합하려는 노력에서 출발했다. OMG(Object Management Group)가 표준으로 채택해 관리하며, 현재 버전은 2017년에 발표된 UML 2.5.1이다.
UML은 클래스, 객체, 상속, 다형성 같은 객체지향 개념을 표현한다. 동시에 시스템을 구조적·행동적·상호작용 관점에서 나누어 볼 수 있다. 프로파일과 스테레오타입으로 특정 도메인에 맞게 확장할 수 있고, 특정 프로그래밍 언어나 개발 방법론에 종속되지 않는다.
정적 구조를 드러내는 다이어그램
구조 다이어그램은 시스템을 구성하는 요소와 그 관계를 보여 준다. 설계 대상의 정적인 모습을 확인할 때 활용한다.
클래스 다이어그램은 클래스의 속성·연산과 클래스 사이의 관계를 표현한다.
객체 다이어그램은 특정 시점의 객체 상태와 관계를 나타낸다. 컴포넌트 다이어그램은 컴포넌트와 의존성을, 패키지 다이어그램은 관련 요소의 그룹과 패키지 간 의존성을 다룬다.
배치 다이어그램은 물리적 아키텍처와 배포 모습을 표현한다. 복합 구조 다이어그램은 클래스 내부 구조와 협력 관계를, 프로파일 다이어그램은 UML 확장 메커니즘을 정의하는 데 사용한다.
사용자의 요청부터 객체의 상태 변화까지
행동 다이어그램은 시스템이 어떻게 반응하고 요소들이 어떤 순서로 협력하는지 다룬다.
유스케이스 다이어그램은 사용자와 시스템의 상호작용을 정리한다.
시퀀스 다이어그램은 객체 간 메시지 교환을 시간 순서에 따라 보여 준다.
활동 다이어그램은 비즈니스 프로세스나 워크플로우를 표현한다.
상태 다이어그램은 객체의 상태 변화와 전이를 표현하며, 타이밍 다이어그램은 그 상태 변화에 따른 시간적 제약을 다룬다. 상호작용 개요 다이어그램은 여러 상호작용의 제어 흐름을, 통신 다이어그램은 객체 사이 메시지 교환의 구조적 측면을 강조한다.
관계 표기가 설계 의도를 바꾼다
클래스 사이의 연결은 같은 선처럼 보여도 의미가 다르다.
- 연관(Association)은 클래스 간 일반적인 관계를 실선으로 나타낸다.
- 집합(Aggregation)은 부분이 독립적으로 존재할 수 있는 전체-부분 관계이며 빈 다이아몬드로 표시한다.
- 합성(Composition)은 전체가 소멸하면 부분도 함께 소멸하는 강한 전체-부분 관계로, 채워진 다이아몬드를 사용한다.
- 일반화(Generalization)는 상속 관계이며 빈 삼각형 화살표로 표현한다.
- 실현(Realization)은 인터페이스 구현 관계를 뜻하며 점선 화살표를 사용한다.
- 의존(Dependency)은 한 클래스가 다른 클래스를 일시적으로 사용하는 관계로 점선 화살표로 나타낸다.
요구사항을 구현 계획으로 연결하는 흐름
모델링은 요구사항부터 시작해 구현 방식과 검토로 이어진다. 유스케이스 다이어그램으로 시스템 요구사항을 정의하고, 클래스 다이어그램으로 정적 구조를 설계한다. 이후 시퀀스 다이어그램과 활동 다이어그램으로 동적 행동을 정리한다.
물리적 구현을 계획할 때는 컴포넌트 다이어그램과 배치 다이어그램을 활용한다. 모델을 검토하고 이해관계자의 피드백을 반영하는 과정도 이어져야 한다.
복잡한 업무 규칙을 공유하는 방식
금융 거래 처리 시스템처럼 복잡한 관계와 절차를 다루는 경우, 클래스 다이어그램으로 계좌·고객·거래의 관계를 정의할 수 있다. 시퀀스 다이어그램은 거래 처리 흐름을 명세하고, 상태 다이어그램은 거래 상태의 변화를 나타낸다. 이런 모델은 시스템 복잡성 관리와 이해관계자 간 의사소통에 활용된다.
의료 정보 시스템에서는 환자·의사·간호사의 역할을 유스케이스 다이어그램으로 구분할 수 있다. 활동 다이어그램으로 진료 예약부터 진단·처방까지의 워크플로우를 모델링하고, 클래스 다이어그램으로 환자 기록·진단·처방의 데이터 구조를 정의한다. 업무 프로세스와 시스템 요구사항을 명확히 하는 데 적합하다.
모델링 도구 선택
Enterprise Architect는 기업용 UML 모델링 도구로 다양한 다이어그램을 지원한다. Visual Paradigm은 직관적 인터페이스와 협업 기능을 강화한 도구다. Lucidchart는 협업에 적합한 웹 기반 다이어그램 작성 도구이며, StarUML은 무료 버전을 제공하는 경량 UML 모델링 도구다.
Draw.io는 다양한 통합을 지원하는 무료 웹 기반 다이어그램 도구다. PlantUML은 텍스트로 UML을 작성하고 코드에서 다이어그램을 생성할 수 있다.
상세함이 항상 모델의 가치를 높이지는 않는다
UML 사양 전체는 방대해 모든 기능을 쓰기 어렵고, 팀이 처음 도입할 때 학습 부담도 생긴다. 모델과 실제 코드의 동기화를 유지하기 어려울 수 있으며, 빠른 개발 주기에서는 상세 모델링의 가치가 줄어들 수 있다.
일반 목적의 모델링 언어라는 성격 때문에 특정 도메인에 최적화되지 않았다는 한계도 있다. 따라서 모든 다이어그램을 일괄 적용하기보다 프로젝트에서 필요한 관점과 의사소통 대상에 맞춰 선택하는 편이 낫다.
모델이 코드와 더 가까워지는 방향
모델 기반 개발(MDD)은 UML 모델에서 직접 코드를 생성하고 실행 가능한 시스템을 개발하는 방향을 다룬다. 인공지능을 활용한 모델 생성과 검증 자동화, 분산 팀을 위한 클라우드 기반 실시간 협업 모델링 플랫폼도 확장되는 활용 방식이다.
산업이나 기술 도메인에 맞춘 UML 프로파일 확장도 가능하다. 레거시 시스템에서는 리버스 엔지니어링과 문서화 도구로 활용할 수 있다.