[소프트웨어 분석 및 설계] 7. State Machine Diagram(상태 머신 다이어그램)
State Machine Diagram
: 상태 혹은 상태의 변화에 대한 행위를 나타내는 다이어그램
- 주로 전체 시스템이나 서브 시스템, 객체가 타깃이 될 수 있음.
- 객체 지향 개발에서는 객체가 타깃임.
State
- state: 일정 시간동안 타깃이 차지하는 특정 조건을 나타냄.
- current state: 현재 타깃이 남아있는 state로 단 하나만이 될 수 있음.(한번에 여러 state에 위치 불가능.)
Transition
: 현재 state의 변화. Event에 의해서 발생함.
Transition의 3요소
1) Event
: Transition을 실행하기 위한 트리거.(ex. 속도 증가 버튼 클릭)
2) Guard
: Transition을 실행하기 위한 Boolean 조건(ex. 현재 속도가 최대가 아님(즉, 증가시켜도 됨))
3) Effect
: Transition이 실행되면 일어나는 optional 행위(ex. 속도 5km/h 증가)
State 구성요소
- entry: 해당 state에 들어왔을 때 실행하는 행위
- do: 해당 state에서 실행하는 행위
- exit: 해당 state에서 나갈 때 실행하는 행위
Composite State(합성 State)
: 내부에 substate들이 여럿 있는 State.
Fork & Join
- Fork: 들어오는 Transition을 다수개의 Transition으로 나눔.
- Join: 나가는 Transition들을 merge하여 하나로 합침.
Class Diagram과 State Machine Diagram 간의 일치성
: 클래스 다이어그램에서의 Operation과 SMD의 Event는 동일한 역할을 한다.
SMD 그리는 과정
step 1. SMD로 그리려는 타깃 결정
step 2. 모든 State 결정
step 3. 모든 Event 결정
step 4. 관련된 State간의 Transition에 Event를 작성
step 5. State compartment, guard, effect 작성
step 6. 클래스 다이어그램과 STD 간에 일치하는지 확인