| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- 0.75px border
- entity
- Props
- 서버리스 #
- TypeScript
- Strict
- jwt
- 0.5px border
- 1px border
- font-size
- 문서번호
- 타입스크립트
- 전역변수
- 으
- 10px
- ZOOM
- 데이터베이스 #try #이중
- TS
- 당근마켓
- 컴포넌튼
- literal
- es6
- 클론코딩
- github
- 0.25px border
- angular
- &연산
- npm
- ES5
- Websocket
- Today
- Total
복잡한뇌구조마냥
[CS] UML 정리 (다이어그램 종류, 관계, 표기법 등) 본문
UML(Unified Modeling Language)은
소프트웨어를 시각적으로 표현하고 설계하기 위한 표준 언어입니다.
1997년 OMG(Object Management Group)에 의해 표준으로 채택되었으며,
현재 소프트웨어 개발에서 가장 널리 사용되는 설계 도구입니다.
즉, “복잡한 코드를 도식으로 표현해 구조를 한눈에 이해할 수 있게” 하는 도구죠.
👉 요구 분석 → 설계 → 구현 → 배포 → 유지보수 모든 단계에서 사용됩니다.
UML의 구성 요소는 사물, 관계, 다이어그램 등이 있습니다.
🧱 1. UML의 목적
| 목적 | 설명 |
| 의사소통 | 개발자, 설계자, 고객 간의 효과적인 소통 도구 |
| 시각화 | 복잡한 시스템을 이해하기 쉬운 다이어그램으로 표현 |
| 문서화 | 시스템 구조와 동작을 명확하게 기록 |
| 설계 | 구현 전에 시스템의 구조를 계획하고 검증 |
📄 2. UML 사물
사물은 모델을 구성하는 가장 중요한 기본요소로, 다이어그램 안에서 관계가 형성될 수 있는 대상을 말합니다.
| 사물 | 내용 | 예시 |
| 구조 사물 | 시스템의 개념적, 물리적 요소를 표현 | 클래스, 유스케이스, 컴포넌트, 노드 등 |
| 행동 사물 | 시간과 공간에 따른 요소들의 행위를 표현 | 상호작용, 상태 머신 등 |
| 그룹 사물 | 요소들을 그룹으로 묶어서 표현 | 패키지 |
| 주해사물 | 부가적인 설명이나 제약조건 등을 표현 | 노트 |
📊 3. UML 다이어그램 전체 14종 분류
UML은 총 13개의 다이어그램으로 구성되며,
크게 6개의 구조 다이어그램과 7개의 행위 다이어그램으로 나뉜다.
🔹 구조 다이어그램(Structure Diagrams) (정적)
시스템의 “정적인 구조”를 표현합니다.
| 다이어그램 | 설명 | 활용 예시 |
| 클래스 Class Diagram | 클래스 간 관계, 속성, 메서드 | 도메인 설계 |
| 객체 Object Diagram | 객체 인스턴스와 그 관계 | 샘플 런타임 데이터 |
| 컴포넌트 Component Diagram | 컴포넌트와 그 의존 관계 | MSA 구조, 레이어 연결 |
| 배치 Deployment Diagram | 시스템의 물리적 배치 구조 | 서버, 노드, 클라우드 환경 |
| 복합체 구조 Composite Structure Diagram | 클래스나 컴포넌트 내부 구조 | 복합 객체 설계 |
| 패키지 Package Diagram | 패키지 단위 그룹화 관계 | 계층 구조, 의존성 관리 |
🔸 행위 다이어그램(Behavioral Diagrams) (동적)
“무엇을, 어떻게 동작시키는가”를 표현합니다.
| 다이어그램 | 설명 | 활용 예시 |
| 유스케이스 Use Case Diagram | 사용자와 시스템 간 상호작용 | 요구사항 정의 |
| 순차 Sequence Diagram | 시간 순서 기반 메시지 흐름 | API 호출 흐름 |
| 커뮤니케이션 Communication Diagram | 객체 간 메세지 + 연관 관계 | 협력 관계 중심 |
| 상태 State Diagram | 상태 변화 | 주문, 결제, 티켓 등 상태 기반 도메인 |
| 활동 Activity Diagram | 절차/흐름/분기 표현 | 업무 프로세스 |
| 상호작용 개요 Interaction Overview Diagram | 여러 상호작용 다이어그램 통합 흐름 | 큰 시나리오 개요 |
| 타이밍 Timing Diagram | 객체 상태 변화와 시간 제 | 실시간 시스템, IoT |
😎추가. UML 스테레오 타입 ( Stereotype )
UML에서 표현하는 기본 기능 외 추가적인 기능을 표현하기 위해 사용
길러멧이라고 부르는 겹화살표(<<>>)사이에 표현할 형태 기술
| 타입 | 설명 |
| <<include>> | 연결된 다른 UML요소에 대해 포함관계에 있는 경우 |
| <<extend>> | 연결된 다른 UML요소에 대해 확장관계에 있는 경우 |
| <<interface>> | 인터페이스를 정의하는 경우 |
| <<exception>> | 예외를 정의하는 경우 |
| <<constructor>> | 생성자 역할을 수행하는 경우 |
🔗 4. UML 관계(클래스 다이어그램 기준)
| 관계 | 표기 | 설명 | 예시 |
| 연관 (Association) | 실선 or 실선 화살표 | 클래스 간의 구조적 관계 | 학생 ─── 수강 신청 |
| 집합 (Aggregation) | 빈 마름 | 전체-부분 (느슨한 종속) | 학과 ◇─── 교수 |
| 포함 (Composition) | 채운 마름모 | 전체-부분 (강한 종속) | 집 ◆─── 방 |
| 일반화 (Generalization) | 빈 삼각형 | 상속 관계 | 동물 ◁─── 강아지 |
| 의존 (Dependency) | 점선 화살표 | 임시 참조/파라미터 | 주문 ····> 할인 정책 |
| 실체화 (Realization) | 점선 빈 삼각형 | 인터페이스 구현 관계 | 구현 클래스 ···▷ 인터페이스 |
🔻 다중성(Multiplicity) - 연관 관계
| 다중도 | 의미 |
| 1 | 1개의 객체와 연관 |
| n | n개의 객체와 연관 |
| 0..1 | 연관된 객체가 없거나 1개 |
| 0..* 또는 * | 연관된 객체가 없거나 다수 |
| 1..* | 연관된 객체가 적어도 1개 이상 |
| n..* | 연관된 객체가 적어도 n개 이상 |
| n..m | 연관된 객체가 최소 n, 최대 m 개 |
🧩5.클래스 다이어그램 (Class Diagram) ⭐⭐⭐
가장 많이 사용되는 다이어그램으로, 시스템의 정적 구조를 표현합니다.
클래스의 구성
┌─────────────────────┐
│ 클래스명 │ ← 클래스 이름
├─────────────────────┤
│ - 속성1: 타입 │ ← 속성 (Attributes)
│ - 속성2: 타입 │
├─────────────────────┤
│ + 메서드1() │ ← 메서드 (Operations)
│ + 메서드2() │
└─────────────────────┘
접근 제어자:
+ : public
- : private
# : protected
~ : package
🧩 6. 시퀀스 다이어그램 (Sequence Diagram)
객체 간의 상호작용을 시간 순서대로 표현하는 다이어그램입니다.
주요 구성 요소
- 생명선 (Lifeline): 객체의 생존 기간
- 활성화 박스: 객체가 활동 중인 시간
- 메시지: 객체 간 통신
실제 예시: 로그인 프로세스

