Visible to the public HFSM homeConflict Detection Enabled

Short Description

The Finite State Machine (FSM) is a design pattern in which actions are determined by events and the current context of the system. The driver code dispatches events to the FSM that forwards it to the current state. Functions processing the events decide what should be the next system state. After that, the process repeats. The Hierarchical FSM is an extension of the FSM concept.

                            Hierarchical Finite State Machine


  • Complete modeling of State Machines following the UML specification including:
    • States with Hierarchy
    • Events
    • Internal Transitions
    • External Transitions
    • Local Transitions
    • Choice Pseudostates
    • Deep History Pseudostates
    • Shallow History Pseudostates
    • Initial States
    • End States
  • Interactive model creation
    • Positions of states are saved
    • Code can be edited directly in the model
    • Simulator automatically updates as model changes
    • Can use multi-select to move groups of states or to edit attributes of multiple objects (e.g. transition events)
    • Can auto-select all transitions by Event
    • Can zoom / pan the model to focus on a specific context
  • In-model interactive simulation of the HFSM
    • Highlighting of execution pathways during event handling
    • Can disable / enable transitions
    • User can select which guards are true when transitions have guards
    • Currently active state tree branch shown including all event actions
    • Simulator informs the user if the model is not well formed
  • In-model collaborative code attribute editing for the HFSM (using the CodeEditor)
  • Model transformation plugin to produce executable C++ code from the HFSM (with more languages coming soon!)
    • Disabled transitions are not generated
    • Model is checked before being generated


HFSM Design Studio
(Important! To view the design studio, you need to be logged in CPS-VO. You can create an account here.)





Contact: William Emfinger