キッチンから学ぶUMLの勘所
ここまでの振る舞いの検証
ここまでの段階で、食器洗い機の構造と振る舞いが、開発者の意図どおりに作成できているかどうかついて検証したいと思います。「Telelogic Rhapsody」では、Dishwasherクラスと振る舞い(今回の場合、状態マシン図)を描くことで、モデルレベルでのデバックを行うことができます。
具体的に説明すると、最初のページの動画に示すようにevStartイベントを発生させ、状態遷移が意図どおりに動作するかを確認します。また、モデルを動かしながら、洗浄回数などの確認やブレークポイントをかけることにより、指定された動作の状態、ほかの状態との連携などの確認が行えます。
動作結果をシーケンス図に出力
今回は余り触れませんでしたが、動作結果は自動的に図3のシーケンス図に出力されます。シーケンス図を出力することにより、各オブジェクト間のイベント、操作、タイマーのやり取りを見える化することができます。
シーケンス図に表された処理を簡単に説明すると、システムボーダーから「Create()」が呼び出されることがわかると思います。これは、Dishwasherが実態化(インスタンス化)されたことを意味しています。また、evStartイベントが発生した後の処理について、時系列で確認することができます。
ここまでは、食器洗い機を題材に、1つのDishwasherクラスと状態マシン図による振る舞いを定義し、ツール上での検証の方法を簡単に説明しました。次回は、今回作成した食器洗い機のモデルを基に、FrontPanel、Motorのクラスを追加した食器洗い機システムを開発します。組み込みのUMLでよく使われるコンポジット構造図、インターフェースについて解説する予定です。
なお、記事中にてご紹介しているモデル表記、動画などは、テレロジック社のモデル駆動型組み込み開発環境の「Telelogic Rhapsody(ラプソディ)(http://www.telelogic.co.jp/products/rhapsody/index.cfm)」を利用しています。