sequence-chart
TL;DR⚑
- 시퀀스 다이어그램은 객체 간의 메시지와 상호작용을 시간 순서대로 표현하는 UML 다이어그램임.
- Mermaid를 사용하면 코드 기반으로 간단하게 시퀀스 다이어그램을 작성할 수 있음.
- 다이어그램은 객체, 라이프라인, 메시지, 조건문 등으로 구성됨.
시퀀스 다이어그램의 주요 구성 요소⚑
- 객체 (Object)
- 시스템 내 특정 역할이나 작업을 수행하는 개체를 나타냄.
- 다이어그램에서는 객체명을 직사각형으로 표현하며, 객체의 생애주기를 표시하는 라이프라인(수직선)과 연결됨.
- 라이프라인 (Lifeline)
- 시간의 경과를 나타내는 수직선으로, 객체의 활동을 시각화함.
- 객체의 작업이 활성 상태일 때는 라이프라인에 활성화 박스로 표시함.
- 메시지 (Message)
- 객체 간의 상호작용을 나타냄.
- 동기 메시지: 응답을 기다려야 하는 메시지. → 실선과 실화살표.
- 비동기 메시지: 응답을 기다리지 않는 메시지. → 실선과 빈 화살표.
- 응답 메시지: 호출에 대한 응답. → 점선과 빈 화살표.
- 생성 메시지: 새로운 객체를 생성. → 점선과 빈 화살표.
- 삭제 메시지: 객체를 소멸. → X로 끝나는 메시지.
- 객체 간의 상호작용을 나타냄.
- 조건문과 반복문
- 옵션(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과 은행 시스템 간 통신 후 요청이 처리되었음.
- 활성화 상태 표시:
activate
와deactivate
를 통해 객체가 활성화된 기간을 명확히 나타냈음.