[ETC] 목마른 놈이 UML 판다

GUNDY·2023년 11월 30일
1

오늘 알아볼 것은 우물 아닌 UML(Unified Modeling Language).

일명 통합 모델링 언어라고 부르는 녀석이다.

통합 모델링 언어(UML, 영어: Unified Modeling Language)는 소프트웨어 공학에서 사용되는 표준화된 범용 모델링 언어이다. 이 표준은 UML을 고안한 객체 관리 그룹에서 관리 하고 있다.

위키백과에도 항목이 있을 정도로 유명한 녀석이다.

오늘 주로 알아볼 것은 UML의 시각적 모델을 만들기 위한 도안 표기법이다.

UML Diagram의 종류

UML 다이어그램에는 어떤 것이 있는지 알아보자.

오늘의 설명은 이 UML 다이어그램을 작업할 수 있는 기능을 제공하는 Enterprise Architect 페이지의 설명을 기준으로 작성되었다.

구조 또는 런타임 아키텍처의 정적 관계를 반영하여 시스템이나 기능을 구성하는 구조적 요소를 묘사하는 구조(Structure) 다이어그램

시스템 또는 비즈니스 프로세스의 동작 기능을 묘사하는 모델의 동적 뷰를 보여주는 동작(Behaviour) 다이어그램이 있다.

구조 다이어그램

UML Structural diagrams depict the elements of a system that are independent of time and that convey the concepts of a system and how they relate to each other. The elements in these diagrams resemble the nouns in a natural language, and the relationships that connect them are structural or semantic relationships.

시간의 흐름과 독립적인 정적 관계 다이어그램이다.

종류설명
Class클래스 다이어그램은 시스템의 논리적 구조, 모델을 구성하는 클래스 및 객체를 캡처하여 존재하는 항목과 해당 모델의 프로퍼티 및 메서드를 설명한다.
Composite Structure복합 구조 다이어그램은 기능을 설명하기 위해 클래스, 인터페이스 및 구성 요소(및 해당 프로퍼티)의 내부 협업을 반영한다.
Component구성 요소 다이어그램은 시스템을 구성하는 소프트웨어, 임베디드 컨트롤러 등의 조각과 해당 구성 및 종속성을 보여줍니다.
Deployment전개 다이어그램은 시스템이 전개되는 방법과 위치를 보여주는 실행 아키텍처다.
Object객체 다이어그램은 클래스의 객체 인스턴스와 특정 시점의 관계를 묘사한다.
Package패키지 다이어그램은 모델 요소를 패키지로 구성하고 패키지 간의 종속성을 묘사합니다.
Profile프로필 다이어그램은 UML 요소, 커넥터 및 구성 요소를 확장하기 위해 «profile» 패키지에서 생성된 다이어그램이다.

Composite Structure의 경우 Swift에서는 구조체, 열거형, 프로토콜을 포함할 수 있다.

동작 다이어그램

UML Behavioral Diagrams depict the elements of a system that are dependent on time and that convey the dynamic concepts of the system and how they relate to each other. The elements in these diagrams resemble the verbs in a natural language and the relationships that connect them typically convey the passage of time.

시간의 흐름에 의존하는 동적 관계 다이어그램이다.

종류설명
Activity Diagrams활동 다이어그램은 시스템의 동작과 이러한 동작이 시스템의 전체 흐름과 관련되는 방식을 모델링한다.
Use Case Diagrams유스 케이스 다이어그램은 액터와 시스템 간의 유스 케이스 및 관계를 캡처한다. 이는 시스템의 기능적 요구 사항, 외부 운영자가 시스템 경계에서 상호 작용하는 방식 및 시스템의 응답을 설명한다.
StateMachine DiagramsStateMachine 다이어그램은 요소가 상태 간에 이동하는 방법을 보여주고, 전환 트리거에 따라 동작을 분류하고 가드를 제한한다.
Timing Diagrams타이밍 다이어그램은 시간 범위 내에서 다양한 객체의 동작을 정의하여 시간이 지남에 따라 상태가 변경되고 상호 작용하는 객체를 시각적으로 표현한다.
Sequence Diagrams시퀀스 다이어그램은 시간에 따른 일련의 순차적 단계로 동작을 구조적으로 표현한 것이다. 이는 워크플로, 메시지 전달 및 결과를 달성하기 위해 시간이 지남에 따라 요소가 일반적으로 협력하는 방식을 설명하는 데 사용된다.
Communication Diagrams커뮤니케이션 다이어그램은 런타임 시 요소 간의 상호 작용을 보여주고 개체 간 관계를 시각화한다.
Interaction Overview Diagrams상호 작용 개요 다이어그램은 상호 작용 다이어그램(타이밍, 시퀀스, 커뮤니케이션 및 기타 상호 작용 개요 다이어그램) 간의 협력을 시각화하여 포괄적인 목적을 제공하는 제어 흐름을 설명한다.

클래스 다이어그램

구조와 동작 다이어그램의 종류를 알아보았는데, 오늘은 그 중에서도 클래스 다이어그램에 대해 더 알아보도록 하자.

The Class diagram captures the logical structure of the system - the Classes - and things that make up the model. It is a static model, describing what exists and what attributes and behavior it has, rather than how something is done.

타입의 프로퍼티나 메서드 등과 같은 구성요소에 대해 설명하는 다이어그램이다.

위는 다이어그램을 그릴 수 있는 사이트인 draw.io에서 UML 탭의 Class 컴포넌트를 사용하면 나오는 기본 형태이다. 이처럼 타입의 이름과 프로퍼티, 메서드 등을 표현할 수 있다.

On a Class diagram you can illustrate relationships between Classes and Interfaces using Generalizations, Aggregations and Associations, which are valuable in reflecting inheritance, composition or usage, and connections respectively.

아마 객체 지향적으로 개발을 하게 되면 하나의 타입만을 사용해 앱을 만들 일은 없을 것이다. 즉 여러 타입의 클래스 다이어그램을 그리고 타입간의 관계에 대해서도 설명할 수 있는 것이다.

위 다이어그램은 마찬가지로 draw.io에서 템플릿을 클래스 다이어그램으로 선택하면 나오는 샘플이다.

타입의 관계를 화살표를 통해 표현하는데 화살의 모양과 선의 모양 등으로 차이가 발생한다.

이 화살표로 상속이나 의존관계 등을 명확히 표현한 다이어그램을 그릴 수 있다.

또 클래스 다이어그램은 타입간의 관계를 보여주기 때문에 디자인 패턴이나 아키텍처 패턴을 보여주기 좋다.

이 다이어그램은 브릿지 패턴을 적용했던 토이 프로젝트 당시에 그렸던 것인데, 클래스 다이어그램만으로도 어느정도 디자인 패턴을 표현할 수 있다는 예시가 될 것 같다.
열거형은 쓰지도 않았는데 인덱스에는 왜 넣었는지 모르겠다.

마무리

오늘은 통합 모델링 언어와 그 종류, 클래스 다이어그램에 대해 알아보았다.

코드 외에도 타인과 소통할 수 있는 하나의 방법이기 때문에 잘 알아두면 좋을 것 같다.

그럼

이만

profile
개발자할건디?

0개의 댓글