🧩 7. 유스케이스 다이어그램 (Use Case Diagram)
시스템의 기능적 요구사항을 표현하는 다이어그램입니다.
주요 구성 요소
- 액터 (Actor): 시스템과 상호작용하는 외부 엔티티
- 유스케이스 (Use Case): 시스템이 제공하는 기능
- 관계: Include, Extend, Generalization
실제 예시: 은행 ATM 시스템

🧩 8. 상태 다이어그램 (State Diagram)
객체의 생명주기 동안 상태 변화를 표현하는 다이어그램입니다.

🧩 9. 활동 다이어그램 (Activity Diagram)
업무 프로세스나 알고리즘의 흐름을 표현하는 다이어그램입니다.
실제 예시: 코드 리뷰 프로세스 (스윔레인)

🧩 10. 컴포넌트 다이어그램 (Component Diagram)
시스템의 물리적 구조와 컴포넌트 간의 의존 관계를 표현합니다.
실제 예시: 웹 애플리케이션 아키텍처

🧩 11. 배치 다이어그램 (Deployment Diagram)
시스템의 물리적 배치와 하드웨어 구성을 표현합니다.
실제 예시: 클라우드 배포 구조

📚 12. UML 사용 시기
프로젝트 단계별 활용
1. 요구사항 분석 단계
- 유스케이스 다이어그램: 기능 요구사항 정의
- 활동 다이어그램: 업무 프로세스 파악
2. 설계 단계
- 클래스 다이어그램: 시스템 구조 설계
- 시퀀스 다이어그램: 객체 간 상호작용 설계
- 상태 다이어그램: 객체 생명주기 정의
3. 구현 단계
- 클래스 다이어그램: 코드 작성 가이드
- 컴포넌트 다이어그램: 모듈 구조 확인
4. 배포 단계
- 배치 다이어그램: 시스템 배포 계획
5. 유지보수 단계
- 역공학으로 기존 시스템 문서화
✅ 13. UML 장단점
| 장점 | 단점 |
| 표준화된 표기법: 전 세계적으로 통용 | 학습 곡선: 모든 다이어그램 익히는 데 시간 소요 |
| 명확한 의사소통: 시각적 표현으로 이해도 향상 | 유지보수 부담: 코드와 동기화 필요 |
| 문서화 용이: 코드와 함께 관리 가능 | 과도한 사용: 모든 것을 모델링하면 복잡해짐 |
| 설계 검증: 구현 전 문제점 발견 | 도구 의존성: 좋은 도구가 필요할 수 있음 |
| 다양한 관점: 여러 다이어그램으로 다각도 분석 |
✍️ 마무리
UML은 단순한 그림이 아니라
“소프트웨어 의사소통 언어”입니다.
설계, 리뷰, 문서화, 회의 등 개발 전 과정에서 핵심 역할을 합니다.
'공통 > CS' 카테고리의 다른 글
| [CS] CUI / GUI / NUI / OUI 정리 — 유저 인터페이스 (+ 터치 제스처) (0) | 2025.11.01 |
|---|---|
| [CS] 프로세스 스케줄링(Process Scheduling) 기법 (0) | 2025.11.01 |
| [CS] 응집도(Cohesion)와 결합도(Coupling) 정리 (0) | 2025.10.31 |
| [CS] EAI (Enterprise Application Integration) 정리 (0) | 2025.10.30 |
| [CS] OSI 7계층 ( OSI 7 Layer ) (0) | 2025.06.29 |
