본문 바로가기
임베디드 개발/펌웨어

UML State Machine

by eteo 2023. 2. 27.

 

 

State 란?

  • State(상태)는 객체의 생애 주기에서 특정한 단계를 의미한다.
  • State는 애플리케이션 객체의 생애 주기 동안 거치는 다양한 시나리오를 표현한다.
  • State는 둥근 모서리를 가진 사각형으로 표시되며, 내부에 상태의 이름이 작성된다.

 

 

 

 

예시.

 

  • 문(door)은 다음 세 가지 상태 중 하나일 수 있다: "Opened", "Closed", "Locked". 
  • 동시에 "Open", "Close", "Lock", "Unlock"과 같은 이벤트(event)에 반응할 수 있다.

 

 

 

 

 

 

 

UML에서 State의 유형

1. Simple State

2. Composite State

3. Submachine State (Substate)

 

 

 

 

 

예시.

 

  • 다음은 Simple State이다.

 

 

 

  • STATE1은 Composite state이다.
  • STATE1은 하나의 Region을 가지고 있다.
  • STATE1_x는 STATE1의 Substates이다.
  • STATE1은 STATE1_x의 Superstate이라고도 한다.

 

 

 

 

 

  • STATE1, STATE1_2 Composite state이다.
  • STATE1, STATE1_2는 하나의 Region을 가지고 있다.
  • STATE1_x STATE1의 Substates이다.
  • STATE1 STATE1_x의 Superstate라고도 한다.
  • STATE1_2는 STATE1_2_0과 STATE1_2_1의 Superstate이다.
  • STATE1_x는 STATE1의 'Direct' Substate이다.
  • STATE1_2_x는 STATE1의 'Indirect' Substate이다.

 

 

 

 

 

 

State의 구성요소

1. Name compartment

2. Internal activity compartment

3. Internal transition compartment

 

 

 

 

 

Internal activity compartment

  • 구문  : <behavior lable>/<behavior expression>
  • Internal activity label 로 예약된 Keyword들 : entry, exit, do
    • entry : State에 진입할 때 한 번 실행됨
    • exit : State에서 벗어날 때 한 번 실행됨
    • do : State가 유지되는 동안 지속적으로 실행되거나, 특정 연산이 완료될 때까지 실행됨

 

 

 

 

 

 

 

Transition이란?

Transition(전이)은 상태 간의 변화를 의미하며, 다음 세 가지 요소를 가질 수 있다:

 

  • Trigger : Transition을 유발하는 요소. 신호(signal), 이벤트(event), 특정 조건의 변화, 시간의 흐름 등이 될 수 있다
  • Guard :  Transition이 실행되기 위해 참이어야 하는 조건
  • Effect : Transition이 발생할 때 수행될 동작

 

  • 구문 : <trigger>[<guard>]/</behavior expression>

 

 

 

 

 

 

Transition의 유형

1. External transition

2. Local transition

3. Internal transition

 

 

 

 

 

External transition

  • 특정 Trigger가 발생하고, Guard 조건이 만족되면 State가 Transition된다.
  • Transition은 Source State서 Target State로 향하는 화살표로 표현된다.

 

 

 

External transition 예시.

 

Trigger 와 [guard], /<behavior expression> 은 optional 구문으로 생략될 수 있다.

 

 

 

 

 

External transition에서 동작 실행 순서는 다음과 같다:

  • exit action이 가장 내부(innermost) 상태부터 실행됨
  • entry action이 가장 외부(outermost) 상태부터 실행됨

 

 

 

 

 

 

 

 

Internal transition

특정 Trigger와 Guard 조건이 만족되면 이 실행되지만, State를 벗어나거나 다시 진입하지 않는다.

 

 

Internal transition 예시.

 

 

 

 

 

Local transition

  • Local transition은 반드시 Composite State 내에서만 존재할 수 있다.

 

 

Local transition 예시.

 

 

 

 

Self transitions

하나의 State에서 자기 자신으로 돌아오는 전이를 가질 수 있다. 이는 Transition과 함께 특정한 effect를 수행할 때 유용하다.

 

 

 

 

 

 

 

 

State Machine 작성 시 알아둘 것

  • doActivity는 State 진입 후 entry Action이 완료된 후 실행된다.
  • entry, exit, do는 Transition과 직접 연결될 수 없다.
  • 특정 State로의 모든 전이가 동일한 Action을 수행한다면, 공통 Action을 State 내부에서 entry 동작으로 옮기는 것이 좋다.
  • 특정 State에서 나가는 모든 Transition 동일한 Action을 수행한다면, 공통 Action을 exit 동작으로 설정하는 것이 좋다.

 

 

 

Event (Trigger)란?

이벤트(Event)는 State Machine에서 Transition을 유발하는 사건이나 자극이다. 이벤트는 State Transition을 일으킬 수 있다.

 

 

 

 

Event의 구성 요소

1. Signal

2. One or more associated values or parameters (optional)

 

예를 들어, 키패드에서 숫자 키가 눌리는 것을 이벤트로 볼 수 있으며, 여기에 어떤 숫자가 눌렸는지를 구분하기 위해 파라미터를 사용할 수도 있다.

 

 

 

 

 

 

 

Pseudo states 와 종류

1. Initial state

2. Choice state

3. Join state

4. Deep history state

5. Shallow history

 

 

 

 

 

Initial state

  • Region(영역)의 시작 지점을 나타낸다.
  • 외부에서 진입할 때, 가장 먼저 들어갈 상태를 결정한다.
  • Initial state는 하나의 outgoing transition만 가질 수 있다.
  • Initial state의 transition에는 trigger, guard 없이 action만 포함될 수 있다.

 

 

 

 

 

Final state

Final state는 내부에 점이 있는 원으로 표시된다.

 

 

 

 

 

 

 

 

 

Choice state

  • 다이아몬드 모양의 기호로 표시된다.
  • 하나의 incoming transition과 두 개 이상의 outgoing transition을 가질 수 있다.
  • 적어도 하나의 guard가 참이어야 하므로, [ELSE]를 사용하는 것이 권장된다.

 

 

 

 

 

 

 

Junction Pseudo-State

  • 여러 개의 transition을 연결하는 데 사용된다.
  • 하나 이상의 incoming 및 outgoing transition을 가질 수 있으며, 각 transition에 guard를 적용할 수 있다.
  • 동적 조건 분기를 구현하는 Choice state와는 구분된다.

 

 

 

 

 

 

 

Terminate Pseudo-State

  • Terminate pseudo-state에 진입하는 것은 State Machine의 생명 주기가 종료됨을 의미한다.
  • 'X' 기호로 표시된다.

 

 

 

 

History States

  • History State는 중단된 상태를 기억하는 데 사용된다.
  • 예를 들어, 세탁기가 "Washing", "Rinsing", "Spinning"을 거치다가 정전이 발생하면, "Power Off" 상태로 전이된다. 전원이 복구되었을 때, History State를 통해 마지막 중단된 지점에서 다시 실행될 수 있다.

 

 

 

 

 

 

 

Concurrent Regions

  • 하나의 상태는 여러 개의 substate로 나뉠 수 있으며, 이들 substate는 동시에 실행될 수 있다.
  • 예를 들어, "Applying Brakes" 상태에서는 Front Brake와 Rear Brake가 동시에 작동할 수 있다.
  • 동시 실행을 위해 fork와 join의 pseudo-states가 사용된다.

 

 

 

 

 

 

 

 

 

 

출처 : 

FastBit Embedded Brain Academy

https://sparxsystems.com/resources/tutorials/uml2/index.html