--- id: P-REINFORCE-WIKI-ARCH-UML title: "통합 모델링 언어 (Unified Modeling Language, UML)" category: "10_Wiki/🏗️ Topics_Arch" status: verified canonical_id: "" aliases: ["UML", "소프트웨어 모델링", "시각적 설계 표준"] duplicate_of: "" source_trust_level: A confidence_score: 1.0 tags: ["Architecture", "Modeling", "UML", "Class_Diagram", "Sequence_Diagram"] raw_sources: ["Datacollector_Export_2026-05-02"] last_reinforced: 2026-05-02 github_commit: "" --- # [[통합 모델링 언어 (Unified Modeling Language, UML)]] ## 1. 개요 UML(Unified Modeling Language)은 소프트웨어 시스템의 구조와 동작을 시각적으로 표현하기 위한 표준화된 모델링 언어이다. 객체 지향 분석 및 설계(OOAD)의 결과물을 시각화, 명세화, 구축, 문서화하는 데 사용되는 전 세계 공통의 엔지니어링 언어이다. ## 2. 핵심 다이어그램 유형 1. **클래스 다이어그램 (Class Diagram)**: 시스템의 정적 구조 표현. 클래스 간의 관계(상속, 합성, 집계, 의존성 등)를 상세히 명세. 2. **시퀀스 다이어그램 (Sequence Diagram)**: 객체 간의 동적 상호작용 표현. 시간 흐름에 따른 메시지 교환 순서 시각화. 3. **유즈케이스 다이어그램 (Use Case Diagram)**: 시스템이 제공하는 기능과 외부 사용자(Actor) 간의 관계 정의. 4. **상태 다이어그램 (State Diagram)**: 객체의 생명주기 동안 발생하는 상태 변화와 전이 조건 표현. ## 3. 실전 활용 전략 - **C4 모델과의 통합**: C4 모델의 레벨 4(Code) 수준에서 구체적인 클래스 관계나 로직 흐름을 표현할 때 UML을 사용. - **Diagrams as Code**: PlantUML이나 Mermaid를 통해 텍스트 기반으로 UML을 작성하여 Git으로 버전 관리. - **설계 검증**: 구현 전 시퀀스 다이어그램을 통해 API 호출 흐름이나 예외 시나리오를 선제적으로 검토. ## 4. 트레이드오프 및 주의사항 - **장점**: 정밀한 시맨틱 표현 가능, 전 세계 엔지니어 간의 공통 어휘 확보, 객체 지향 설계의 시각화. - **단점**: 다이어그램 복잡도 상승으로 인한 유지보수 비용 발생, 실제 코드와 다이어그램 간의 괴리(Architectural Drift) 발생 위험. ## 5. 지식 연결 (Related) - [[C4_Modeling_Framework]]: UML을 포함하는 상위 계층 아키텍처 시각화 체계. - [[Design_Patterns]]: UML을 통해 정의된 검증된 객체 지향 설계 템플릿. - [[PlantUML]]: UML을 코드로 관리하기 위한 대표적인 오픈 소스 도구. ## 🧪 검증 상태 (Validation) - **정보 상태**: 검증 완료 (Verified) - **출처 신뢰도**: A - **검토 이유**: 소프트웨어 공학의 시각적 언어 표준으로서의 UML 핵심 개념 및 실천 방안 정립.