가시화 언어
구축 언어
명세화 언어
문서화 언어
| 사물 | 내용 |
|---|---|
| 구조 사물(Structual Things) | 시스템의 개념적, 물리적 요소를 표현 클래스(Class), 유즈 케이스(Use Case), 컴포넌트(Component), 노드(Node) 등 |
| 행동 사물(Behavioral Things) | 시간과 공간에 따른 요소들의 행위를 표현 상호작용, 상태 머신(State Machine) 등 |
| 그룹 사물(Grouping Things) | 요소들을 그룹으로 묶어서 표현 패키지(Package) |
| 주해 사물(Annotion things) | 부가적인 설명이나 제약조건 등을 표현 노트(Note) |
| 다중도 | 의미 |
|---|---|
| 1 | 1개의 객체가 연관되어 있다. |
| n | n개의 객체가 연관되어 있다. |
| 0..1 | 연관된 객체가 없거나 1개만 존재한다. |
| 0.. 또는 | 연관된 객체가 없거나 다수일 수 있다. |
| 1..* | 연관된 객체가 적어도 1개 이상이다. |
| n..* | 연관된 객체가 적어도 n개 이상이다. |
| n..m | 연관된 객체가 최소 n개에서 최대 m개이다. |
사람이 집을 소유하는 관계이다. 사람은 소유하고 있는 집에 대해 알고있지만, 집은 누구에 의해 소유되고 있는지 모른다는 의미이다.

연관 관계 예제 1 해설
선생님은 학생을 가르치고 학생은 선생님으로부터 가르침을 받는 것과 같이 서로 관계가 있다.

연관 관계 예제 2 해설
1..*'이므로 학생은 한 명 이상의 선생님으로 부터 가르침을 받는다.1..*'이므로 선생님은 한 명 이상의 학생을 가르친다.프린터가 컴퓨터에 연결하여 사용할 수 있으며 다른 컴퓨터에 연결해서 사용할 수 있다.

문을 열 수 있는 키는 하나이며, 해당 키로 다른 문을 열 수 없다. 문이 없어지면 키도 더이상 필요하지 않다.

아메리카노와 에스프레소는 커피이다. 다시말하면, 커피에는 아메리카노와 에스프레소가 있다.

등급이 높으면 할인율을 적용하고, 낮으면 적용하지 않음을 나타낸다.

비행기는 날 수 있고 새도 날 수 있다. 그러므로 비행기와 새는 날 수 있다는 행위로 그룹화 할 수 있다.

