3 분 소요

이 포스트에서는 Sequence Diagram에 대해 다룬다.

Sequence Diagram에 앞서…

Interaction Diagram

  • 시스템 내 객체들 간의 상호작용구체적인 시나리오로 표현한 다이어그램
  • 다양한 상세 수준에서 통신 과정을 설명
    • 시스템과 외부 환경 간의 상호작용
    • 시스템 내부 구성 요소 간의 상호작용
    • 프로세스 간 통신과 프로토콜
    • 클래스 수준에서의 통신

Sequence Diagram

  • Interaction Diagram의 일종

  • 가로축: 참여자 (lifelines)
  • 세로축: 시간의 흐름 (위 → 아래)
  • 시나리오 기반, 동적인 객체 간 상호작용 흐름 표현

Sequence Diagram의 예시는 다음과 같다.

Sequence diagram


Lifeline (생명선)

  • Sequence Diagram에서 객체나 역할의 존재와 활동 시간을 나타냄.
  1. Head of the Lifeline
  • roleName : Class 형식의 직사각형 → 객체 역할과 클래스 명시
  • 역할 (Roles)는 객체보다 더 일반적인 개념
  • 하나의 객체는 여러 역할 수행이 가능함.
  1. Body of the Lifeline
  • 아래로 점선 → 객체의 생애 주기 : 위에서 아래로 내려가며 시간 흐름을 표현
  • 실행 구간 (execution specification): 행동을 수행하는 시간대는 굵은 직사각형으로 표현

Message

  • 메시지 : Sequence diagram 에서 메시지는 한 객체가 다른 객체에게 어떤 작업을 요청하는 것을 의미함.

  • Send에서 Receive 방향으로 화살표를 통해 표기

Different Lifeline에서는 시간 순서가 맘대로 작용 (독립적임)

메시지 종류

메시지 종류 설명
Synchronous 호출 후 응답을 기다림 (msg(p1,p2))
Asynchronous 호출 후 기다리지 않음
Response 응답 메시지 (att = msg():val)
Object Creation new 키워드, 생성되는 객체 lifeline 위로 점선 화살표
Object Destruction × 기호로 객체 소멸
Found / Lost Message 송신자 또는 수신자가 불분명
Time-consuming Message 지연이 있는 메시지 표현 가능
  1. Found/ Lost Message
  • 어디서 온 메시지인지, 어디로 가야하는 메시지인지 알 수는 없지만, 어떤 객체가 그것을 받았다는/ 보냈다는 사실만 확인한 경우에 사용
  1. Time-consuming message 특징
  • 시간의 흐름에 따라 아래를 포함한 대각선 방향으로 표현

Sequence Diagram Frame

  • sd diagramName 형식의 프레임으로 전체 다이어그램 감쌈

sd란?

  • name of the sequence diagram, parameters(optional)
  • 상단 왼쪽에 작은 오각형 → 다이어그램 이름 및 매개변수
  • Self란 ?
    • 하나의 객체가 자기 자신에게 메서드를 호출하거나 작업을 요청하는 메시지
    • Java의 ‘this’ 와 비슷

Combined Fragments (제어 구조)

1. alt Fragment

  • 조건 분기(if-else)를 표현할 때 사용
  • 특정 조건에 따라 여러 가지 메시지 흐름 중 하나만 실행되는 경우를 나타냄.

2. opt Fragment

  • 특정 조건이 참일 때만 실행되는 메시지
  • 조건이 거짓이면 그냥 아무것도 일어나지 않는다.
alt Fragment VS opt Fragment

둘 다 if-else 구문처럼 보이지만, 분기 수가 alt는 Multiple , opt는 one이다.

3. loop Fragment

  • 특정 조건이나 횟수에 따라 메시지 흐름을 반복 실행하는 구조

  • for문, while문처럼 작동함.
  • (min, max) 키워드를 통해 반복의 수를 결정함.
  • Guard : 특정 메시지나 블록이 실행되기 위한 조건을 명시하는 불리언 조건식

