State Machines


Overview

The StateMachine package defines a set of concepts that can be used for modeling discrete behavior through finite statetransition systems. In addition to expressing the behavior of a part of the system, state machines can also be used to express the usage protocol of part of a system. These two kinds of state machines are referred here as behavioral state machines and protocol state machines.

Behavioral state machines


State machines can be used to specify behavior of various model elements. For example, they can be used to model the behavior of individual entities (e.g., class instances). The state machine formalism described in this section is an object-based variant of Harel statecharts.

Protocol State machines


Protocol state machines are used to express usage protocols. Protocol state machines express the legal transitions that a classifier can trigger. The state machine notation is a convenient way to define a lifecycle for objects, or an order of the invocation of its operation. Because protocol state machines do not preclude any specific behavioral implementation, and inforces legal usage scenarios of classifiers, interfaces and ports can be associated to this kind of state machines.