자격증/정보처리기사

[정보처리기사 실기 이론] 행위적(동적) 다이어그램 종류-유스케이스/시퀀스/활동/상태/커뮤니케이션 다이어그램

꾸행일기 2025. 7. 4. 13:10

[유시커 상활타]

✅ 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: 잘 지내?”