これをうまく使うと,様々なモデル定義(モデルファイル)を効率的に分割して作成・管理でき,また再利用も容易となるため,モデルベースの開発を効率的に行うことが可能となります.
今回はその様なケースにおいて
「すでにPapyrusに登録済のプロファイル内で定義されている他パッケージを使用」するやり方について考えたく思います.
またその具体的な例として,Papyrus Software Designer を導入することで Papyrus で使用可能となる
「MARTE」… Modeling and Analysis of Real-time and Embedded systemsに登録されている各種パッケージを閲覧・使用することを試してみようと思います.
まず画面上の「Model Explorer」上で対象モデルを選択し,マウス右クリックで現れるドロップダウンリストの Import を選択,そこから
Import Registered Packageを選択します.
Import Registered Package |
これにより以下のダイアログ「Libraries to import」が表示されます.
ここに様々な登録済のモデル要素が表示されます.上記の図にも
- JavaLibrary
- JavaPrimitiveTypes
- Pthread (subset)
- Socket (subset)
- SysML-Standard-Library
今回は「MARTE」のパッケージを使用するため,リスト中段くらいにある
MARTE_Libraryを選択します.ダイアログの下段あたりに本パッケージが「CEA LIST」により開発・提供されていることが見て取れます.
パッケージを選択し,その後 [OK] を押すと,下記のようなダイアログが表示されます.
ここで一つのポイントがあるのですが,含まれているモデルを Import する際の挙動(Action)として,ダイアログ下側のボタンにも表示されている通り,
- Load
- Import
- Copy
これらの意味(挙動)の違いは以下となります.
- Load
- 指定したパッケージを単にモデルにロードする.作成中のモデルには何も変更は発生しない.
- Import
- 指定したパッケージをモデルにロードすると共に,モデルから同パッケージに対し PackageImport の関係が設定される(そのため作成中のモデルに変更が発生する)
- UMLのモデル要素の一つである「PackageImport」は,ある名前空間内にImport先のモデル要素を非修飾名で使用可能とします
- Copy
- 指定したパッケージのローカルコピーをモデル内に作成する.Importに似ているが PackageImport の関係を設定せず,対象パッケージに含まれる要素のクローンをモデル内に作成する
- インポート先のモデル修正も随時行っており,その修正内容を適宜反映したい場合は「Import」
- インポート先のモデルの現バージョンをコピーし,それを元に今回のモデルを構築する場合は「Copy」
- その後のインポート先モデルの変更には影響されない
- とりあえずインポート先のモデルを使ってみたい場合は「Load」
先のダイアログに戻ります.
表示されているすべてのモデル(パッケージ)に対して「全て同じ」操作をしたい場合には,ダイアログ上の [… All] のボタンを使用します.
また表示されているモデル中の特定パッケージを使用したい場合には,チェックボックスにチェックをします.その際,Load なのか Import なのか Copy なのかは選択したすべてのパッケージに対して共通であることに注意が必要です.
今回は [Import All] で進めることにします.
[Import All] のボタンをクリックし,その後,[OK] ボタンをクリックします.
これにより Model Explorer 上に対象のモデルパッケージが表示されます.
下記の図では上から3つ目のパッケージ「≪ModelLibrary》 MARTE_Library」です.
≪ModelLibrary》 MARTE_Library |
MARTEの仕様では,その Profile 内で様々なパッケージが定義されており,それらが作成中のモデル内で使用可能であることが見て取れると思います.
Import対象がプロファイルの場合には,一般的には作成中のモデルに Profile を適用し,そこに含まれるステレオタイプを自身のモデルに指定することが多いかと思いますが,そもそもProfile 定義の中身がどうなっているかを確認したいケースではこのモデルのインポートは大変役に立ちます.