상태 다이어그램
상태 다이어그램은 시스템의 다양한 상태와 상태 간의 전환을 설명합니다. 반응형 시스템의 동작을 모델링하는 데 특히 적합합니다.
문법
기본 요소
- 상태:
state 상태명
- 전환:
-->
- 시작 상태:
[*]
- 종료 상태:
[*]
- 복합 상태: 중첩된 상태를 포함할 수 있음
- 선택점:
<<choice>>
- 노트:
note left/right of
기본 예제
코드:
mermaid
stateDiagram-v2
[*] --> 정지
정지 --> [*]
정지 --> 이동
이동 --> 정지
이동 --> 충돌
충돌 --> [*]
고급 예제
다양한 기능을 보여주는 복잡한 상태 다이어그램:
코드:
mermaid
stateDiagram-v2
[*] --> 대기
state 대기 {
[*] --> 준비
준비 --> 처리중: 시작
처리중 --> 준비: 완료
}
대기 --> 활성: 활성화
state 활성 {
[*] --> 실행중
실행중 --> 일시정지: 일시정지
일시정지 --> 실행중: 재개
실행중 --> 오류: 실패
오류 --> 실행중: 재시도
}
활성 --> 대기: 비활성화
활성 --> [*]: 종료
note right of 활성: 시스템이 완전히 작동 중
note left of 대기: 시스템이 대기 중
복합 상태
코드:
mermaid
stateDiagram-v2
[*] --> 첫번째상태
첫번째상태 --> 두번째상태
state 첫번째상태 {
[*] --> 하위상태1
하위상태1 --> [*]
}
state 두번째상태 {
[*] --> 하위상태2
하위상태2 --> [*]
}
선택점
코드:
mermaid
stateDiagram-v2
state 분기상태 <<choice>>
[*] --> 분기상태
분기상태 --> 상태1: 조건1
분기상태 --> 상태2: 조건2
병렬 상태
코드:
mermaid
stateDiagram-v2
[*] --> 활성상태
state 활성상태 {
state "CPU 실행" as CPU
state "디스크 I/O" as IO
--
state "메모리 접근" as 메모리
}
스타일 설정
외관을 사용자 정의할 수 있습니다:
- 다양한 화살표 유형
- 상태 설명
- 노트
- 방향(LR 또는 TB)
유용한 팁
- 시스템의 주요 상태부터 시작
- 명확하고 간결한 상태 이름 사용
- 모든 가능한 전환 포함
- 필요한 경우 전환에 조건 추가
- 복합 상태를 사용하여 복잡성 관리
- 중요한 상태 동작을 노트로 기록
- 상태 다이어그램이 너무 복잡해지지 않도록 주의
- 하위 상태를 적절히 그룹화
일반적인 문제 해결
레이아웃 문제
- 다이어그램 방향 조정
- 상태 수 줄이기
- 복합 상태로 관련 상태 구성
가독성 문제
- 의미 있는 상태 이름 사용
- 전환 설명을 간결하게 유지
- 노트를 적절히 사용하여 설명
복잡성 관리
- 복잡한 상태 다이어그램을 여러 개로 분할
- 복합 상태 사용
- 교차하는 전환 피하기