Skip to content

sequence-chart

TL;DR

  • 시퀀스 다이어그램은 객체 간의 메시지와 상호작용을 시간 순서대로 표현하는 UML 다이어그램임.
  • Mermaid를 사용하면 코드 기반으로 간단하게 시퀀스 다이어그램을 작성할 수 있음.
  • 다이어그램은 객체, 라이프라인, 메시지, 조건문 등으로 구성됨.

시퀀스 다이어그램의 주요 구성 요소

  1. 객체 (Object)
    • 시스템 내 특정 역할이나 작업을 수행하는 개체를 나타냄.
    • 다이어그램에서는 객체명을 직사각형으로 표현하며, 객체의 생애주기를 표시하는 라이프라인(수직선)과 연결됨.
  2. 라이프라인 (Lifeline)
    • 시간의 경과를 나타내는 수직선으로, 객체의 활동을 시각화함.
    • 객체의 작업이 활성 상태일 때는 라이프라인에 활성화 박스로 표시함.
  3. 메시지 (Message)
    • 객체 간의 상호작용을 나타냄.
      • 동기 메시지: 응답을 기다려야 하는 메시지. → 실선과 실화살표.
      • 비동기 메시지: 응답을 기다리지 않는 메시지. → 실선과 빈 화살표.
      • 응답 메시지: 호출에 대한 응답. → 점선과 빈 화살표.
      • 생성 메시지: 새로운 객체를 생성. → 점선과 빈 화살표.
      • 삭제 메시지: 객체를 소멸. → X로 끝나는 메시지.
  4. 조건문과 반복문
    • 옵션(Option): 특정 조건에서만 실행되는 메시지 흐름을 나타냄.
    • 반복(Loop): 일정 조건에 따라 반복되는 흐름을 나타냄.

지침들

  • 수 많은 객체와 메시지로 복잡한 시퀀스 다이어그램을 그리지 말라.
  • 핵심만 짚어서 작은 시퀀스 다이어그램을 여러개 그리라.
  • 사소한 차이점까지 모두 시퀀스 다이어그램에 표현하지 말라.
  • 대개 고차원 개괄 다이어그램이 저차원 다이어그램보다 더 쓸모 있다.

Mermaid Sequence Diagram 표기법 요약

  • mermaid 문서 참고

  • 기본 메시지 표기법:

    • ->>: 동기 요청 메시지 (실선 색칠된 화살촉)
    • -->>: 동기 응답 메시지 (점선 색칠된 화살촉)
    • -): 비동기 요청 메시지 (실선 열린 또는 절반 화살촉)
    • --): 비동기 응답 메시지 (점선 열린 또는 절반 화살촉)
  • 라이프라인 제어:

    • activate/deactivate: 명시적 활성화/비활성화
    • +/-: 축약형 활성화/비활성화 (->>+, -->>-)
  • 그룹화 및 제어:

    • alt/else: 조건부 분기
    • loop: 반복 구문
    • opt: 선택적 실행
    • par: 병렬 실행
예시
sequenceDiagram
    A->>B: 요청
    activate B
    B-->>A: 응답
    deactivate B
sequenceDiagram
    A->>+B: 요청
    B-->>-A: 응답
alt 조건
    A->>B: 메시지
else 조건
    A->>B: 메시지
end
loop 조건
    A->>B: 메시지
end
par 병렬 실행
    A->>B: 메시지
    A->>C: 메시지
end

Mermaid를 활용한 시퀀스 다이어그램 예시

sequenceDiagram
    participant User as 사용자
    participant ATM as ATM 기기
    participant Bank as 은행 시스템

    User->>ATM: 카드 삽입
    activate ATM
    ATM->>Bank: 계정 인증 요청
    activate Bank
    Bank-->>ATM: 계정 인증 성공
    deactivate Bank
    ATM-->>User: 인증 완료 메시지
    deactivate ATM

    User->>ATM: 현금 출금 요청
    activate ATM
    ATM->>Bank: 출금 요청 처리
    activate Bank
    Bank-->>ATM: 처리 결과 반환
    deactivate Bank
    ATM-->>User: 현금 지급
    deactivate ATM

다이어그램 분석

  • 카드 삽입: 사용자가 카드를 삽입하면 ATM이 활성화되고, 은행 시스템으로 계정 인증 요청을 보냈음.
  • 계정 인증: 은행 시스템이 요청을 처리한 후 인증 성공 메시지를 반환했음.
  • 현금 출금: 사용자가 현금 출금을 요청했으며, ATM과 은행 시스템 간 통신 후 요청이 처리되었음.
  • 활성화 상태 표시: activatedeactivate를 통해 객체가 활성화된 기간을 명확히 나타냈음.