IBM Rhapsodyでブロック図を描く

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

#概要
本記事ではRhapsodyを使ってブロック定義図を記述する手順を説明します。

#前回の記事
[IBM Rhapsody評価版（無償）をインストールする](https://qiita.com/daikan_murata/items/c5dc416c3912e36dae84)

#手順
##プロジェクトの作成
Rhapsody 9.0.1 Designer for Systems Engineersを起動してください。
新規にプロジェクトを作成します。
メインメニューから[ファイル]->[新規]を実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/d3536750-835c-5c7d-4225-d887b8fa5c6e.png)
プロジェクト名、フォルダーについては任意に変更してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/18981f45-629d-c945-4fc1-14d29bb28719.png)
プロジェクト・タイプを[Default]から[SysML]に変更し、[OK]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/b0afa5c4-3767-8981-df38-814cd9acdf52.png)
[はい]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/348605c5-b27c-1d3f-92d7-7c81cc9991a5.png)
[はい]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/ea6a73b2-ebc9-cc15-36b9-97e5b8148e4f.png)
プロジェクトが新規に作成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/8b1cc2c4-5c3f-e611-bf2d-662e7cf33cad.png)
##ブロック定義ダイアグラム
BlockModelingパッケージを選択し、右クリックメニューを開きます。
[新規追加]->[Block Definition Diagram]を実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/cce4f423-74fb-9714-b141-a7dafadcc977.png)
名前を System Architecture とし、[OK]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/61bc56d2-3386-c2ac-30cc-91086fd11f3d.png)
Block Modelingパッケージの下にSystem Architectureが作成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/c90d1cf1-69f0-d262-0cd7-1b46a5d902c5.png)
System Architectureダイアグラムの中でクリックし、表示されたブロックを選択します。ダイアグラム内をクリックするとブロック図が生成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/bdc2e75c-0e06-ed46-9b9c-e506ce34d67d.png)
ブロックの名前を Smartwatch に変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/b5e63b12-b743-97be-5f2f-e48f8da20128.png)
同様の手順でTimerとButtonのブロックを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/b7309c09-fdd9-627b-8ed4-4e55afd0fa95.png)
Smartwatchブロックを選択し、左クリックします。表示されたアイコンメニューの中から[有向コンポジション]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/9b311b0b-95ec-37ba-1450-e24076f5329c.png)
SmartwatchブロックからButtonブロックに線を引きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/22b65144-aa80-2401-65a6-497f03daf336.png)
同様にSmartwatchからTimerに有向コンポジションを引きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/3aaffbdc-5341-142e-cf93-65e0a190ccb0.png)
Buttonブロックを選択し、左クリックします。[有向関連]を選択し、Timerブロックに対して線を引きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/86436416-b4e7-d6ec-9442-ed41be9bb7d3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/a52d5d05-d765-c745-39c5-7c2047aa5c4d.png)
##内部ブロック図
続いて内部ブロック図を記述します。Smartwatchブロックを選択し、右クリックメニューを開き、[新規追加]->[新規Internal Block Diagram]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/f7d8d1ca-6e27-c8ec-8a81-0a4a2e48da4c.png)
新規追加されたInternal Block Diagramにカーソルを合わせ、右クリックメニューを開き、[ナビゲート]->[ブラウザー上での位置確認]を実行します。これにより画面左のモデル・ブラウザーにおけるInternal Block Diagramの場所を知ることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/8378b115-0837-7a48-381a-a8ba33e347f2.png)
Internal Block Diagramは、BlockModlingパッケージのBlocksカテゴリの下に定義されていることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/3b6cceb2-3ccb-e324-df22-601f3dfb4167.png)
次にInternal Block Diagramの下にある[パーツ]カテゴリを選択し、Internal Block Diagramの図上に移動させてください。itsButton、itsTimerが生成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/433c7e22-f217-8bc1-b13a-817dd18915f4.png)
itsButtonを選択し、右クリックメニューから[connector]を選択し、itsTimerに線を引きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/0a3af24b-6704-5bd2-2957-81663c72e74a.png)
内部ブロック図が完成しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/4a08f067-6192-cbf5-853c-cb0bbd761564.png)
＃
##インスタンスの生成
次にSmartwatchのインスタンスを生成します。モデル・ブラウザー上でSmartwatchを選択し、右クリックメニューを開き、[オブジェクトの作成]を実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/831878b0-e8bf-2aa7-8cec-ec45fb117588.png)
itsSmartwatchが生成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/03f4830e-776b-74c5-2625-07a5db704d3a.png)
##プロパティの追加
BlockModelingパッケージを選択し、右クリックメニューを開き、[新規追加]->[Tables and Views]->[Block Features Table]を実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/29d2c8ef-bf04-330d-8955-913fcf2caeaa.png)
名前を All Block Featuresに変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/93a9be69-4b66-f28a-cd22-327040f56062.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/25257693-0c6a-434c-3f92-f53a026b5325.png)
All Block Featuresをダブルクリックして開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/1de8a2bb-3d4d-b546-325f-ccf283114a34.png)
Timerの行、2列目のValue Propertiesをクリックし、[新規]を選択します。valueproperty_0が追加されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/8abb51cd-6cf2-6c57-64f0-88e1fe64f0c3.png)
続けて[新規]を選択します。valueproperty_1が追加されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/a1e0b6c7-79df-8e47-76e9-e5859d3f9cd8.png)
モデル・ブラウザー上での位置を確認します。valueproperty_1を選択し、右クリックメニューを開き、[ナビゲート]->[ブラウザー上での位置確認]を実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/80873598-4010-8747-36ec-cbaed69cae85.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/7c161871-0689-2583-cb90-a2e8f4e0702b.png)
モデル・ブラウザー上でvalueproperty_1を選択し、右クリックメニューを開き、[フィーチャー]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/838670e8-e4c9-1fb4-d27e-278215cccef3.png)
[一般]タブで名前欄にvalueproperty_1と表示されています。valueproperty_1をminutesに変更し[OK]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/1a3236c1-a920-4fa6-fe4c-3aea9ee0c353.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/8bffacee-eb35-770f-ccb1-c6fdd7c5cf93.png)
同様にして valueproperty_0をsecondsに変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/b5157b3a-5f75-1819-9e96-629ce63e78f3.png)
次にSystem Architecture ブロック定義図を選択し、Timerブロックの右クリックメニューを開きます。[表示オプション]を実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/7e7072c3-b78a-035d-6eb6-cd0bdc1f2fc8.png)
[コンパートメント]タブに切り替え、表示を[明示]から[すべて]に変更します。[OK]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/5fed80b2-ad52-0ee8-9577-ef5b613c21d2.png)
これにより先ほど追加したseconds、minutesプロパティがブロック図上に表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/91260372-3cf0-512e-8bc5-9c4546cc413f.png)
追加したプロパティ名の表示が途中で切れています。Timerブロックを選択して右クリックメニューを開き、[テキストに合わせて拡大]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/52be5270-8bc6-a6ae-90a2-7f0694298d68.png)
プロパティ名が表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/b6d34e17-7db1-542b-7b7f-39c4e4207f28.png)
##操作の追加
Timerブロックに操作（Operation）を追加します。Timerの右クリックメニューを開き、[新規追加]->[操作]を実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/0c563b22-bb63-03da-591a-378857d3e11c.png)
オペレーション名を incrementTime に変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/5f6b6672-acf3-3efb-67cf-319ae8ac0a2c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/a8b3f44f-e4e4-6ff8-36fc-37742f5c56d8.png)
incrementTimeオペレーションを選択し、右クリックメニューを開き、[フィーチャー]を実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/907734e3-7d24-69ca-15d5-f3035e09d60b.png)
実装タブに切り替えます。01の行にカーソルをあて、Ctrlキーを押しながらスペースキーを押します。
表示されたダイアログの中からsecondsを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/e0655c81-5bd3-b04e-3547-c1a22a7a4697.png)
secondsの後ろにカーソルをあて、++; と入力します。[OK]をクリックし、フィーチャー画面を閉じます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/c118cb54-56e5-c9b3-6388-0a6f875edbbd.png)
メインメニューから[ファイル]->[保存]をおこないます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228422/aeb1140b-815b-3c1f-35f3-18d1bb5db475.png)

以上でブロック定義図は完了です。

#次の記事
[アニメーション実行可能なシーケンス図を描く](https://qiita.com/daikan_murata/items/f583268b8b278a45dc45)