UML 다이어그램 (Unified Modeling Language Diagram)
Architecture & Design Pattern 전체 링크
UML (Unified Modeling Language)
- SW 개발에서 시스템을 시각적으로 모델링하고 문서화하기 위해 사용되는 표준화된 언어
- 개발자, 설계자 간의 의사소통을 돕고, 시스템의 다양한 측면을 명확히 표현하여 설계 오류를 줄인다.
- SRS, SDS, 데이터 / 비즈니스 / 오브젝트 / 컴포넌트 모델링에서 사용된다.
MOF (Meta Object Facility)
- 모델 기반 소프트웨어 공학 분야에서 사용되는 표준 메타모델링 언어
- M0 Layer : 실제 구축하고자 하는 SW 시스템의 인스턴스를 포함 (Application)
- M1 Layer : M0에 대한 모델을 포함, 클래스 다이어그램 등이 속하게 된다. (UML Model)
- M2 Layer : M1 계층의 모델을 설명하는 메타모델을 포함. 시스템 구조, 속성, 관계 등을 정의 (UML meta Model)
- M3 Layer : M2 계층의 메타모델을 설명하는 메타-메타모델을 포함, 메타모델을 정의하는 모델
메타모델을 확장하거나, 새로운 모델링 언어를 개발할 때 유용 (MOF Model)
UML 다이어그램 (Unified Modeling Language Diagram)
- 시스템의 다양한 측면을 시각적으로 표현하는 데 사용되는 표준화된 그래픽 언어
- 행동 다이어그램 / 구조 다이어그램
유스케이스 다이어그램 (Use Case Diagram)
- 시스템의 사용자 또는 액터(Actor)와 시스템이 제공하는 기능(Use Case) 간의 상호작용을 보여준다.
- 시스템의 내부 요소와 외부 요소를 결합하고, 사용자의 특정 요구 사항을 강조한다.
- 시스템의 상황을 묘사하고, 시스템의 청사진으로 작동할 수 있다.
- 사용자를 위한 다이어그램이므로 시스템의 기능이나 세부정보를 나타내지는 않는다.
클래스 다이어그램 (Class Diagram)
- 클래스, 속성, 메서드 간의 관계를 보여 시스템과 객체의 상호작용을 나타낸다.
- 코드 수준의 모든 구성 요소들을 속성들과 오퍼레이션들과 함께 나열한다.
- 제한된 타입 정보를 제공하며, 메서드를 어떻게 작성해야 할지를 나타내지는 않는다.
- Use Case의 명사가 클래스가 되며, 동사들은 메서드가 될 수 있다.
오브젝트 다이어그램 (Object Diagram)
- 특정 시점에서 각 클래스의 인스턴스 또는 객체 간의 관계를 나타낸다.
- 클래스 템플릿이 아닌 실제 객체를 보여준다.
패키지 다이어그램 (Package Diagram)
- 패키지 : 클래스와 인터페이스를 논리적으로 그룹화한 것으로, 네임스페이스를 제공하여 코드를 조직화한다.
- 시스템의 요소를 그룹화하여 전체 구조와 의존성을 보여준다.
- 복잡성을 관리하기 위해 시스템을 관리 가능한 모듈(패키지)로 나눈다.
- 패키지를 폴더로 나타내고, 패키지 간의 관계를 화살표로 나타낸다.
컴포넌트 다이어그램 (Component Diagram)
- 컴포넌트 : 시스템의 기능을 캡슐화하고, 명확하게 정의된 인터페이스로 다른 컴포넌트와 상호작용하는 독립적인 단위
- 컴포넌트는 시스템의 기능적 단위이며, 독립적으로 배포 가능하고 재사용 가능하다.
- 클래스는 상태와 동작을 정의, 컴포넌트는 시스템의 더 큰 단위로 여러 클래스와 리소스, 더 높은 수준의 추상화를 포함
- 각 시스템의 물리적 구성 요소 간의 의존성을 나타낸다.
- 시스템이 어떻게 나누어지고, 어떻게 상호작용하며, 의존성 및 인터페이스가 무엇인지 보여준다.
복합 구조 다이어그램 (Composite Structure Diagram)
- 클래스나 구성 요소의 내부 구조를 보여준다.
- 시스템의 기능을 수행하기 위한 협력 방식을 보여준다.
- 클래스, 인터페이스, 컴포넌트, 노드 등의 요소들이 서로 어떻게 구성되어 있는지를 보여준다.
배치 다이어그램 (Deployment Diagram)
- 소프트웨어 구성 요소를 하드웨어 노드에 배치하는 것을 나타낸다.
- 시스템의 구성 요소들이 물리적인 장치나 노드에 어떻게 배치되는지를 보여준다.
시퀀스 다이어그램 (Sequence Diagram)
- 시간에 따른 객체 또는 구성 요소 간의 상호작용을 나타낸다.
- 메시지 교환 순서를 보여주어 시스템의 제어 흐름을 모델링한다.
커뮤니케이션 다이어그램 (Communication Diagram)
- Sequence 보다 객체나 구성 요소 간의 상호작용에 더 중점을 둔다.
- 객체 간의 메시지 전달과 호출 관계를 보여준다.
타이밍 다이어그램 (Timing Diagram)
- 시간에 따른 객체나 구성 요소의 동작을 보여준다.
- 객체 간의 메시지 전달과 이벤트 발생을 시각적으로 나타낸다.
- 시간 제약 조건과 이벤트가 어떻게 상대적으로 발생하는지를 모델링한다.
활동 다이어그램 (Activity Diagram)
- 시스템의 제어 흐름이나 활동 흐름을 나타냅니다.
- 시스템의 동적인 행위(Action)를 시각적으로 표현한다.
- 활동의 순서와 결정 지점을 보여주어 비즈니스 프로세스나 소프트웨어 알고리즘의 논리를 모델링한다.
상호 작용 개요 다이어그램 (Interaction Overview Diagram)
- 시스템의 다양한 구성 요소나 객체 간의 상호작용을 개요 수준에서 보여 준다.
- Activity + Seqence의 요소를 결합하여 시스템의 제어 흐름을 보여 준다.
- 객체나 구성 요소의 다양한 상태, 이벤트에 응답하여 상태 전이를 어떻게 수행하는지를 모델링한다.
- 동적인 동작을 가진 복잡한 시스템의 행동을 모델링하는 데 사용할 수 있다.
- 시스템이 주고받는 이벤트를 순서대로 표현할 수 있다.