Translate

2020/06/14

UML+SysML としての使い方(2)


前回の記事「UML+SysML としての使い方(1)」の続きです。

前回は UML 上で、UML のモデル要素である Actor へ SysML の Stakeholder ステレオタイプを適用する例を説明しました。

そのやり方ですが、お気づきかとは思いますが、
「Stakeholderステレオタイプが Actor に適用可能であることを知っている」
ことが前提となります。この例ではUML定義およびSysML定義上での、

  • Stakeholder は Classifier を拡張している
  • Actor の親クラスは BehavioredClassifier で、その親クラスが Classifier である

に基づきステレオタイプ適用可能の判断で進めています。

Actorの場合はダイアグラム上の見た目から判断して、実際 Stakeholder ステレオタイプが適用できることから特に疑問もなく作業を進められるかもしれません。

要素によってはステレオタイプが適用できるUML要素が何かを探し回る形となるやもしれません。

例えば、
SysML の Satisfy を適用出来るエッジは Dependency ではなく Abstraction である
等は少し混乱が出るかなと思います。

今回の記事では、そのような事前知識を持たなくても、UML上で SysML のモデル要素を使うための方法を説明します。

Papyrusでは、ModelExplorer 上の最上位のモデルに SysML プロファイルを適用すると、ModelExplorer 上で SysML のモデル要素を直接作成可能なメニューが表示されるようになります。このメニューを使うのが、手っ取り早いです。

以下で 「要求と、その要求を満足するブロック」 を 「UMLのクラス図」 上で作成する方法と例として説明します。

今 ModelExplorer 上で、パッケージ「Requirements」がモデル直下にあり、そこに Requirement という名前のクラス図があるとします。

この Requirements パッケージ下に SysML の Requirement モデルを作成します。

ModelExplorer 上のパッケージ Requirements を選択し、マウス右クリックから
SysML 1.6 Child > Requirement
を選択します。



これで Requirements パッケージ下に SysML の Requirement のモデルが作成されます。

続いて、同じく Requirements パッケージ下に SysML の Block モデルを作成します。

操作としては同様に、
SysML 1.6 Child > Block
を選択します。


このようにして ModelExplorer 上で作成された Requirement と Block のモデルをマウスで選択し、クラス図 Requirement 上に Drag & Drop すると、両モデルが描画されます。



ちなみに Requirement ステレオタイプのプロパティの表示方法は
  • In Braces
  • In Comment
  • In Compartment

の3種類があります。

前の記事の Stakeholder では「In Comment」を選びましたが、クラス系のステレオタイプでは、この3種類から所望する表示を選択可能です。

この3種類の見え方の違いを以下に示します。

選択・切り替え操作は Stakeholder の時と同様に、
Properties > Appearance
から行います。

In Braces を選択した場合

In Comment を選択した場合

In Compartment を選択した場合
よく使うのは「In Compartment」か「In Comment」です。「In Braces」は、あまり使うことがないです。

次に、作成した Block が Requirement の Satisfy となる関係をモデル化しようと思います。

このような2つの要素間の関係を ModelExplorer 上で作成するためには、その「From」「To」の「From」となるモデル側を選択して行います。

今回では「Block」を選択し、マウス右クリックで
SysML 1.6 Relationship > Satisfy
を選択します。


すると「To」を選択するための
Target Element Selection
というタイトルのダイアログが表示されます。

ここでターゲットとなる Requirement を選択します。


これで、Block から Requirement に対する Satisfy モデルが ModelExplorer 上で生成されます。


この Satisfy を ModelExplorer 上からクラス図上に Drag & Drop することで、無事、所望の関係がダイアグラム上で表示されます。


Requirement ステレオタイプの Properties > Profile や、クラス図上の描画を見ると、無事に
satisfiedBy プロパティ
Block (今回の例では名称がBlock2)
が設定されていることが分かります。


他のSysMLプロファイルではメニューが追加表示されるため、 UML 上で SysML のブロック要素を直接メニュー操作から作成し、ダイアグラム上で描画することが可能となります。

残念ながら、SysMLの各種ダイアグラムは扱えないのですが、UMLベースで一部SysML要素を使いたい場合には、このやり方が楽だと考えています。