✅ 구조적 다이어그램 (Structural) - 정적 모델링
| 다이어그램 | 내용 |
|---|---|
| 클래스 다이어그램 Class Diagram | - 클래스와 클래스가 가지고 있는 속성, 클래스 사이의 관계를 표현함 - 시스템 구조를 파악하고 문제점 도출 가능 |
| 객체 다이어그램 Object Diagram | - 클래스에 속한 사물들, 즉 인스턴스를 특정 시점의 객체와 객체 사이의 관계로 표현 - 럼바우 객체지향 분석 기법에서 객체 모델링에 활용 됨 |
| 컴포넌트 다이어그램 Component Diagram | - 실제 구현 모델인 컴포넌트 간의 관계, 인터페이스를 표현 - 구현 단계에서 사용 |
| 배치 다이어그램 Deployment Diagram | - 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현 - 노드와 의사소통(통신) 경로를 표현 - 구현 단계에서 사용 |
| 복합체 구조 다이어그램 Composite Structure Diagram | - 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현 |
| 패키지 다이어그램 Package Diagram | - 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현 |
✅ 행위 다이어그램 (Behavioral) - 동적 모델링
| 다이어그램 | 내용 |
|---|---|
| 유스케이스 다이어그램 Use Case Diagram | - 사용자의 요구 분석, 기능 모델링 작업에 사용 - 사용자와 사용 사례로 구성(여러 형태의 관계로 이루어짐) |
| 순차 다이어그램 Sequence Diagram | - 상호 작용하는 시스템이나 객체들이 주고받는 메시지를 표현 |
| 커뮤니케이션 다이어그램 Communication Diagram | - 순차 다이어그램과 같이 동작에 참여하는 객체들이 주고받는 메시지를 표현하는데, 뿐만 아니라 객체들 간의 연관까지 표현 |
| 상태 다이어그램 State Diagram | - 변화 혹은 상호작용에 따라 객체가 어떻게 변화하는지 표현 -럼바우 객체지향 분석 기법에서 동적 모델링에 활용 |
| 활동 다이어그램 Activity Diagram | - 시스템이 어떤 기능을 수행하는지 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서에 따라 표현 |
| 상호작용 개요 다이어그램 Interaction Overview Diagram | - 상호작용 다이어그램 간의 제어 흐름을 표현 |
| 타이밍 다이어그램 Timing Diagram | - 객체 상태 변화와 시간 제약을 명시적으로 표현 |
<<include>> <<extend>><<interface>><<entity>><<boundary>><<control>><<exception>> <<constructor>>주요 UML 다이어그램으로 유스케이스 다이어그램, 클래스 다이어그램, 순차 다이어그램이 있다.
유스케이스 다이어그램(Use Case Diagram)은 개발된 시스템과 관련된 외부 요소들, 즉 사용자와 다른 외부 시스템들이 개발될 시스템을 이용해 수행할 수 있는 기능을 사용자의 관점에서 표현한 것이다.
유스케이스 다이어그램을 통해 시스템의 범위를 파악할 수 있다.
시스템(System) / 시스템 범위(System Scope)
시스템 내부에서 수행되는 기능들을 외부 시스템과 구분하기 위해 시스템 내부의 유스케이스들을 사각형으로 묶어 시스템 범위를 표현한다.
사각형 안쪽 상단에 시스템 명칭을 기술한다.
액터(Actor)
주액터(Primary Actor)
부액터(Secondary Actor)
<<Actor>>라고 표기한다.유스케이스(Use Case)
유스케이스 다이어그램에서의 관계는 액터와 유스케이스, 유스케이스와 유스케이스 사이에서 나타날 수 있으며, 종류는 연관(Association), 의존(Dependency), 일반화(Generalization)이 있으며 의존관계는 포함(Include), 확장(Extend)로 나눠진다.
💡 포함 관계
두 개 이상의 유스케이스에 공통적으로 적용되는 기능을 별도로 분리하여 새로운 유스케이스로 만든 경우,
새롭게 분리된 유스케이스와 관계를 포함 관계라고 한다.
💡 확장 관계
유스케이스가 특정 조건에 부합되 기능이 확장 될 때 그 관계를 확장 관계라고 한다.
연관 관계(Association)는 유스케이스와 액터간의 상호작용이 있음을 표현한다. 유스케이스와 액터를 실선으로 연결한다.
위 그림은 "사용자"(액터)가 "글을 등록한다"(유스케이스)는 기능과 상호작용이 있다는 것을 나타낸다.
<<include>>라고 표기한다.위 그림은 "글을 등록한다" 기능을 동작하기 위해서 "로그인 한다" 기능이 반드시 동작되어야 한다는 것을 나타낸다.
<<extend>>라고 표기한다.위 그림은 "글을 등록한다" 기능을 수행 할 때 "파일을 첨부한다" 기능을 선택적으로 수행 할 수 있다는 것을 나타낸다.
일반화 관계(Generalization)는 유사한 유스케이스 또는 액터를 모아 추상화한 유스케이스 또는 액터와 연결시켜 그룹을 만들어 이해도를 높이기 위한 관계이다.
구체적인 유스케이스에서 추상적인 유스케이스 방향으로 끝부분이 삼각형으로 표현된 화살표를 실선으로 연결하여 표현한다.
위 그림은 "글을 검색한다"를 "글쓴이로 검색한다"와 "날짜로 검색한다"로 좀더 구체화 한 것을 나타낸다.
유스케이스 작성 순서로는 1. 액터 식별 2. 유스케이스 식별 3. 관계 정의 이다.
액터는 시스템에 관련이 있는 사용자의 역할과 외부 시스템으로 식별 할 수 있다.
액터를 식별하기 위한 질문?
액터가 요구하는 서비스, 정보를 유스케이스로 식별 할 수 있고 액터가 시스템과 상호작용하는 행위를 유스케이스로도 나타낼 수 있다.
유스케이스를 식별하기 위한 질문?
액터간, 유스케이스간의 일반화, 연관관계를 정의하고 유스케이스간의 포함, 확장관계를 정의한다.
관계를 식별하기 위한 질문?
클래스 다이어그램(Class Diagram)은 구조 다이어그램으로 클래스 내부 구성요소 및 클래스 간의 관계를 도식화하여 시스템의 특정 모듈이나 일부 및 전체를 구조화 합니다. 개발 하기 전, 클래스 다이어그램을 그리게 되면 시스템 내 클래스 간의 의존성 파악과 팀원들 간 의사소통이 편리합니다.
클래스 다이어그램 구성요소
1. 클래스(Class)
2. 제약조건
3. 관계(Relationship)
💡 접근제어자
- public ➜ +
- private ➜ -
- protected ➜ #
- package ➜ ~
순차 다이어그램 구성요소
1. 액터(Actor)
시스템으로부터 서비스를 요청하는 외부 요소(사람, 외부 시스템)
2. 객체(Object)
메시지를 주고받는 주체
3. 생명선(Lifeline)
객체 메모리에 존재하는 기간, 객체 아래쪽에 점선을 그어 표현
4. 실행 상자(Active Box)
객체가 메시지를 주고받으며 구동되고 있음을 표현
5. 메시지(Message)
객체가 상호 작용을 위해 주고받는 메시지
| 기호 | 의미 | 기능 |
|---|---|---|
| 실선 + 꽉찬 삼각형 ( ▶ ) | 동기 | 메시지를 보낸 후 결과가 반환될 때까지 기다린다. |
| 실선 + 비어있는 삼각형( > ) | 비동기 | 메시지를 보낸 후 결과가 반환될 때까지 기다리지 않고 다른 작업을 수행한다. |
| 점선 + 비어있는 삼각형( > ) | 생성 | 메시지를 받는 새로운 객체를 생성한다. |
| 점선 + 꽉찬 삼각형 ( ▶ ) | 응답 | 동기 메시지에 대한 수행 결과이다. |
6. 객체 소멸
라이프라인 상에서 객체 소멸 표시를 만나면 해당 객체는 더 이상 메모리에 존재 하지 않음을 의미한다. 객체 라이프라인 마지막에 X로 표현한다.
7. 프레임(Frame)
다이어그램의 전체 또는 일부를 묶어 표현한다. 전체, 복합적인 부분, 반복구조, 선택구조 등이 프레임안에 표현된다. 프레임의 왼쪽 위에 다이어그램의 종류와 제목을 표기한다.