 |
はじめるUML 第10回 |
2006.12.1 掲載
状態の移り変わりを把握しよう!
今回は、OMGのUML仕様書「UML2.0 Superstructure Specification」の中から、ステートマシン図(第15章State Machines)を取り上げます。 ステートマシン図は、UML1.x ではステートチャート図と呼ばれていました。一つのクラスに着目し、そのオブジェクトの生成から破棄までの状態の移り変わりを明確にします。特にオブジェクトの状態によって、その振る舞いに違いがあるものについて記述すると良いでしょう。 UML2.0では大幅な改善が加えられ、表現力が向上しています。状態について詳しく分析・設計を行なう必要があるシステム、例えば組込みシステムなどでも、さらに本格的に利用することができるようになりました。
具体的には主に次の点が変更されています。
このうち、最も利用する機会が多いと思われる「入場点・退場点の追加」について、例を踏まえて見ていきましょう。
◇例題について 例題は、前回のタイミング図の回で取り上げた「電動シャッター」を制御するオブジェクトです。
- 部外者が開閉操作を行なうことができないように、ロックができる。
- ロックを解除するのは、鍵やパスワード、指紋認証などを使用する。
- 開閉操作中に故障を知らせるセンサーが反応すると稼動を中止する。
- 故障の修理が完了すると、第一に通路を確保するために、全開になる。
◇入場点・退場点の追加 ステートマシン図の要素である「コンポジット状態」は、オブジェクトの状態の入れ子です。電動シャッターはロックを解除しなければシャッターを開けたり、下ろしたりすることができません。このことから、電動シャッターを制御するオブジェクトには、「ロック中」状態や「操作可能」状態などがあり、「操作可能」状態の中には、入れ子の状態として「待機中」や「開放中」などの状態が考えられます。 コンポジット状態と似たものにサブマシン状態があります。コンポジット状態の内容を、別のダイアグラムに記述し、それを参照するためのものです。複雑な入れ子の状態遷移が登場するシステムでは、サブマシン状態を利用して、ステートマシン図を整理することができます。UML2.0ではサブマシン状態の表記が変更されています。 UML1.x のコンポジット状態やサブマシン状態は、他の状態から遷移されるときに、内部のどの状態から途中開始できるのか、また、内部のどの状態から途中退場できるのかを記述することができませんでした。作成したステートマシン図が、後から作成されるステートマシン図から参照される場合に、作成者の意図に反して利用されないという保障がなかったのです。 UML2.0では入場点・退場点をコンポジット状態やサブマシン状態に定義することで、内部状態への入退場を明確にすることができます。電動シャッターの「操作可能」ステートマシン図の通常の遷移は、「認証が完了する」イベントから開始されて「待機中」状態になり、「ロックする」イベントが発生すると終了します。この遷移以外では、「開放中」状態と「下ろし中」状態で「異状が発生する」イベントが発生したときのみ退場することができ、「復帰する」イベントからの遷移は「開放中」状態から開始されることが明確になっています。
◇まとめ ステートマシン図は、ひとつのクラスに着目して、状態の移り変わりを把握するのに適していることを説明しました。ステートマシン図だけではなく、他のダイアグラムと組み合わせて利用することにより、個々のオブジェクトの状態と、複数のオブジェクトによる相互作用を対応付けることができます。UML2.0で新たに追加されたタイミング図や機能強化された相互作用図によって、これをより一層明確に表現できるでしょう。
次回は、これまでの内容を生かして「OCUPにチャレンジしよう!」をお送りします。
■筆者紹介 照井 康真/Koma Terui 株式会社テクノロジックアート テクニカルデプト システムコンサルタント
パターンウィーバー(PatternWeaver) ver2.0
-
UML2.0 Superstructureの全てのダイアグラムに対応
-
Eclipse3.0にプラグインとして統合
-
表現力の大幅な向上
-
新規プラグインの追加
●商品に関するお問い合わせ 株式会社テクノロジックアート e-mail : pw@tech-arts.co.jp http://pw.tech-arts.co.jp/pw/index.html
|