Skip to content

상태 다이어그램

상태 다이어그램은 시스템의 다양한 상태와 상태 간의 전환을 설명합니다. 반응형 시스템의 동작을 모델링하는 데 특히 적합합니다.

문법

기본 요소

  • 상태: state 상태명
  • 전환: -->
  • 시작 상태: [*]
  • 종료 상태: [*]
  • 복합 상태: 중첩된 상태를 포함할 수 있음
  • 선택점: <<choice>>
  • 노트: note left/right of

기본 예제

코드:
mermaid
stateDiagram-v2
    [*] --> 정지
    정지 --> [*]
    정지 --> 이동
    이동 --> 정지
    이동 --> 충돌
    충돌 --> [*]
Ctrl + Enter|

고급 예제

다양한 기능을 보여주는 복잡한 상태 다이어그램:

코드:
mermaid
stateDiagram-v2
    [*] --> 대기
    
    state 대기 {
        [*] --> 준비
        준비 --> 처리중: 시작
        처리중 --> 준비: 완료
    }
    
    대기 --> 활성: 활성화
    
    state 활성 {
        [*] --> 실행중
        실행중 --> 일시정지: 일시정지
        일시정지 --> 실행중: 재개
        실행중 --> 오류: 실패
        오류 --> 실행중: 재시도
    }
    
    활성 --> 대기: 비활성화
    활성 --> [*]: 종료
    
    note right of 활성: 시스템이 완전히 작동 중
    note left of 대기: 시스템이 대기 중
Ctrl + Enter|

복합 상태

코드:
mermaid
stateDiagram-v2
    [*] --> 첫번째상태
    첫번째상태 --> 두번째상태
    
    state 첫번째상태 {
        [*] --> 하위상태1
        하위상태1 --> [*]
    }
    
    state 두번째상태 {
        [*] --> 하위상태2
        하위상태2 --> [*]
    }
Ctrl + Enter|

선택점

코드:
mermaid
stateDiagram-v2
    state 분기상태 <<choice>>
    [*] --> 분기상태
    분기상태 --> 상태1: 조건1
    분기상태 --> 상태2: 조건2
Ctrl + Enter|

병렬 상태

코드:
mermaid
stateDiagram-v2
    [*] --> 활성상태
    
    state 활성상태 {
        state "CPU 실행" as CPU
        state "디스크 I/O" as IO
        --
        state "메모리 접근" as 메모리
    }
Ctrl + Enter|

스타일 설정

외관을 사용자 정의할 수 있습니다:

  • 다양한 화살표 유형
  • 상태 설명
  • 노트
  • 방향(LR 또는 TB)

유용한 팁

  • 시스템의 주요 상태부터 시작
  • 명확하고 간결한 상태 이름 사용
  • 모든 가능한 전환 포함
  • 필요한 경우 전환에 조건 추가
  • 복합 상태를 사용하여 복잡성 관리
  • 중요한 상태 동작을 노트로 기록
  • 상태 다이어그램이 너무 복잡해지지 않도록 주의
  • 하위 상태를 적절히 그룹화

일반적인 문제 해결

  1. 레이아웃 문제

    • 다이어그램 방향 조정
    • 상태 수 줄이기
    • 복합 상태로 관련 상태 구성
  2. 가독성 문제

    • 의미 있는 상태 이름 사용
    • 전환 설명을 간결하게 유지
    • 노트를 적절히 사용하여 설명
  3. 복잡성 관리

    • 복잡한 상태 다이어그램을 여러 개로 분할
    • 복합 상태 사용
    • 교차하는 전환 피하기

다음 단계