A State Machine is a software engineering formalism which is often used to design software for event-driven systems. These are systems that process information that is generated in real-time, such information often encapsulated as discrete events. Using this method, the behavior of a system is divided into one or more states.
Generally speaking, a particular state of a system is represented by the set consisting of the current values of all it's defining attributes, together with the set of outside events that the system will respond to at a particular point in time. States as visually represented in a MiceOnABeam model, can be used to replace the most significant of these attributes (i.e., variables), making the design intent clearer.
A state in effect represents a static or quiescent point in the system, at which point a new event may be processed and transition the system to a new state. By having multiple states, a particular event can be handled in different ways, depending on which state the system is in when the event is received.
So for example, a tri-light lamp may respond only to the momentary push of a button, i.e., a push_button event, but each time it will respond by moving to a higher light intensity, until when a push_button event is received when at it's maximum intensity, the lamp turns off. This system could be represented by the following state machine.
Please consult the following links for further information on state machines.