LoginSignup
1
1

More than 1 year has passed since last update.

IBM Rhapsodyでシミュレーションを実行する

Last updated at Posted at 2021-01-07

IBM Rhapsodyとは

IBM Rhapsodyは、OMG Systems Modeling Language™ (OMG SysML) を使用して、迅速な要件分析とモデルベースの設計を可能にします。モデルは、実行およびシミュレーションによって検証することができ、システムエンジニアチームが複雑な機能を短時間で設計するのに役立ちます。

目次

ユーザーインターフェースの追加
アニメーションの実行
アニメーション実行結果
アニメーション終了
アニメーション動作の解説

概要

いよいよ、Rhapsodyの最大の強みであるアニメーション(シミュレーション)の実行についてご紹介します。
Presentation1.gif

前回の記事

ステートチャートを描く

手順

1. ユーザーインターフェースの追加

アニメーションの実行を開始し、結果を表示するユーザーインターフェースを作ります。
前回の記事で作成したTimerのステートチャートを選択し、メインメニューから[編集]->[新規追加]->[制御]->[プッシュボタン]を実行し、ステートチャートの図(灰色)をクリックします。
image.png
ボタンが追加されます。
image.png
ボタンにイベントを割り当てます。ボタンを右クリックしてメニューを表示し、[フィーチャー]を選択します。
image.png
[要素のバインド]タブにおいて、BlockModelingパッケージを展開し、itsButtonの下のevPressを選択します。[OK]をクリックします。
image.png
Pushボタンを選択し右クリックメニューを表示し、表示オプションを実行します。
image.png
[バインド要素]を選択し、[OK]をクリックします。
image.png
image.png
Pushボタンをコピーします。Pushボタンを選択して右クリックメニューを表示し、[コピー]を実行します。
image.png
ダイアグラムの背景(灰色)を選択して右クリックメニューを表示し、[貼り付け]を実行します。
image.png
貼り付けたボタンを選択し、先ほどと同じ手順でevReleaseを割り当てます。[OK]をクリックします。
image.png
evPressとevReleaseに対応するボタンの作成を完了しました。
image.png
続いて処理結果を表示する画面を追加します。ステートチャートの図を選択し、メインメニューから[編集]->[新規追加]->[制御]->[デジタル表示]を実行します。
image.png
ステートチャートの図をクリックするとデジタル表示が追加されます。
image.png
デジタル表示に値プロパティーを割り当てます。デジタル表示を選択して右クリックメニューを表示し、フィーチャーを実行します。
image.png
secondsを選択し、[OK]をクリックします。
image.png
デジタル表示を選択し、右クリックメニューを開き、表示オプションを実行します。
image.png
[バインド要素]を選択し、[OK]をクリックします。
image.png
ユーザーインターフェースの作成を完了しました。
image.png

2 アニメーションの実行

シーケンス図やステートチャートで定義した内容が期待通りに動作するか実行します。
User Starts the Stopwatchシーケンス図を選択します。
image.png
パースペクティブを[Getting-Started]から[Model-Execution]に切り替えます。
image.png
メインメニューにおいて[シミュレーション]->[フルビルド]を実行します。
image.png
[はい]を実行します。
image.png
ビルド完了までしばらくお待ちください。ビルドに成功すると以下のコンソールウィンドウが起動します。最小化します。
image.png
シミュレーション対応のシーケンス図が起動します。
image.png
メインメニューの近く(リボンメニュー)にシミュレーションの実行を制御するボタン群が表示されます。
左から二番目の開始ボタンを実行し、アニメーションを開始しましょう。
image.png
Create操作の自動実行により、ButtonとTimerのインスタンスが生成されます。
image.png
Timerインスタンスをクリックし、右クリックメニューを表示し、[シミュレートされたステートチャートを開く]を実行します。
image.png
前回の記事で作成したTimerのステートチャートが表示されます。現在の状態は紫色の枠で表示されます。
image.png
再びシミュレーション対応のシーケンス図を開き、Buttonインスタンスを選択し、右クリックメニューから[シミュレートされたステートチャートを開く]を実行します。
image.png
現在はButtonUpの状態にいることがわかります。
image.png
Timerステートチャートに戻り、evPressに対応したボタンを実行します。
image.png
Buttonステートチャートを確認すると、ButtonDownに状態が遷移します。
image.png
シミュレーション対応のシーケンス図に戻ります。evPressイベントが発行されたことにより、シーケンス図上でButtonDownの状態になったことが示されています。
image.png
再びTimerステートチャートに戻ります。evReleaseボタンを実行します。1秒毎にデジタル表示が更新されます。

アニメーション実行結果

以上でアニメーションは終了です。設計通りに動作することを確認できました。
Presentation1.gif

4. アニメーション終了

シミュレーションを一時停止します。左から6番目(黄色アイコン)を実行します。
image.png
左から8番目(赤色アイコン)を実行し、終了します。
image.png
[はい]を実行します。
image.png
メインメニューから[ファイル]->[保存]を実行します。
シミュレーション対応のシーケンス図は今回は保存しないことにします。[いいえ]を実行します。
image.png

アニメーション動作の解説

アニメーションの動きを振り返ってみましょう。

インスタンスの生成

アニメーションを開始すると、シーケンス図の定義に従い、ButtonインスタンスとTimerインスタンスが生成されました。
image.png
各ステートチャートで定義したデフォルト遷移に従い、ButtonUpとNotTimingとなりました。
image.png
image.png

システム境界からevPressイベントの発行

Timerステートチャートに定義された左側のPushボタンをクリックすることにより、evPressイベントが発行されました。Pushボタンがシーケンス図におけるENV(システム境界)に相当します。
image.png
image.png

イベント受信と状態遷移

ButtonインスタンスがevPressイベントを受信します。Buttonステートチャートの定義に従い、evPressイベントをトリガーとしてButtonUpからButtonDownに状態遷移しました。
image.png

システム境界からevReleaseイベントの発行

次にTimerステートチャートに定義された右側のPushボタンをクリックすることにより、evReleaseイベントが発行されました。このPushボタンもシーケンス図におけるENV(システム境界)に相当します。
image.png
image.png

イベント受信後の送信アクション

ButtonDown状態にあるButtonインスタンスがevReleaseを受信します。それをトリガーとしてイベントを送信します。
image.png
evStartStop to itsTimer送信アクションは、Timerインスタンスに対してevStartStopイベントを送信します。
image.png

incrementTime操作の呼び出し

evStartStopイベントを受信したTimerインスタンスは、ステートチャートの定義に従い、NotTiming状態からTiming状態に遷移し、1000ミリ秒毎に incrementTime()操作を呼び出しました。
image.png
incrementTime操作では、secondsプロパティをカウントアップします。その結果がTimerステートチャートのデジタル表示に出力されました。
image.png
シーケンス図やステートチャートをアニメーションで動作確認することにより、設計の妥当性を早期に検証し、設計開発の効率に寄与することができます。

以上で終了です。お疲れ様でした。

IBM Rhapsodyのライセンス体系や価格

シリーズの最初の記事

IBM Rhapsody評価版(無償)をダウンロードする

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1