4. break Fragment

  • 특정 조건이 만족되면 현재 흐름을 중단(break)하고 해당 메시지 흐름만 단독으로 실행되도록 하는 구조
  • break 칸 안에 진행될시에 상위 block도 다 같이 skip함.

5. seq Fragment

  • 여러 메시지 흐름을 순차적(Sequentially)으로 실행해야할 때 사용하는 컨테이너로 여러 하위 fragment들을 차례대로 실행하는 구조
  • Events on different lifelines은 순서가 아무렇게 올 수도 있다.

6. strict Fragment

  • 메시지나 상호작용을 지정한 순서대로 엄격하게(strictly) 실행해야 할 때 사용하는 프레임
  • seq fragment에서 다른 fragment와 혼합되면 실행 순서가 모호해질 수 있으므로, strict를 통해 명확한 실행 순서를 보장함.

7. par Fragment

  • 여러 메시지 흐름이나 작업이 동시(parallel)에 수행될 수 있음을 나타냄.
  • 즉, 병령 처리를 시각적으로 표현하는데 사용함.

8. critical Fragment

  • 두 개이상의 병렬 흐름(par)이 동시에 실행되더라도, 특정 블록은 한 번에 하나의 흐름만 접근 가능하도록 상호배제를 적용한 블록

  • 병렬 실행중에도 이 블록은 “하나씩만” 실행되도록 보호하는 구역

9. ignore Frament

  • 지정한 일부 메시지 이름을 무시(ignore)하고, 다이어그램 해석이나 실행 흐름에서 제외시키는데 사용
  • 쉽게 말해, 해당 메시지는 존재하지만 분석이나 시뮬레이션에서는 무시하겠다는 의미

10. consider Fragment

  • 지정한 메시지들만 고려하고 나머지 모든 메시지는 무시하는 선택적 분석 블록
  • 관심 있는 메시지들만 필터링해서 보여주는 것과 같음.

11. assert Fragment

  • 해당 블록 안의 메시지 흐름이 반드시 발생해야한다는 불변조건을 표현
  • 시스템이 올바르게 작동하려면, 이 시나리오에서는 반드시 실행되어야 함을 명시.

12. neg Fragment

  • 금지된 메시지 흐름 또는 시스템이 절대로 실행하면 안되는 시나리오
  • 시스템이 이 흐름을 실행하면 명백한 오류 또는 위반 상황으로 간주함.

요약

Operator 설명
alt 분기 (switch문 유사)
opt 옵션 (if문 유사)
loop 반복 (min, max 조건 가능)
break 예외적 흐름 처리
seq 약한 순서
strict 강한 순서
par 병렬 실행
critical 중단 없이 원자적으로 수행
ignore 무시할 메시지 정의
consider 고려할 메시지 정의
assert 반드시 발생해야 함
neg 발생하면 안 되는 상호작용

시간 제약 (Time Constraints)

  • 특정 이벤트 발생 시점
    • 상대적: after(5sec)
    • 절대적: at(12:00)
  • 시간 간격: {lower..upper}
  • now : current time

상태 불변 조건 (State Invariant)

  • 특정 시점에 객체가 반드시 만족해야 하는 조건
  • 조건이 거짓이면 모델 또는 구현이 잘못된 것

기타 상호작용 다이어그램

다이어그램 설명
Sequence Diagram 시간 순서 기반, 메시지 흐름
Communication Diagram 메시지 주고받는 대상 중심
Timing Diagram 상태 변화 중심 (시간 수평축)
Interaction Overview Diagram 다양한 상호작용 다이어그램의 흐름 표현 (활동 다이어그램 유사)

주요 표기 요소

요소 설명
Lifeline 참여 객체 또는 역할
Combined Fragment alt, loop 등의 제어 구조
Synchronous Message 응답 기다림
Asynchronous Message 응답 없이 진행
Destruction Event 객체 소멸 (×)
Found / Lost Message 송신자 또는 수신자 불명