State machines
Good for specifying reactive systems, protocols, etc.
Event-driven
- External events (actions in the external environment, such as “button pushed”, “door opened”, “nuclear core above safe temperature”, etc.)
- Internal events (actions defined in the internal system to cause needed actions)
- Can generate external events that may drive actuators in the environment (valves may be opened, alarms may be rung, etc.)
- Transitions can have guards and conditions that control whether or not they are taken
“Flat” (non-hierarchical) state machines tend to explode in size relatively quickly