#IBM Rhapsodyとは
IBM Rhapsodyは、OMG Systems Modeling Language™ (OMG SysML) を使用して、迅速な要件分析とモデルベースの設計を可能にします。モデルは、実行およびシミュレーションによって検証することができ、システムエンジニアチームが複雑な機能を短時間で設計するのに役立ちます。
#目次
ユーザーインターフェースの追加
アニメーションの実行
アニメーション実行結果
アニメーション終了
アニメーション動作の解説
#概要
いよいよ、Rhapsodyの最大の強みであるアニメーション(シミュレーション)の実行についてご紹介します。
#前回の記事
ステートチャートを描く
#手順
#1. ユーザーインターフェースの追加
アニメーションの実行を開始し、結果を表示するユーザーインターフェースを作ります。
前回の記事で作成したTimerのステートチャートを選択し、メインメニューから[編集]->[新規追加]->[制御]->[プッシュボタン]を実行し、ステートチャートの図(灰色)をクリックします。
ボタンが追加されます。
ボタンにイベントを割り当てます。ボタンを右クリックしてメニューを表示し、[フィーチャー]を選択します。
[要素のバインド]タブにおいて、BlockModelingパッケージを展開し、itsButtonの下のevPressを選択します。[OK]をクリックします。
Pushボタンを選択し右クリックメニューを表示し、表示オプションを実行します。
[バインド要素]を選択し、[OK]をクリックします。
Pushボタンをコピーします。Pushボタンを選択して右クリックメニューを表示し、[コピー]を実行します。
ダイアグラムの背景(灰色)を選択して右クリックメニューを表示し、[貼り付け]を実行します。
貼り付けたボタンを選択し、先ほどと同じ手順でevReleaseを割り当てます。[OK]をクリックします。
evPressとevReleaseに対応するボタンの作成を完了しました。
続いて処理結果を表示する画面を追加します。ステートチャートの図を選択し、メインメニューから[編集]->[新規追加]->[制御]->[デジタル表示]を実行します。
ステートチャートの図をクリックするとデジタル表示が追加されます。
デジタル表示に値プロパティーを割り当てます。デジタル表示を選択して右クリックメニューを表示し、フィーチャーを実行します。
secondsを選択し、[OK]をクリックします。
デジタル表示を選択し、右クリックメニューを開き、表示オプションを実行します。
[バインド要素]を選択し、[OK]をクリックします。
ユーザーインターフェースの作成を完了しました。
##2 アニメーションの実行
シーケンス図やステートチャートで定義した内容が期待通りに動作するか実行します。
User Starts the Stopwatchシーケンス図を選択します。
パースペクティブを[Getting-Started]から[Model-Execution]に切り替えます。
メインメニューにおいて[シミュレーション]->[フルビルド]を実行します。
[はい]を実行します。
ビルド完了までしばらくお待ちください。ビルドに成功すると以下のコンソールウィンドウが起動します。最小化します。
シミュレーション対応のシーケンス図が起動します。
メインメニューの近く(リボンメニュー)にシミュレーションの実行を制御するボタン群が表示されます。
左から二番目の開始ボタンを実行し、アニメーションを開始しましょう。
Create操作の自動実行により、ButtonとTimerのインスタンスが生成されます。
Timerインスタンスをクリックし、右クリックメニューを表示し、[シミュレートされたステートチャートを開く]を実行します。
前回の記事で作成したTimerのステートチャートが表示されます。現在の状態は紫色の枠で表示されます。
再びシミュレーション対応のシーケンス図を開き、Buttonインスタンスを選択し、右クリックメニューから[シミュレートされたステートチャートを開く]を実行します。
現在はButtonUpの状態にいることがわかります。
Timerステートチャートに戻り、evPressに対応したボタンを実行します。
Buttonステートチャートを確認すると、ButtonDownに状態が遷移します。
シミュレーション対応のシーケンス図に戻ります。evPressイベントが発行されたことにより、シーケンス図上でButtonDownの状態になったことが示されています。
再びTimerステートチャートに戻ります。evReleaseボタンを実行します。1秒毎にデジタル表示が更新されます。
アニメーション実行結果
以上でアニメーションは終了です。設計通りに動作することを確認できました。
#4. アニメーション終了
シミュレーションを一時停止します。左から6番目(黄色アイコン)を実行します。
左から8番目(赤色アイコン)を実行し、終了します。
[はい]を実行します。
メインメニューから[ファイル]->[保存]を実行します。
シミュレーション対応のシーケンス図は今回は保存しないことにします。[いいえ]を実行します。
アニメーション動作の解説
アニメーションの動きを振り返ってみましょう。
###インスタンスの生成
アニメーションを開始すると、シーケンス図の定義に従い、ButtonインスタンスとTimerインスタンスが生成されました。
各ステートチャートで定義したデフォルト遷移に従い、ButtonUpとNotTimingとなりました。
###システム境界からevPressイベントの発行
Timerステートチャートに定義された左側のPushボタンをクリックすることにより、evPressイベントが発行されました。Pushボタンがシーケンス図におけるENV(システム境界)に相当します。
###イベント受信と状態遷移
ButtonインスタンスがevPressイベントを受信します。Buttonステートチャートの定義に従い、evPressイベントをトリガーとしてButtonUpからButtonDownに状態遷移しました。
###システム境界からevReleaseイベントの発行
次にTimerステートチャートに定義された右側のPushボタンをクリックすることにより、evReleaseイベントが発行されました。このPushボタンもシーケンス図におけるENV(システム境界)に相当します。
###イベント受信後の送信アクション
ButtonDown状態にあるButtonインスタンスがevReleaseを受信します。それをトリガーとしてイベントを送信します。
evStartStop to itsTimer送信アクションは、Timerインスタンスに対してevStartStopイベントを送信します。
###incrementTime操作の呼び出し
evStartStopイベントを受信したTimerインスタンスは、ステートチャートの定義に従い、NotTiming状態からTiming状態に遷移し、1000ミリ秒毎に incrementTime()操作を呼び出しました。
incrementTime操作では、secondsプロパティをカウントアップします。その結果がTimerステートチャートのデジタル表示に出力されました。
シーケンス図やステートチャートをアニメーションで動作確認することにより、設計の妥当性を早期に検証し、設計開発の効率に寄与することができます。
以上で終了です。お疲れ様でした。
#シリーズの最初の記事
IBM Rhapsody評価版(無償)をダウンロードする