状態マシンを作成すると、 重大な振る舞いを持つクラスとシステムを記述することができます。 すべてのオブジェクトが、状態マシンを必要とするわけではありません。 オブジェクトの振る舞いが基本的なものである場合、 つまり単純にデータを保管して取り出すようなものである場合は、 オブジェクトの振る舞いは重要ではなく、 状態マシンに関心が持たれることはまずありません。 状態マシンには、 さまざまな階層状態レベルを表す、ネストされた状態を含めることもできます。 ネストされた状態を使用すると、 オブジェクトの複雑な状態変更を検査することができます。
状態マシンにダイアグラムを追加することで、 オブジェクトのさまざまな振る舞いのパースペクティブを 記述することができます。 各ダイアグラムは、別々のウィンドウとして開きますが、 すべてのダイアグラムに同じモデル要素が表示されます。 状態マシン内のダイアグラムは、デフォルトで同期化されています。 「プロジェクト・エクスプローラー」 ビュー内の領域に加えられた変更は、 同じ状態マシンのその他のダイアグラムに反映されます。 ダイアグラム内の領域に加えられた変更は、 「プロジェクト・エクスプローラー」 ビューに反映されます。 領域の編集設定を変更して、 領域の正規プロパティーの値を false にすることで、 「プロジェクト・エクスプローラー」ビュー内の 領域に加えられた変更が、対応する状態マシン図に反映されないようにしたり、 同じ状態マシン内の他のダイアグラムとは関係なく、 領域を編集できるようにしたりすることが可能です。
状態マシンは、リアルタイム・システムまたは イベント・ドリブン・システムを開発するために有効な、 モデリング援助機能です。 なぜならば、状態マシンは、動的な振る舞いを表示するからです。 ソフトウェア・プロジェクトのすべてのフェーズにおいて、 あるいはビジネス・モデリング用に、 状態マシンを開発することが可能です。 以下のような状態において、状態マシンを使用することができます。
状態マシンを使用すると、 イベント・ドリブンの振る舞いをモデル化することができます。 時間、シグナル、または操作のようなイベントによって、 オブジェクトの状態を変更させることができます。 あるイベントに持続時間を持たせず、 別のイベントに先行させたり、 後続させたりすることが可能です。 イベント・ドリブンの振る舞いをモデル化する状態は、 イベントが到着するまで、同じ状態で継続されます。 状態がイベントに応答すると、 次のイベントを受け取る準備のできた安定状態のプロセスに戻ります。