IBM Rhapsodyでシミュレーション実行可能なシーケンス図を描く

#IBM Rhapsodyとは
[IBM Rhapsody](https://www.ibm.com/jp-ja/products/uml-tools)は、UML、Systems Modeling Language（SysML）、AUTOSARをサポートするモデル駆動型開発（MDD）環境です。

#概要
本記事ではRhapsodyを使ってシーケンス図を記述する手順を説明します。

#前回の記事
[ブロック図を描く](https://qiita.com/daikan_murata/items/e87e0671bbb76555eb70)

#手順
## シーケンス図の追加
前回の記事でブロック図を定義しました。
次にこれらがどのように連動するかをシーケンス図を使って表現したいと思います。
ScenarioModelingパッケージを選択し、右クリックメニューを開き、[新規追加]->[SequenceDiagram]を実行します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/3e67a7a6-a454-a0d2-8969-357b3f8c4a0a.png)
名前をUser Starts the Stopwatchに変更します。[OK]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/23f7bfb9-cb95-fc8a-6a53-370a4fb5a193.png)
モデル・ブラウザー上でBlockModelingパッケージ内にあるBlocksカテゴリを選択し、シーケンス図上にドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/2d08fd14-c4c3-f855-c8e2-c9cde8a001c8.png)
Button、Smartwatch、Timerのライフラインが生成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/2f537c8d-470c-5334-7999-06dbe578c0b8.png)
Smartwatchライフラインは不要なため、選択しDeleteキーを押下して削除します。
##システム境界線の追加
シーケンス図内をクリックし、ツールバーを表示します。[システム境界線]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/bf55dbdc-1cdc-ea1e-00c9-9550485043af.png)
シーケンス図内をクリックするとシステム境界線が生成されます。システム境界線は、システムの外側からメッセージが送信されることを示すために利用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/4b8a0840-f9bc-d9f9-5211-548b204fdb48.png)
ENVライフラインを選択しツールバーを表示します。右側のイベント・メッセージを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/edabbf24-bdda-05e9-cfb8-95f7183b866d.png)
ENVからButtonに線を引き、イベント・メッセージを生成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/7d9edf0c-0fb1-9043-1199-9654929eb221.png)
イベント名を evPress に変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/b5c4aa22-4910-9e2b-912a-bc9ea1f1bb3c.png)
同様にイベント・メッセージを追加し、evReleaseとします。evPressの下に位置するように設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/e0c58c9b-dfc2-abbe-53b6-020c02cbdeea.png)
同様の手順を続けます。Buttonライフラインを選択し、Timerに向かってイベント・メッセージを生成します。evStartStopと名称変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/ce241efa-0145-395f-12df-bf19baa99e5d.png)
Timerライフラインを選択し、ツールバーを開き、左側のメッセージを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/e74f6215-3977-0cd4-d225-92fab1b9de40.png)
Timerライフラインを選択し、自分自身に線を引くようにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/6a22453a-6ee0-24a9-4e45-ae1b5878a140.png)
message_0を選択した状態で、Ctrl+Spaceを押下します。下矢印キーを押下し、一覧の中からincrementTimeを選択します。incrementTimeは[ブロック図](https://qiita.com/daikan_murata/items/e87e0671bbb76555eb70)において定義した操作（オペレーション）です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/21d62e64-6ab8-ea20-4548-e7b29cae3da3.png)
イベントにincrementTime操作が割り当てられました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/b98b25bc-a1e9-1373-ab5a-0d8aeabae31b.png)
incrementTimeを選択し、右クリックメニューを開き、[ナビゲート]->[ブラウザー上での位置確認]を実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/dcb8848d-3d68-dd07-caa4-5b3f56f80b7c.png)
既存のincrementTime操作にジャンプします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/8d4ece8d-4bbe-1e48-3500-2c4a09be9142.png)
次にButtonからTimerに向かって引かれているevStartStopイベント・メッセージを選択し、Ctrl+Lを押下します。これによりモデル・ブラウザー上で対応するメッセージにジャンプします。incrementTimeメッセージには既存の操作（オペレーション）が割り当てられていたのに対し、evStartStopには既存のイベントや操作が割り当てられていないことがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/71171454-3a65-90c7-1fd3-3edc136d24b2.png)
##イベントの自動生成
シーケンス図内を選択し、右クリックメニューを開き、[すべての要素の自動実現]を実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/6ed8f190-fd85-af4a-d554-b8046ea652c2.png)
対応するイベントや操作が自動生成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/5b041ce8-4772-20f9-9470-d5b7310bbefe.png)
シーケンス図上のevStartStopを選択し、Ctrl+Lを押下するとBlockModelingパッケージ内のevStartStopイベントにジャンプします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/13ce9a5c-9ff1-0b56-79a6-a7a07ca93fc9.png)
メインメニューから[ファイル]->[保存]を実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/210e4da4-f8f6-40cb-15ca-47f5373e3adb.png)
シーケンス図の作成を完了しました。
#次の記事
[シミュレーション実行可能なステートチャートを描く](https://qiita.com/daikan_murata/items/a0cd82c36d17508d02a2)