[유시커 상활타]
✅ 1. 유스케이스 다이어그램이란?
시스템이 사용자를 위해 어떤 기능을 제공하는지를 사용자 관점에서 시각적으로 보여주는 다이어그램이다.
즉, “누가 시스템을 이용해서 어떤 행동을 할 수 있는지”를 기능 중심으로 정리한 그림.
1) 구성요소
- 액터 / 유스케이스 / 시스템 / 시나리오 / 이벤트의 흐름
구성 요소 기호 설명 액터
(Actor)👤 (사람 그림) 시스템을 사용(수행)하는 사람 또는 외부 시스템. 주로 사람(고객, 관리자 등) 유스케이스
(Use Case)⭕ 타원 액터가 시스템을 통해 수행할 수 있는 기능 또는 행위 시스템
(System)▭ 사각형 박스 내가 만들거나 설명하려는 서비스 또는 앱 전체 (전체 시스템의 영역 표현) 관계
(Association)― 실선 액터와 유스케이스 간의 연결선 (사용 관계), 또는 유스케이스들 간의 포함/확장 관계
2) 쉬운 비유
🎡 유스케이스 다이어그램은 놀이공원 안내도라고 생각해보자.
- 🎟️ 놀이공원(시스템) 안에는
- 👧 방문객(액터) 이
- 🎠 롤러코스터, 회전목마(유스케이스) 를 타는 것처럼,
- 어떤 기능을 누가 쓸 수 있는지를 그림으로 표현한다.
3) 유스케이스 간의 관계
관계 | 표기 | 설명 | 예시 |
Include (포함) |
<<include>> | 공통 기능을 다른 유스케이스가 반드시 포함해서 쓸 때 | 결제하기 ← <<include>> ← 상품 구매 |
Extend (확장) |
<<extend>> | 기본 유스케이스에 특정 조건적으로 추가 또는 확장 기능 | 배송 옵션 선택 ← <<extend>> ← 결제하기 |
Generalization (일반화) |
빈 삼각형 화살표 | 추상적인 액터와 좀 더 구체적인 액터 사이에 맺어주는 관계. 하위 액터에서 상위 액터 쪽으로 실선으로 연결 | 일반회원, 고객 ▶ VIP회원 |
✅ 시퀀스 다이어그램이란?
객체 간의 동적 상호작용을 시간 순서대로 시각화한 다이어그램
1) 개념
- 객체 간 상호 작용을 메시지 흐름으로 표현한 다이어그램
- 객체 간 동적 상호 작용을 시간적 개념을 중심으로 모델링하는 과정이다.
- 객체의 오퍼레이션과 속성을 상세히 정의해야 한다.
- 유스케이스를 실현(Realization)한다.
객체 간 상호 작용 | 시스템 안의 여러 객체들이 서로 “대화”하듯 요청하고 응답함. 예: 로그인할 때 User가 LoginService에 요청하고, LoginService는 DB에 물어봄. |
메시지 흐름 | 객체가 서로 어떤 메서드(함수)를 호출하거나 데이터를 주고받는 순서를 표현함. |
동적 모델링 | 객체가 “시간 흐름 속에서 어떻게 반응하고 변화하는지”를 시각화함. 즉, 정적인 구조가 아니라 행동 중심의 모델링 |
시간 개념 중심 | 위 → 아래로 시간이 흐름. 먼저 일어난 일은 위, 나중에 일어난 일은 아래. |
오퍼레이션 & 속성 정의 필요 | 어떤 객체가 어떤 기능(메서드)과 어떤 상태(속성)를 갖고 있는지를 잘 정의해야 정확한 흐름을 그릴 수 있음. |
유스케이스 실현(Realization) | 유스케이스 다이어그램이 말하는 “무엇을 한다”는 기능을 시퀀스 다이어그램에서 “어떻게 동작하는가”로 풀어내는 과정 |
2) 구성 요소
- 객체 / 생명선 / 실행 / 메시지
구성 요소 | 기호 | 설명 |
객체 (Object) |
▭ 네모 박스 상단에 이름:클래스명 형식 | 메시지를 주고받는 주체. 시나리오에 등장하는 모든 역할 |
생명선 (Lifeline) |
객체 아래로 내려오는 점선 | 해당 객체가 살아 있는 시간. 메시지를 받을 수 있는 상태를 나타냄 |
활성 구간 (Activation) |
생명선 위에 생기는 세로 네모(막대) | 객체가 일을 처리 중인 시간 메시지를 받고 실행 중인 상태 |
메시지 (Message) |
→ 실선 화살표 (요청) ← 점선 화살표 (응답) |
객체 사이에 주고받는 요청/응답 또는 메서드 호출 |
🧠 예시로 이해하기: ‘상품 주문’ 시나리오
🛒 유스케이스 다이어그램에서는 단순히:
- 고객 → 상품 주문 (고객이 상품 주문을 한다.)
하지만 시퀀스 다이어그램에서는 실제 흐름을 이렇게 보여준다.
Customer → OrderController : 상품 주문 요청
OrderController → OrderService : 주문 처리 요청
OrderService → Inventory : 재고 확인
Inventory → OrderService : 재고 있음
OrderService → PaymentService : 결제 요청
PaymentService → BankAPI : 카드 승인
BankAPI → PaymentService : 승인 완료
PaymentService → OrderService : 결제 완료
OrderService → OrderRepository : 주문 저장
OrderService → OrderController : 주문 완료 응답
OrderController → Customer : 주문 성공 메시지
📌 이 예시에서 메시지 하나하나가 객체 간 메서드 호출 흐름이다.
**객체의 오퍼레이션(동작)**과 **속성(주문 정보, 재고 상태 등)**이 제대로 정의되어 있어야 정확하고 유용한 시퀀스 다이어그램이 되는 것이다.
한 문장으로 요약하자면,
시퀀스 다이어그램은 객체들이 유스케이스를 실현하기 위해 어떤 메시지를 시간 순서대로 주고받는지 시각적으로 표현한 것이다.
이걸 통해 시스템 내부 동작을 더 명확하게 설계하거나 설명할 수 있다.
🧠 또 다른 시각 예시
user:User loginCtrol:LoginController svc:LoginService
| | |
| ───── login(id, pw) ──>| | // 메시지 (요청)
| | ───── authenticate() ──>|
| | <──── true/false ───────| // 응답 (점선 화살표)
| <──── 로그인 결과 ─────| |
3) 언제, 왜 쓰는가?
상황 | 설명 |
백엔드 기능 설계 | 사용자 요청이 서버 내부에서 어떻게 흐르는지 알고 싶을 때 |
복잡한 API 흐름 설명 | 여러 객체가 서로 요청/응답을 주고받을 때 누구와 먼저 소통하는지 파악할 때 |
디버깅 또는 로직 확인 | 순서가 중요한 시점에서 잘못된 흐름을 추적할 때 유용 |
📄 시퀀스 vs 유스케이스 비교
항목 | 유스케이스 | 시퀀스 |
목적 | 사용자와 기능 연결 | 기능 내부의 실행 흐름 |
관점 | “무엇을 하느냐” | “어떻게 실행되느냐” |
시간 흐름 | 없음 | 있음 |
예시 | “상품 주문 가능” | “주문할 때 어떤 객체들이 순서대로 동작하는가” |
✅ 활동 다이어그램이란?
1) 개념
- 시스템 또는 업무의 전체 작업 흐름(프로세스)을 시각적으로 표현한 다이어그램이다.
- 흐름도(flow chart)처럼, “이 일이 끝나면 그다음엔 뭐하지?” 를 한눈에 보여주는 그림.
- 즉, 조건 분기, 반복, 병렬 실행 같은 흐름을 표현해서 시스템이 어떤 순서로 동작하는지 알려준다.
2) 구성요소
- 시작점 / 전이 / 액션(액티비티) / 조건(판단)노드 / 병합노드 / 포크노드 / 조인노드 / 구획면
구성 요소 기호 / 모양 설명 쉬운 비유
구성 요소 | 기호 | 설명 |
시작점(Initial Node) | ● (검은 동그라미) | 활동의 시작을 표현 하나의 다이어그램 안에는 하나의 시작점만 존재 |
액션/액티비티(Activity) | ▭ (둥근 사각형) | 어떠한 일들의 처리와 실행을 표현 |
전이(Transition) | → (화살표) | 작업 간 순서를 나타냄(실행의 흐름을 나타냄) |
조건(판단)노드(Decision Node) | ◆ (마름모) | 조건에 따라 흐름 분리를 표현 들어오는 제어 흐름은 한 개이고, 나가는 제어 흐름은 여러 개로 표현 |
병합 노드(Merge Node) | ◆ (마름모) | 분기된 흐름을 다시 합침 들어오는 제어 흐름은 여러 개, 나가는 제어 흐름은 한 개로 표현 |
포크노드(Fork Node) | 굵은 가로선 | 평행적으로 수행되는 흐름을 나누는 노드. 들어오는 액티비티 흐름은 한개, 나가는 액티비티 흐름은 여러개 |
조인노드(Join Node) | 굵은 가로선 | 포크 노드로 나눠진 흐름을 다시 하나로 합치는 노드. 들어오는 액티비티 흐름은 여러개. 나가는 액티비티 흐름은 한개. |
종료점(Final Node) | ◎(검은색 동그라미를 포함한 원) | 처리의 종료 표현 하나의 다이어그램 안에는 여러 개의 종료 노드가 있을 수 있음 |
3) 언제, 왜 쓰는가?
사용 상황 | 설명 |
프로세스를 정리하고 싶을 때 | 회원가입, 주문, 로그인 등 절차가 있는 기능 |
기획자/개발자/디자이너 간 공유용 | 시스템 흐름을 누구나 쉽게 이해할 수 있게 시각화 |
복잡한 조건이나 분기 로직 설명 시 | if-else, 반복문, 병렬처리 등 설명할 때 매우 유용 |
📄 활동 vs 시퀀스 비교
항목 | 활동 다이어그램 | 시퀀스 다이어그램 |
무엇을 보여주는가? | 작업(행동)의 전체 흐름 | 객체 간 메시지 주고받는 순서 |
관심 초점 | 프로세스, 조건, 분기, 반복 | 객체 간 상호작용(요청과 응답) |
시간 흐름 | 흐름 방향 기반 (→) | 위 → 아래로 시간 흐름 명확 |
사용자 중심 vs 객체 중심 | 사용자 중심 | 시스템 내부 객체 중심 |
활용 시점 | 초기 프로세스 기획 / 업무 흐름 도식화 | 기능 상세 설계, 로직 구현 이해 |
✅ 상태 다이어그램이란?
1) 개념
- 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지 표현하는 다이어그램이다.
- 어떤 이벤트에 의해 객체 자신이 속한 클래스의 상태 변화나 객체 간 상호 작용하는 과정에서의 상태 변화를 표현한다.
- 객체의 상태란 객체가 갖는 속성값의 변화이다.
즉, 어떤 객체가 시간이 지나면서, 또는 누군가의 행동(이벤트)에 의해 상태가 어떻게 바뀌는지를 보여주는 그림
용어 | 설명 |
객체 | 프로그램 안에서 살아 움직이는 ‘주인공’ 역할. 예: 사용자, 주문, 문 등 |
클래스의 상태 변화 | 클래스(설계도)에 따라 만들어진 객체가 가지고 있는 속성 값이 달라지는 것 예: 주문 상태가 "결제 전" → "결제 완료"로 바뀜 |
다른 객체와의 상호작용 | 외부에서 이벤트(예: 버튼 클릭, 메시지 수신 등)가 발생했을 때, 객체가 반응해서 상태를 바꿈 |
이벤트(Event) | 상태를 바꾸는 ‘신호’ 또는 ‘행동’. 예: "로그인 시도", "배송 시작", "타이머 종료" 등 |
상태(State) | 현재 객체가 처한 "모드"나 "상태값". 예: “로그인 전”, “로그인됨”, “오류 상태” |
📦 예시로 이해하기: ‘주문 객체’
📍 객체: Order
이 객체는 다음과 같은 상태를 가질 수 있다.
- Order의 상태(state) = "결제 전" → "결제 완료" → "배송 중" → "배송 완료"
📍 각 상태는 객체의 속성값이라고 생각하면 된다.
즉, 주문 객체의 status 속성이 "결제 전" → "배송 중"으로 바뀌는 것!
📍 그리고 이 상태 변화는 언제 일어나냐면?
- 이벤트(Event)가 발생할 때!
- 사용자가 "결제하기" 버튼 클릭 → 상태가 "결제 전" → "결제 완료"로 변함
- 택배사가 배송 시작 → "결제 완료" → "배송 중"
📌 이 상태의 변화를 시간 순서대로, 화살표로 표현한 게 바로 상태 다이어그램이다~
요약
상태 다이어그램이란? | 객체가 어떤 상태에 있다가 어떤 이벤트로 상태가 바뀌는지 그린 그림 |
객체의 상태란? | 객체가 갖는 속성값(예: 주문 상태, 로그인 여부 등) |
상태가 바뀌는 이유? | 클래스 내부 로직, 또는 외부 이벤트/상호작용 때문 |
무엇에 유용한가? | 기기 상태, 로그인 상태, 주문 처리, UI 화면 전환 등 "상태 중심 시스템" 설계에 아주 유용 |
2) 구성 요소
- 상태 / 시작 상태 / 종료 상태 / 전이 /이벤트 / 전이 조건
구성요소 | 기호 | 설명 | 예시 |
시작 상태 | ● (검은 동그라미) | 상태 다이어그램의 시작점 | “처음 상태” |
상태 (State) | 🟦 둥근 사각형 | 객체가 놓이는 하나의 “상태” | “로그인 대기”, “결제 대기” |
이벤트 (Event) | 상태 전이 화살표 위 텍스트 | 상태를 바꾸는 ‘신호’, 조건 | “로그인 버튼 클릭”, “타이머 종료” |
상태 전이 (Transition) | → (화살표) | 한 상태에서 다른 상태로 넘어가는 경로 | “A 상태 → B 상태” |
종료 상태 | ⏹ (검은 원 속에 흰 원) | 객체가 더 이상 활동하지 않는 마지막 상태 | “종료됨” |
✅ 커뮤니케이션 다이어그램이란?
1) 개념
- 객체 간의 메시지 흐름과 연결 관계를 함께 시각화한 다이어그램이다.
- 시퀀스 다이어그램과 비슷하지만, 커뮤니케이션 다이어그램은 '시간 + 구조(연결)'에 모두 초점을 둔다.
- 즉, 메시지뿐만 아니라 객체 간의 연관까지 표현하는 다이어그램이다.
2) 비유하자면
단체 채팅방에서 여러 사람이 주고받는 대화를 생각해보자.
- 누가 누구에게 말했는지 (연결 관계)
- 어떤 순서로 말이 오갔는지 (메시지 순서)
이 두 가지를 동시에 보는 것임.
📌 시퀀스 다이어그램이 “누가 언제 말했는가”에 집중한다면,
📌 커뮤니케이션 다이어그램은 “누가 누구와 말했는가”에 더 집중한다.
3) 구성요소
- 액터 / 객체 / 링크 / 메시지
구성 요소 | 기호 | 설명 | 예시 |
객체(Object) | ▭ 박스 콜론(:)기준으로 앞쪽에는 객체명, 뒤쪽에는 클래스명 기술 |
메시지를 주고받는 대상. 클래스의 인스턴스 | 단톡방에 있는 사람 |
링크(Link) | ─ 실선 | 객체 간 연결 관계를 나타냄. 액터와 객체, 객체 간 실선으로 표현 링크에 메시지를 표현 |
대화선 또는 연락선 |
메시지(Message) | 링크 위의 숫자 + 함수명 예: 1: login() |
메시지 전달 순서와 내용을 표시 | “1: 안녕”, “2: 잘 지내?” |
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기 이론] 논리 데이터 모델링 정규화 단계 뜯어보기 (1) | 2025.07.06 |
---|---|
[정보처리기사 실기 이론] 물리 데이터 모델링 무결성 종류 - 개체/참조/속성/사용자정의/키 무결성 (0) | 2025.07.05 |
[정보처리기사 실기 이론] 구조적(정적) 다이어그램 종류-클래스/패키지/컴포넌트 다이어그램 (3) | 2025.07.04 |
[정보처리기사 실기 이론] UML 다이어그램 종류 쉽게 이해하기 (1) | 2025.07.03 |
[정보처리기사 실기 이론] 디자인 패턴 유형 | 구조패턴(Structural Pattern) 쉽게 이해하기 (2) | 2025.07.02 |