개발/Architecture & Design Pattern

UML 다이어그램 (Unified Modeling Language Diagram)

피로물든딸기 2024. 3. 2. 23:10
반응형

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의 요소를 결합하여 시스템의 제어 흐름을 보여 준다.


상태 다이어그램 (Statechart Diagram)

- 객체나 구성 요소의 다양한 상태, 이벤트에 응답하여 상태 전이를 어떻게 수행하는지를 모델링한다.
동적인 동작을 가진 복잡한 시스템의 행동을 모델링하는 데 사용할 수 있다.

- 시스템이 주고받는 이벤트를 순서대로 표현할 수 있다.

반응형