UML(Unified Modeling Language)은 소프트웨어 시스템을 시각적으로 표현하는 언어로, 복잡한 소프트웨어 시스템을 설계하고 분석하는 데 유용하게 사용됩니다. UML은 시스템의 다양한 측면을 모델링하여 소프트웨어 개발자, 분석가, 설계자들이 시스템의 구조와 동작을 명확히 이해하고 소통할 수 있게 도와줍니다.
UML의 구성 요소
UML의 주요 구성 요소는 사물(Things), 관계(Relationships), 다이어그램(Diagram)입니다. 각각의 구성 요소는 시스템을 설명하는 데 필요한 기본적인 표현 방식입니다.
1. 사물(Things)
사물(Things)은 UML에서 시스템의 구성 요소를 나타내며, 구조 사물(Structural Things), 행동 사물(Behavioral Things), 그룹 사물(Grouping Things), 주해 사물(Annotational Things)로 나뉩니다.
- 구조 사물: 시스템의 정적인 요소로, 클래스(Class), 인터페이스(Interface), 컴포넌트(Component)와 같은 시스템의 구조적인 부분을 나타냅니다.
- 행동 사물: 시스템의 동작이나 행위를 설명하며, 유스케이스(Use Case)나 상호작용(Interaction) 등을 포함합니다.
- 그룹 사물: UML 요소들을 그룹화하여 관리할 수 있게 하며, 패키지(Package)가 대표적인 예입니다.
- 주해 사물: 시스템의 설명이나 주석을 포함하는 요소로, 개발자의 이해를 돕기 위해 주석(Comment) 형태로 사용됩니다.
2. 관계(Relationships)
관계(Relationships)는 UML에서 요소들 간의 연관성을 설명하는 중요한 개념으로, 연관 관계(Association), 일반화 관계(Generalization), 의존 관계(Dependency), 실체화 관계(Realization) 등 네 가지 주요 관계가 있습니다.
2-1. 연관 관계 (Association)
- 정의: 두 사물 간의 구조적 관계를 나타내며, 한 객체가 다른 객체와 연결되어 있음을 의미합니다.
- 표현: 일반적으로 ‘has-a’ 관계로 설명되며, 직선(ㅡ)으로 표시합니다.
2-2. 일반화 관계 (Generalization)
- 정의: 일반적인 개념(상위 클래스)과 더 구체적인 개념(하위 클래스) 사이의 관계로, 상속 관계라고도 불립니다.
- 표현: ‘is-a’ 관계로 설명되며, 화살표(▷)로 표시합니다.
- 예: ‘차’ 클래스와 ‘세단’, ‘트럭’ 클래스의 관계가 일반화 관계입니다.
2-3. 의존 관계 (Dependency)
- 정의: 한 클래스가 다른 클래스의 기능에 의존하고 있음을 나타내며, 특정 클래스의 변경이 다른 클래스에 영향을 미칠 수 있습니다.
- 표현: 점선 화살표(–>).
2-4. 실체화 관계 (Realization)
- 정의: 인터페이스와 이를 구현하는 클래스 간의 관계를 나타내며, 한 객체가 다른 객체의 오퍼레이션을 수행하도록 지정하는 관계입니다.
- 표현: 점선 화살표(▷)로 표시.
3. 다이어그램(Diagram)
UML 다이어그램은 정적 다이어그램(Structural Diagram)과
3-1. 정적 다이어그램(Structural Diagram)
정적 다이어그램은 시스템의 구조적인 요소들을 표현하는 데 사용됩니다.
- 클래스 다이어그램(Class Diagram): 클래스와 클래스 간의 관계 및 속성을 나타내며, 시스템의 정적 구조를 시각적으로 표현합니다.
- 객체 다이어그램(Object Diagram): 특정 시점에서의 객체 인스턴스와 그들 간의 관계를 나타냅니다.
- 컴포넌트 다이어그램(Component Diagram): 시스템의 물리적 구현 요소(컴포넌트)들을 보여줍니다.
- 배치 다이어그램(Deployment Diagram): 시스템의 하드웨어 및 네트워크 구성 요소 간의 관계를 나타냅니다.
- 복합체 구조 다이어그램(Composite Structure Diagram): 클래스 내부의 구조와 구성 요소를 상세히 나타냅니다.
- 패키지 다이어그램(Package Diagram): 클래스와 같은 요소들을 패키지로 그룹화하여 의존성을 나타냅니다.
3-2. 동적 다이어그램(Behavioral Diagram)
동적 다이어그램은 시스템 내의 동작을 설명하는 데 사용됩니다.
- 유스케이스 다이어그램(Use Case Diagram): 시스템의 기능을 사용자와의 상호 작용 측면에서 설명하며, 요구사항을 추출하고 분석하는 데 유용합니다.
- 구성 요소:
- 액터(Actor): 시스템과 상호 작용하는 사용자 또는 다른 시스템.
- 유스케이스(Use Case): 시스템이 제공하는 기능.
- 연관(Association), 확장(Extend), 포함(Include), 일반화(Generalization) 관계로 표현됩니다.
- 구성 요소:
- 시퀀스 다이어그램(Sequence Diagram): 객체 간의 메시지 전달 순서와 시간적 흐름을 강조하여 객체 간 상호작용을 표현합니다.
- 구성 요소:
- 액터(Actor): 외부에서 서비스를 요청하는 요소.
- 객체(Object): 메시지를 주고받는 주체.
- 생명선(Lifeline): 객체가 활성화된 기간을 점선으로 표시.
- 메시지(Message): 객체 간의 상호작용을 위한 메시지.
- 실행 상자(Active Box): 객체가 동작 중임을 표시.
- 구성 요소:
- 액티비티 다이어그램(Activity Diagram): 시스템 내 특정 기능의 실행 절차와 흐름을 순서대로 표현하며, 조건에 따라 처리되는 흐름을 보여줍니다.
- 상태 다이어그램(State Diagram): 객체가 상태 변화에 따라 어떻게 동작하는지를 나타냅니다.
- 상호작용 개요 다이어그램(Interaction Overview Diagram): 상호작용의 개요를 표현하며, 다른 상호작용 다이어그램과 연계됩니다.
- 커뮤니케이션 다이어그램(Communication Diagram): 객체 간의 통신 관계를 강조하여 보여줍니다.
- 타이밍 다이어그램(Timing Diagram): 시간에 따른 상태 변화를 보여줍니다.
옳지 않은 설명에 대한 검토
- 기능적 모델: 유스케이스 다이어그램을 사용하여 시스템의 기능을 사용자 관점에서 설명하는 것은 올바릅니다.
- 정적 모델: 클래스 다이어그램을 사용하여 시스템의 구조를 설명하는 것도 정확합니다.
- 동적 모델: 시퀀스, 상태, 액티비티 다이어그램을 사용하여 시스템의 내부 동작을 설명하는 것도 맞습니다.
- 상태 다이어그램과 시퀀스 다이어그램 설명이 혼동되었습니다.
- 상태 다이어그램: 객체의 상태 변화와 각 상태에서의 동작을 표현합니다.
- 시퀀스 다이어그램: 객체 간 메시지 교환을 시간 순서대로 나타냅니다.
기타 설명
- 컴포넌트 다이어그램과 배치 다이어그램: 구현 단계에서 시스템의 물리적 구조를 표현하는 데 사용됩니다.
- 스테레오 타입(Stereotype): UML 확장 모델에서 특정 요소의 의미를 명확히 하기 위한 기호로,
《》
로 표시합니다.