# UML 이란?
- 시스템 개발이나 프로젝트 아이디어를 상대방에게 효과적으로 설명하여 의사소통을 효율적이고 효과적으로 이루어지게 하기 위해 표준화된 모델링 언어
- 사용하는 목적과 흐름을 간단히 설명하기 좋은 도구
- 표현 목적에 따라 사용하는 다이어그래밍 다를 수 있기 때문에 여러 가지 다이어그램 사용
- 다이어그램은 사물 + 관계 로 구성됨
1️⃣ [유스케이스 다이어그램]
- 행위 다이어그램군
- 소프트웨어와 사용자 간의 상호관계를 시각적으로 보여주는 다이어그램.
- 소프트웨어 혹은 시스템이 제공하는 다양한 기능과 사용자와의 관계를 명시하는 다이어그램.
- 쉽게 해당 프로젝트의 기능이나 정보를 이해할 수 있음
+ 사물
- 액터(사용자), 유스케이스(서비스나 기능)
구성요소 | 설명 |
시스템 | - 만들고자 하는 시스템, 만들고 싶은 시스템의 범위를 설정/경계 나타낼 때 사용 - 사용자나 다른 기계가 특정 기능의 수행을 목적으로 이용하는 시스템 표현 - 유스케이스를 수행하는 장치 |
액터 | - 소프트웨어 시스템 외부의 독립적인 존재 - 시스템에 서비스 요청하고 시스템으로부터 정보를 제공받는 사용자 - 사람뿐만 아니라 하드웨어 시스템 가능 - 여러 명의 액터 생성 가능 |
유스케이스 | - 시스템이 액터에게 제공하는 서비스나 기능 - 유스케이스 이름: '~하다'와 같이 동사로 표현 - 유스케이스 하나에 한 개의 기능을 작성 - 액터의 요청에 반응하여 원하는 처리 수행 및 정보 제공 |
+ 관계
- 액터와 유스케이스 사이의 의미있는 상호관계
- 선의 종류에 따라 연관, 포함, 확장, 일반화 관계로 구분
구성요소 | 설명 |
연관 관계 (association) | - 액터와 유스케이스 간의 상호작용 표시 - 액터가 시스템의 어떤 기능에 접근하는지 표현 |
포함 관계 (include) | - 해당 유스케이스 수행을 위해 필요한 선수 과정 표시 - 화살표가 가리키는 유스케이스 선수 과정 - 하나의 유스케이스가 진행될 때, <<include>>로 연결된 유스케이스가 반드시 진행되는 것을 의미 |
확장 관계 (extend) | - 유스케이스의 행위 확장 표시 - 유스케이스에서 추가 기능을 표현할 때 사용, 포함 관계와 다르게 반드시 일어나지 않아도 됨 - 화살표가 가리키는 "글을 등록한다"가 실행될 때, 화살표가 나가는 "사진을 첨부한다"는 추가기능 실행 의사가 있을 시 실행 |
일반화 관계 (generalization) | - 액터나 유스케이스 사이의 상위/하위 개념 표시 - 화살표가 가리키는 쪽이 상위 개념, 화살표가 나가는 쪽이 상위 개념에 포함되는 하위 개념 - 일반적인 유스케이스와 조금 더 구체적인 유스케이스 사이를 표현 |
- 너무 상세하게 구성하지 말고, 최상위 레벨에서 사용자가 해야 하는 행위를 단순하게 작성해야 함
- 1) 유스케이스 다이어그램을 완성한 다음 식별된 유스케이스별로 유스케이스 시나리오 작성
- 2) 유스케이스 시나리오에 대한 표준은 없으나 유스케이스 시나리오에는 일반적으로 유스케이스 이름 및 기요, 유스케이스를 수행하는 행위자, 선행 및 후행조건, 유스케이스의 이벤트 흐름이 포함됨
- 3) 유스케이스 시나리오를 작성할 때는 시스템이 무엇을 하는가에 대한 설명에 집중
- 4) 시나리오를 자세하게 작성하는 것도 좋지만 고객에 이해할 수 있는 수준으로 작성하는 것이 중요
- 5) 시스템이 해당 유스케이스를 수행하기 위한 방법과 같은, 구현 방법에 대해서는 설명하지 않아야 함
[액티비티 다이어그램]
- 행위 다이어그램군
- 시스템이나 프로젝트, 업무 흐름, 활동 순서, 계산 과정을 단계적으로 작성할 수 있으며,
일의 흐름이나 화면의 흐름을 표현할 때 사용
- 순서도: 어떤 명령의 순서만 보여줌 / 액티비티(활동) 다이어그램: 기능들의 상호작용에 대해 더 상세하게 설계 가능
- 화살표로 상호작용 과정을 표현함으로써 활동의 흐름 보여줌
+ 사물
- 액션(액티비티 내에서의 한 단계를 의미, 더이상 나눌 수 없는 가장 작은 단위의 단계), 규칙, 병합 노드(액션의 흐름을 제어할 수 있는 노드)...
이름 | 역할 | |
시작점 (Initial Node) | - 액티비티를 호출하여 흐름의 시작을 알리는 노드 | |
종료점 (Final Node) | - 동작이나 과정의 끝을 알리는 노드 | |
액션 (Action) | - 액티비티 내에서의 한 단계 - 더 작은 단위로 분해 불가 |
|
액티비티 (Activity) | - 활동 모델 내의 구조 표현 - 액션과 하는 일들로 구성 |
|
조건 노드 (Decision Node) | - 하나의 간선(edge)을 다수의 간선으로 분해 - 가드(Guard)라는 기능을 이용하여 한 액션에서 다른 액션을 넘어갈 때의 조건을 표기함으로써 각 간선에 대해 설명 |
|
병합 노드 (Merge Node) | - 다수의 간선을 하나의 간선으로 병합하는 역할 - 들어오는 간선(incoming edge)은 여러 개, 나가는 간선(outcominig edge)은 한개 |
|
포크 노드 (Fork Node) | - 병렬처리 노드 - 하나의 간선을 동시에 발생하는 다수의 간선으로 구분하는 역할 |
|
조인 노드 (Join Node) | - 병렬처리 노드 - 여러 흐름을 합쳐 동기화하는 역 |
- 조건 노드: 모든 조건들이 서로 배타적이어야 함
- 포크 노드: 두 개의 흐름이 동시에 진행될 수 있음
+ 관계
이름 | 역할 | |
제어 흐름 (Control Flow) | - 수행이 끝난 이전 노드와 수행을 시작할 다음 노드를 연결하는 선 - 각 액션들을 화살표로 연결하여 해당 액션의 순서를 나타냄 |
|
객체 흐름 (Object Flow) | - 액션에서 객체(object)로 연결된 선 - 액션이 객체에 영향을 미친다는 의미 |
[클래스 다이어그램]
- 구조 다이어그램군
- 클래스 내부 구성요소 및 클래스 간의 관계를 도식화하여 시스템의 일부 및 전체를 구조화
- 프로젝트 시스템 간의 관계 표현
- 시각적으로 표현 가능
- 곧바로 코드로 변환 가능
+ 구성요소
- 명칭(name)(클래스라는 사물의 명칭)
- 속성(attribute)(해당 클래스가 가지고 있는 상태)
- 기능(operation)(클래스의 동작, 즉 클래스가 제공하는 서비스를 의미)
+ 사물
이름 | 역할 | |
클래스(class) | - 클래스 이름, 속성, 기능으로 나눠 기술 - 공통된 속성과 행동을 갖는 객체들의 집합 |
|
추상 클래스(abstract class) | - 내용이 비어 있는 추상 메서드를 갖는 클래스 |
+ 관계
이름 | 역할 | |
연관 관계(association) | - 클래스들 간의 관계를 나타내는 선 - 클래스 자신과 스스로 연결 가능 - 양방향 관계는 실선, 일방향은 화살표로 표시 - 동사구로 지어진 이름 |
|
집단화 관계(Aggregation) | - 전체와 부분의 관계 - 전체와 부분은 서로 독립적으로 존재 가능 - 마름모 쪽 클래스가 전체, 실선 쪽 클래스가 부분 |
|
구성 관계(composition) | - 전체와 부분의 관계 - 집단화 관계와 유사하나 더 강력한 연관 관계 - 전체와 부분이 동시에 생성, 소멸 - 부분은 독립적으로 존재 불가 |
|
일반화 관계(generalization) | - 상속 관계(inheritance) 혹은 특수한 것에서 일반적인 내용을 이끌어 낼 때 사용 - 일반화된 클래스(부모 클래스)와 구체적인 클래스(자식 클래스) 간의 관계 - 자식 크랠스는 부모 클래스의 속성과 기능을 공유하는 동시에 새로운 속성과 기능 추가 가능 |
|
의존 관계(dependency) | - 한 클래스가 다른 클래스의 특정 부분에 구조적으로 의존, 사용하는 관계 - 클래스의 변화가 의존하는 클래스에 영향 |
[시퀀스 다이어그램]
- 시스템 세부사항들의 진행 과정과 시간적 흐름을 표현할 수 있는 다이어그램
- 시스템의 메시지를 시간순으로 표현하기 때문에 시스템의 순차적인 흐름을 정확하게 파악 가능
+ 구성요소
- 액터: 시스템을 사용하는 사람이나 외부 시스템을 말함
- 객체: 시스템 내에서 객채와 객체, 객체와 액터가 상호작용하는 개체를 의미
- 메시지: 객체 간의 상호작용 의미. 수평의 화살표 방향으로 진행되는 것을 의미
- 생명선: 객체가 존재할 수 있는 시간을 의미. 객체가 소멸되면 생명선도 같이 소멸됨
- 활성화: 객체가 활성화된 기간을 의미
+ 사물
이름 | 역할 | |
액터(actor) | - 시스템의 외부에서 시스템을 작동시키는 주체 - 사람뿐만 아니라 외부 하드웨어도 가능 |
|
생명선(lifeline) | - 사각형 모형의 객체와 점선의 결합 - 객체: 상호작용의 개별 참여자인 객체 - 점선의 길이: 객체의 생존 기간 의미 |
|
활성화(activation) | - 생명선 위의 얇은 직사각형 - 객체가 활성화되어 있는 기간 - 참여자가 작업을 실행하는 기간 |
+ 관계
이름 | 역할 | |
메시지 | - 시스템 사이의 활동 전달을 의미 - 화살표로 표현(흐름의 방향) |
|
시퀀스 메시지 | - 화살표 방향을 따라 순차적으로 수행되는 메시지 | |
반환 메시지 | - 이전 호출의 반환을 기다리는 객체에게 다시 돌아오도록 하는 메시지 | |
자체 메시지 | - 동일한 생명선의 메시지 호출 - 재귀 메시지라고도 불림 - 시작점: 활성화의 상단 |
|
분실 메시지 | - 송신을 알 수 있지만, 수신은 알 수 없는 메시지 | |
발견 메시지 | - 수신은 알 수 있지만, 송신은 알 수 없는 메시지 | |
중단 메시지 | - 생명선 전체의 실행을 중단시키는 메시지 |
- 메시지: 객체에서 다른 객체에게 행하는 기능
- 반환 메시지: 기능을 의미하는 것이 아니라 기능의 결과로 나타나는 상태를 의ㅁ
'학교' 카테고리의 다른 글
IoT 중간고사 예상 문제 (0) | 2024.04.22 |
---|---|
학교) 시스템분석설계 UML 연습문제 (0) | 2023.12.19 |