UML
📌 UML (Unified Modeling Language) 정리
1️⃣ UML이란?
- 개발자 간 의사소통을 원활하게 하기 위한 표준화된 모델링 언어
- Rumbaugh, Booch, Jacobson 등이 만든 객체지향 방법론의 장점을 통합
- UML은 사물(Things), 관계(Relationship), 다이어그램(Diagram) 으로 구성됨
2️⃣ UML 구성 요소
✔ 사물(Things)
- 다이어그램에서 관계를 형성할 수 있는 대상
종류
- 구조 사물: 클래스(Class), 인터페이스(Interface), 유스케이스(Usecase), 노드(Node) 등
- 행동 사물: 요소들의 행위, 상호작용
- 그룹 사물: UML 요소들을 그룹화
- 주해 사물: UML에 대한 설명이나 주석
✔ 관계(Relationship)
- 사물과 사물 간의 연관성
- 종류: 연결, 집합, 포함, 일반화, 의존, 실제 관계
✔ 다이어그램(Diagram)
- 사물과 관계를 그림으로 나타낸 도구
- 시스템의 구조와 흐름을 시각적으로 표현
- UML에는 정적(구조적) 다이어그램 6개와 동적(행위) 다이어그램 7개가 있음
✔ 스테레오 타입(Stereo type)
- UML 요소를 확장해서 새로운 의미를 부여하는 기능
- UML 기본 형식을 유지하면서 내부적으로 다른 의미를 표현
- 특별한 규칙은 없지만, 일반적으로 《》 기호를 사용해서 표현
주요 스테레오 타입 예시
- 《include》 : 필수적으로 실행해야 하는 포함 관계
- 《extend》 : 선택적으로 실행할 수 있는 확장 관계
- 《interface》 : 추상 메서드만 가지는 클래스 (인스턴스 생성 불가)
- 《entity》 : 데이터 저장과 관련된 개체
- 《boundary》 : 시스템 외부와의 상호작용 담당
- 《control》 : 시스템의 기능 및 제어 담당
📌 관계의 종류 (Relationship Types)
1️⃣ 연관(Association) 관계
- 두 개 이상의 사물이 서로 연결되어 있는 관계
- 특정 사물이 다른 사물의 특성을 지속적으로 참조하는 관계
- 방향성을 가지며 화살표(→) 로 표현
- 양방향 관계는 선(—) 으로 표현
- 다중도(Multiplicity): 관계의 개수 표현
- * : 0개 이상 (다수)
- n : 정확히 n개
- n..m : 최소 n개, 최대 m개
- n..* : 최소 n개 이상
2️⃣ 집합(Aggregation) 관계
- 하나의 사물(Part)이 다른 사물(Whole)에 포함되어 있는 관계
- 전체(Whole)와 부분(Part)이 서로 독립적
- UML에서는 빈 마름모(◊) 를 사용하여 실선으로 표현
3️⃣ 포함(Composition) 관계
- 하나의 사물(Part)이 다른 사물(Whole)에 포함되어 있는 관계
- 전체(Whole)와 부분(Part)이 서로 종속적
- UML에서는 채워진 마름모(◆) 를 사용하여 실선으로 표현
👉 집합(Aggregation)과 포함(Composition)의 가장 큰 차이는 "전체가 사라졌을 때 부분이 살아남을 수 있는가?
4️⃣ 일반화 (Generalization) 관계
- 하나의 사물이 다른 사물에 대해 상위-하위 관계를 가지는 것을 의미함.
- 상위 사물: 하위 사물들의 일반적인 속성을 포함.
- 하위 사물: 상위 사물의 속성을 구체적으로 구현.
- UML에서는 빈 삼각형 실선 화살표(△→) 로 표현됨.
5️⃣ 의존 (Dependency) 관계
- 필요할 때만 유지되는 단기적인 관계.
- 한 사물의 변화가 다른 사물에 영향을 미침.
- UML에서는 점선 화살표(→) 로 표현됨.
6️⃣ 실체화 (Realization) 관계
- 여러 사물의 공통적인 기능을 상위 개념으로 정의하고, 이를 하위 사물이 구현하는 관계.
- UML에서는 빈 삼각형 점선 화살표(△→) 로 표현됨.
📌UML 다이어그램 종류 정리
1. 구조적(Structural) 다이어그램
1️⃣ 클래스(Class) 다이어그램
- 클래스 간의 구조적(정적인) 관계를 표현.
- 클래스, 속성, 연산, 접근 제어자로 구성됨.
- 시스템의 구조와 문제점을 분석하는 데 도움.
🔹 접근 제어자 종류
- - (private) : 클래스 내부에서만 접근 가능
- + (public) : 클래스 외부에서도 접근 가능
- # (protected) : 동일 패키지 & 자식 클래스에서 접근 가능
- ~ (default) : 동일 패키지 내에서만 접근 가능
2️⃣ 객체(Object) 다이어그램
- 클래스의 인스턴스를 대상으로 관계를 표현.
- 특정 시점에서 시스템의 구조를 파악할 수 있음.
3️⃣ 컴포넌트(Component) 다이어그램
- 구현 단계에서 사용되는 컴포넌트 간의 구성과 연결 상태를 표현.
4️⃣ 배치(Deployment) 다이어그램
- 구현 단계에서 사용.
- 노드(Node)와 컴포넌트의 물리적인 관계를 나타냄.
5️⃣ 복합 구조(Composite Structure) 다이어그램
- 클래스나 컴포넌트 내부의 복합적인 구조를 표현.
6️⃣ 패키지(Package) 다이어그램
- 같은 그룹의 하위 모듈들 그룹화 & 패키지 간의 관계를 표현.
2. 행위(Behavioral) 다이어그램 🎭
1️⃣ 유스케이스(Use Case) 다이어그램
- 사용자의 요구사항을 분석하여 기능을 중심으로 표현.
2️⃣ 절차(Sequence) 다이어그램
- 객체 간 메시지를 주고받는 순서를 표현.
- 시스템 동작 개념을 쉽게 파악하는 대표적인 다이어그램.
⚙️ 구성 요소
✔ 생명선(Lifeline) : 객체에서 뻗어나가는 점선, 시간 흐름에 따라 길어짐.
✔ 실행(Activation) : 점선 위 직사각형, 활성화 (상호작용) 상태.
✔ 메시지(Message) : 객체 간 요청 & 응답 (화살표).
3️⃣ 통신(Communication) 다이어그램
- 객체 간의 연관 관계 & 메시지 주고받는 흐름을 표현.
4️⃣ 상태(State) 다이어그램
- 객체의 이벤트 발생에 따른 상태 변화를 표현.
- 특정 시점에서 객체의 상태가 어떻게 변하는지 보여줌.
5️⃣ 활동(Activity) 다이어그램
- 업무 프로세스의 흐름을 논리적으로 표현.
- 알고리즘 분석이나 워크플로우 모델링에 자주 사용됨.
6️⃣ 상호작용 개요(Interaction Overview) 다이어그램
- 여러 다이어그램을 조합하여 흐름을 나타냄.
7️⃣ 타이밍(Timing) 다이어그램
- 객체의 상태 변화와 시간 제약을 명확하게 표현.
총정리
📌 UML 총정리
1️⃣ UML이란?
- 개발자 간 의사소통을 원활하게 하기 위한 표준화된 모델링 언어
- 객체지향 방법론을 통합한 개념
- 사물(Things), 관계(Relationship), 다이어그램(Diagram)으로 구성됨
2️⃣ UML 구성 요소
✔ 사물(Things)
- 다이어그램에서 관계를 형성할 수 있는 대상
- 구조 사물 (클래스, 인터페이스), 행동 사물 (행위, 상호작용), 그룹 사물, 주해 사물
✔ 관계(Relationship)
- 사물 간의 연관성 표현 (연관, 집합, 포함, 일반화, 의존, 실체화 관계 포함)
✔ 다이어그램(Diagram)
- 정적(구조적) 다이어그램 6개, 동적(행위) 다이어그램 7개로 구성됨
✔ 스테레오 타입(Stereo type)
- UML 요소를 확장하여 새로운 의미를 부여하는 기능
- 《include》, 《extend》, 《interface》, 《entity》, 《boundary》, 《control》 등
3️⃣ UML 관계 종류
- 연관(Association) : 객체 간 일반적인 연결 관계
- 집합(Aggregation) : 전체와 부분이 독립적인 관계 (빈 마름모 ◊)
- 포함(Composition) : 전체가 사라지면 부분도 사라짐 (채워진 마름모 ◆)
- 일반화(Generalization) : 상위-하위 관계 (△ 실선 화살표)
- 의존(Dependency) : 한 요소가 변화하면 다른 요소도 영향을 받음 (→ 점선 화살표)
- 실체화(Realization) : 상위 요소의 기능을 하위 요소가 구현 (△ 점선 화살표)
4️⃣ UML 다이어그램 종류
🛠 구조적(Structural) 다이어그램 (시스템의 정적인 구조 표현)
✅ 클래스(Class) 다이어그램 : 클래스 간의 관계, 속성, 메서드 표현
✅ 객체(Object) 다이어그램 : 클래스의 인스턴스 관계 표현
✅ 컴포넌트(Component) 다이어그램 : 시스템 구성 요소 간의 관계 표현
✅ 배치(Deployment) 다이어그램 : 하드웨어 환경에서 시스템의 배포 구조 표현
✅ 복합 구조(Composite Structure) 다이어그램 : 클래스 내부 구조 표현
✅ 패키지(Package) 다이어그램 : 패키지 간의 관계 표현
🎭 행위(Behavioral) 다이어그램 (시스템의 동적인 동작 표현)
✅ 유스케이스(Use Case) 다이어그램 : 사용자의 요구사항 분석
✅ 절차(Sequence) 다이어그램 : 객체 간 메시지 주고받는 순서 표현
✅ 통신(Communication) 다이어그램 : 객체 간 메시지 흐름 및 연관 관계 표현
✅ 상태(State) 다이어그램 : 객체의 상태 변화 표현
✅ 활동(Activity) 다이어그램 : 업무 흐름과 논리적 순서 표현
✅ 상호작용 개요(Interaction Overview) 다이어그램 : 여러 다이어그램의 흐름 조합
✅ 타이밍(Timing) 다이어그램 : 시간에 따른 객체의 상태 변화 표현