State Machine

State Machine이란?

State Machine(또는 유한 State Machine)이란 변경 사항을 제어하는 조건이 충족되면 한 상태에서 다른 상태로 천이하는 이벤트 기반 반응형 시스템의 그래픽 표현입니다. 대부분의 State Machine은 다이어그램을 사용하여 표현되지만, 텍스트로 표현할 수도 있습니다.

State Machine을 구축하려면 세 가지 기본 구성요소가 필요합니다.

  • 상태: 공정을 구분하는 서로 다른 단계, 작업 또는 동작 모드
  • 천이: 서로 다른 상태 간의 이동 방법
  • 동작: State Machine의 실행 전체에서 발생하는 이벤트 또는 변경 사항

Stateflow를 사용해 모델링된 자동 기어 변속 시스템에서 볼 수 있는 State Machine의 기본 구성요소. (예제 보기.)

초기 State Machine은 수학자와 컴퓨터 과학자가 컴퓨팅 시스템을 설명하는 데 사용되었습니다. 이를 통해 복잡한 논리를 보다 관리하기 쉬운 그래픽 표현으로 단순화했습니다. 텍스트 표현과 비교할 때, State Machine의 시각적 특성은 서로 다른 시스템 상태가 어떻게 서로 연관되어 있는지, 어떤 조건에서 천이 또는 동작이 발생하는지를 보다 명확하게 보여줄 수 있습니다. 시간이 지남에 따라 State Machine의 용도는 항공기, 자동차, 로봇, 휴대폰 등 동적 시스템의 복잡한 논리를 모델링하는 것으로 확대되었습니다.

복잡한 논리를 포함하는 동작의 예는 다음과 같습니다.

  • 시스템에 대한 작업 또는 단계의 순서 스케줄링
  • 결함 검출, 고립 및 복구 논리의 정의
  • 서로 다른 동작 모드 간 전환 방법의 감독

State Machine을 사용하면 차량의 자동 기어 변속기를 단순화된 버전으로 표현할 수 있습니다. 아래 예시에는 first, second, third, fourth로 레이블이 지정된 4개의 동작 상태가 나와 있습니다. 이런 동작 상태가 나타내는 기어처럼 State Machine의 상태는 배타적인데, 이는 한 번에 하나의 상태만 활성화된다는 의미입니다. 이 State Machine은 자동차의 속도를 모니터링하고 기어를 구동하기 위한 속도 임계값에 도달하면 기어를 천이합니다.

Stateflow에서 속도 임계값에 도달하면 기어 사이를 천이하는 자동 변속기 시스템의 State Machine. (예제 보기.)

밀리 및 무어 State Machine

State Machine을 설계할 때 고려해야 할 두 가지 일반적인 표준이 있습니다.

  • 밀리: 출력값은 상태와 입력값의 함수이며, 천이에서 출력값을 정의하여 나타냅니다.
  • 무어: 출력값은 상태에만 의존하며, 상태 자체에서 출력값을 정의하여 나타냅니다.
5센트 동전, 10센트 동전 또는 동전 미주입의 입력 상태 및 이에 대응하는 출력값을 보여주는 state machine 다이어그램.

밀리 의미 체계를 사용해 모델링된 자판기의 State Machine은 천이 동안 소다가 배출되었는지를 정의합니다. (Stateflow 예제 보기.)

양방향을 바라보는 신호등의 다섯 가지 상태를 보여주는 state machine 다이어그램.

무어 의미 체계를 사용해 모델링된 신호등의 State Machine은 교통 신호 색깔에 대한 상태 내에서 출력값을 정의합니다. (Stateflow 예제 보기.)

이러한 의미 체계 및 구현 시기에 대해 더 자세히 알아보려면, 밀리 머신과 무어 머신에 대한 개요 항목을 참조하십시오.

State Machine으로 표현하는 Harel의 개념

소프트웨어 컴포넌트의 복잡성이 진화함에 따라 State Machine의 기본 구성 블록도 진화해야 했습니다. 1980년대에 David Harel 박사는 시스템의 더욱 복잡한 디테일을 정확하게 반영하는 데 필요한 추가 기능을 파악했습니다.

  • 계층 구조를 통해 설계를 더욱 구조화하고 구획화할 수 있도록 부모 상태가 도입되었습니다.
  • 병렬 처리 또는 직교성을 통해 단일 다이어그램에 동시에 동작하는 여러 상태를 포함할 수 있습니다.
  • 이벤트 브로드캐스팅을 통해 두 개의 독립된 상태 또는 State Machine 간에 정보를 교환할 수 있습니다.

이러한 기능이 State Machine과 결합된 경우 해당 표현을 Harel 상태 차트라고 합니다.

보안 시스템의 추가된 복잡성을 정의하려면 Harel 상태 차트의 요소가 필요합니다. (예제 보기.)

Stateflow를 사용한 State Machine

Stateflow®는 유한 State Machine을 기반으로 하는 그래픽 프로그래밍 환경입니다. 단순 상태 다이어그램부터 시작해서 동적 시스템의 복잡한 논리를 모델링하는 State Machine을 구축할 수 있습니다. State Machine뿐만 아니라 상태 천이도, 플로우 차트, 상태 천이표, 진리표도 설계할 수 있습니다. 이 접근법은 감독 제어, 작업 스케줄링, 결함 관리, 통신 프로토콜, 사용자 인터페이스 및 하이브리드 시스템을 위한 응용 사례를 개발하는 경우 도움이 될 수 있습니다.

Stateflow의 State Machine을 시뮬레이션하여 다양한 조건에서 어떻게 작동하는지를 평가할 수 있습니다. 예를 들어, 엘리베이터를 모델링하는 State Machine을 시뮬레이션하여 서로 다른 버튼을 눌렀을 경우나 결함이 발생한 경우에 엘리베이터가 어떻게 반응하는지 확인할 수 있습니다. State Machine을 시뮬레이션하면 논리가 예상대로 작동하는지 확인하고, 조건 누락 여부를 평가하고, 다양한 시나리오를 테스트할 수 있습니다.

State Machine을 모델링하는 것에 대해 자세히 알아보려면, Stateflow 및 Simulink®를 살펴보십시오. Stateflow에서 State Machine 만들기를 시작하려면, 유한 State Machine 모델링하기 항목을 참조하십시오.


참조: 제어 논리, 상태 다이어그램, 제어 시스템, 임베디드 시스템, FDIR, 모델 기반 설계, 모델 기반 테스트, PackML, 모델링 및 시뮬레이션, 시뮬레이션 소프트웨어, MBSE (모델 기반 시스템 공학)