Translate

ラベル UML の投稿を表示しています。 すべての投稿を表示
ラベル UML の投稿を表示しています。 すべての投稿を表示

2020/07/10

モデルの画像によるデコレーション

Tipsです。

Papyrus/UMLで特定ドメインのモデル化を行っている際に、そのモデル化対象を端的に示す「シンボルマーク」をUMLのモデル要素にデコレーションして、ダイアログ上で表示したい場合があります。

通常のPapyrus(実際にはEclipseのEMF/UML2だと思いますが)の「モデルアイコン」は表示/非表示の指定は可能ですが、そのような一般的なアイコンではなく、ユーザ独自のマークです。

例えば、このような表示です(クラス図上でのクラス表記)。

 

Papyrusでは、そのデコレーション手段がサポートされています。

まず最初に PapyrusInternal というプロファイルをモデルに適用します。通常のプロファイル適用操作(Apply registered profile)により表示されるダイアログ上で「Papyrus Internal」と表示されているプロファイルとなります。


このプロファイルですね。

説明にも
Profile that provides annotations for the tool itself (Decorations, etc.)
と記載されています。

このプロファイルを適用すると、例えばクラス図上で作成したクラスに対して、以下の様な
「TypeSymbolDefinition」
というステレオタイプが適用可能となります。


このステレオタイプを適用した直後は以下のような表示となります。


基本的には、この「symbolPath」にシンボルマークの画像ファイルを指定することで、デコレーション表示が可能となります。

どのようにファイルを指定するか、またどのようなパス名で指定するかですが、一番楽なのが、一旦同ダイアログを非表示として、再度表示すれば、プロパティの所に
Symbol
という選択肢が現れますので、そこから指定するのが楽です。
以下がダイアグラムの再表示を行った後のプロパティのメニューですが、左側の「Comments」と「Profile」の間に「Symbol」が現れてるのが分かります。


この「Symbol」を選択すると、
[Browse] または [Browse workspace]
としてファイルが選択可能であることが分かります。


前者がファイルシステムから、後者が Papyrus (Eclipse) で開いているワークスペースから、となります。

とりあえず同じプロジェクト下のフォルダに画像ファイルが置いてあるとして、それを指定してみます。



[Browse workspace] からワークスペース内のファイルを指定すると
platform:/resource/...
というファイル指定方法となります。

で、はい、これだけでは何も表示は変わりません笑。

その後、表示の細かな指定を行います。

「Properties」の「Appearance」を開き、「Shape Decoration」と書かれた所までスクロールします。


ここ(Shape Decoration)の

  • Visible を true に
  • Position で表示位置を選択

すると、モデル上の指定位置にアイコン表示がなされます。


このような感じになります。

 ≪TypeSymbolDefinition≫ というステレオタイプ名表示が重なって見づらい場合には、同じくAppearance の少し下にある「Stereotype display」の「 Visible 」のチェックをはずします。


これで見やすくなりました。

これが一つの例ですが、このような奥ゆかしい表示ではなく、例えばコンテキスト図を作成し、そこに大きくシンボルマークとして表示したいケースもあるかと思います。

その場合は「Appearance」ではなく、対象のモデルをマウスで選択しマウス右クリックで表示される
「Filters」メニュー
から操作する表示方法があります(以下の説明では一旦「Shape Decoration」の「Visible」を「false」に戻しています)。


「Show/Hide Compartments」で「Symbol」を選択します。


すると、以下の表示に変わります。


うまく使い分けると各ダイアグラムでより分かりやすいモデル図が作成できると思います。

なお画像のファイル形式として svg と png は表示できることを確認しています。他はまだ試していません。

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要素を使いたい場合には、このやり方が楽だと考えています。

2020/06/11

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

前回の記事「SysML 1.6 でのモデリング」ではSysMLプロジェクトを作成する方法を簡単に説明しましたが、SysMLプロジェクト単独では「UML + SysMLとなるモデル化を行いたい」という場合には(多分)うまく扱えないと思います。

「UML + SysMLとなるモデル化」とは、UMLとSysMLの関係を示す下記のFigure 4-1 (SysML仕様書から抜粋)において、両集合の和となるようなUMLとSysMLの要素をシームレスに扱いたいという場合です。


Figure 4-1: Overview of SysML/UML Interrelationship
前のやり方ではSysMLプロジェクトとして作成されるためUMLのダイアグラムを扱うことが出来ず、関連するUMLモデルを別モデルファイルとして作成し、そのモデルをImportすることで関連付けを行い、UMLモデル側でダイアグラムを扱うならばUMLとして扱えます。
また逆に、システムエンジニアリング→ソフトウェアエンジニアリングとして進める場合で考えるとUMLモデル側にSysMLモデルをImportして使うとして同様に進めれば「UML+SysML」は扱えます。
ただ、別モデルファイルであるため扱いづらいですし、Papyrus上でモデル切り替えを行う際に操作系としてのタイムラグが発生するので切り替え頻度が高い場合はフラストレーションもたまります。

なお、自分が「UML+SysML」として扱いたいケースは、

  • SysMLでシステム設計を行った後の設計対象がソフトウェアであるため、その先の関係者が扱う「通常のUML」にシームレスに繋げて、UMLとして機能内容等をブレークダウンしていきたい。
  • (同じく主体がソフトウェアであるため)UMLを主として、そこにSysMLの「Stakeholder、View、Viewpoint」や「Requirement」のみを上位側の概念として使いたい。

です。特に後者の方が多いです。

昔のPapyrusでは、「UML+SysML」としての混在が楽だったのですが、現在の「Architecture Context」を明示的に指定する方法(最初にモデルを作る時に Software Engineering か System Engineering かを選択)になってからは対応しづらくなりました。

もちろん、現在の方が利点も多いですし、そもそも別れている世界だと考えると問題はありませんし、SysML側で再定義されたモデル要素をUML/SysMLのどちらの意味で扱うのか等の問題も存在していますが、それでも「UML+SysML」として使いたいケースも多いです。

今回はそのやり方について紹介したいと思います。

なお今回のやり方は「UMLをベースとしてモデルやダイアグラムを扱い、そこに一部のSysML要素を使いたい」の例となります。


まず、UMLのプロジェクト/モデルを作成します。

作成したモデルの最上位を Model Explorer 上で選択し、PropertiesタブのProfileを開きます。


このProfileパネルの右上にある「Apply registered profile」と表示されるボタンである

をクリックします。

すると「Apply profiles from Papyrus repository」となるダイアログが上がってくるので、そこで
SysML 1.6
を選択して[OK]を押します。


すると
Choose profile(s) to apply
というダイアログが上がってきます。ここで任意のプロファイルを選択します。自分は全てを選択して使っています。


これでUMLモデル上で SysML プロファイルを扱うことが出来るようになりました。


それではUMLモデル上でSysMLの「Stakeholder」を使用してみたいと思います。

まず「Actor」を作成します。

Actorを直接的に扱えるダイアグラムは「UseCase」のためユースケース図で作成してみます。

自分は ModelExplorer 上で直接モデルを作成することが多いですが、Actorの線画アイコンがそのまま表示されるユースケース図を使って進めようと思います。


通常のモデル作成操作(NodesからActorを選択して作成)を行います。

これで名前が「StakeholderA」となるUMLのActorが作成されました。

ここでActorのProfileパネルを開きます(Propertiesタブ→Profile)。


Applied stereotypesで前と同じく [+] ボタンをクリックします。


左側の「Applicable Stereotypes」上に
Stakeholder
が現れるので、ダイアログ中央の[⇒]ボタンを使って、右側に移動します。


これで[OK]を押すと、Actorに「SysMLのStakeholderステレオタイプ」が適用され、ユースケース図上ではステレオタイプ名となる <<Stakeholder>> が適用されます。

また Profileパネルの Applied stereotypes の所で、Stakeholder ステレオタイプが持つプロパティである
concern
のプロパティが扱えるようになったことが分かります。


「Stakeholder」を作成したので「関心事」(concern)を規定して行きたいと思います。

上記図から見て取れる様に「concernList」としてCommentを複数登録可能です。

concernListをマウスで選択し、ここでも同じく右上の[+]ボタンをクリックします。

するとconcernListに関するダイアログが表示されます。


既にCommentとして作成されている concern があれば、それを左側で選択し右側に[⇒]で移動すれば選択出来ますが、まだ存在(作成)していない場合には、ダイアログ右端中央にある[+]ボタンをクリックします。

すると「Create a new Comment」というダイアログが上がってきます。


まず、Comment要素を保持する Container を指定する所から始めます。

Container: の所にある […] ボタンをクリックします。

すると作成するCommentを持つモデル要素を選択出来るので、適切なコンテナを指定します。

ここでは作成した「StakeholderA」をコンテナとして指定して進めます。


[OK]ボタンを押すと以下のダイアログの様に選択されるので [OK] ボタンを押します。


この後、通常の Comment 作成用のダイアログが上がってくるのですが、そこでの入力操作については割愛します(キャプチャし忘れました…)。

今回は、そのコメント内容(body)を
「継続してサービスが提供出来る仕組みか」
として作成しました(内容は雰囲気で適当に書きました)。


これでOKを押します。

これにより基本的には

  • Stakeholderステレオタイプが作成され、
  • そのStakeholderの関心事がモデルとして規定された

となるのですが、残念ながらダイアグラム上での見た目は変わりません。



ダイアグラム上で表示として見せるためには、もう少しだけ手間が必要です。

StakeholderAのPropertiesタブのAppearanceパネルを開きます。


その中央ぐらいにある
Stereotype display
の表で諸々の指定を行うことで表示をコントロールできます。

この表のStakeholder行とIn Comment列が交差するセルのチェックボックをチェックすると、


と無事に関心事がStakeholderにリンクされたコメントとして表示されました。

このモデルはUMLベースであるため、画面のダイアグラム操作系からも見て取れるように、他の関係するモデルとして通常のUMLが扱えます。

このようにしてUML上でSysML要素を扱うことが可能です。

なお、幾つか追加で説明しておきたい話や注意点がありますので、それについては次の記事に書こうかと思います。

2020/06/10

SysML 1.6 でのモデリング

最近、ブログを訪れる方で SysML に関するページを見られている方が増えています。

検索サイトから来訪される方でも SysML をキーワードとして検索され、このブログにたどり着かれている方も多い様に思えます。

前に書いた記事「SysML 1.6 プロファイルのリリース」ではSysML 1.6 Profile の簡単な紹介をしていますが、SysMLで実際にモデルを書いてみたいという方に対して少し丁寧にご紹介したいと思います。特に Papyrus RCP 版を使用されておられる方だと
「どうやって SysML Profile を導入するの?」
という所から困る方もおられるかもしれません。過去の記事には色々と書いていますが、SysML 1.6 でのモデリングという観点でこの記事でまとめてみます。

SysML Profile の導入がわからない方

Papyrus RCP 版を使っておられる方からすると、そもそも SysML のプロファイルを導入する所から不明なことがあるかもしれません。

導入の仕方は幾つかあるのですが、今後も含め様々なプラグイン導入による利便性を向上させる手段として、
Marketplace
から導入する方法をご紹介したいと思います。

Marketplace とは、有償・無償を含めて Eclipse Project 下で直接開発しているプラグイン以外のプラグインをEclipseに導入可能とするプラグインです。Marketplace プラグインを導入すると「Help」からのドロップダウン上に
Eclipse Marketplace...
というメニューアイテムが現れます。


Papyrus RCP 版の初期状態では Eclipse Marketplace はメニュー上に存在しません。この Marketplace を導入するためには、まず、上記ドロップダウン上にある
Install New Software...
から始めます。

Install New Software を選択すると、
Install
という名前のダイアログが上がってくるので、そこで

  • Work with: で 2020-03 - http://download.eclipse.org/staging/2020-03/ を選択
  • type filter text と書かれている所に Market とでも入力

すると、以下の様に
Marketplace Client
が選択されるので、それをチェックし、Next> で進みインストールを行います。


その後、再起動が促され、再起動後にHelp メニューから Marketplace が選択可能となります。

Eclipse Marketplace からの SysML プロファイルの導入

Marketplace を開くと各種プラグインを検索出来るダイアログが上がってくるので、ここで
Find
の所に
papyrus

と入力し、[Go]ボタンを押すと、Papyrus に関連する様々な導入可能プラグインが表示されます。


これで SysML プロファイル(SysML の Papyrus 向けプラグイン)である
Papyrus SysML 1.6 1.0.0
を見つけることが出来ます。

そして「Papyrus SysML 1.6 1.0.0」にある [Install] ボタンを押すとプロファイルがインストールされます。

なお上記のダイアログ表示では、現在使用中の環境では既にインストール済であるため [Installed] と表示されています。

これで SysML モデルの作成が可能となります。

SysML モデルの作成

SysML プロファイル(Papyrus 向けプラグイン)を導入すると、これまでの Papyrus プロジェクト/ Papyrus モデルの作成ダイアログにおいて

  • Systems Engineering
    • SysML 1.6

が選択可能となります。


SysML 1.6 をチェックしてモデルプロジェクト/モデルファイルを作成すると、Papyrus 上で SysMLのダイアグラムやモデル化要素を用いたモデル化が可能となります。

SysML 1.6 モデルでのツール操作系(俯瞰)

Papyrus のメニュー等における操作系がざっとどのようになっているかを紹介しておこうと思います。

自分は Model Explorer の所からダイアグラム作成やモデル作成を行うことが多いので、Model Explorer 上のマウス右クリックで表示されるメニューを紹介します。

まずモデル化要素の選択としては、

  • SysML 1.6 Child
  • UML for SysML 1.6

の2つに別れて表示されます。前者は SysML で新たに導入された要素(ステレオタイプ)、後者は SysML仕様書上で「UML4SysML」と称されている UML から SysML に直接導入された要素となります。

まず SysML 1.6 Child はいわゆる「Node」ですが、以下の要素が選択可能です。SysMLとして良く目にする要素が並んでいます。


SysML 1.6 Relationship はいわゆる「Edge」ですが、以下の要素が選択可能です。



UML for SysML 1.6 では以下の要素が表示されます。どのような要素が「UML4SysML」として使用可能であるかは SysML仕様書で説明されています。

UML for SysML 1.6 (Node です)


UML for SysML 1.6 Edges (Edgeです)


また、SysML に特化したダイアグラムは、
New Diagram
のメニューから表示されます。これも SysML でよく見るダイアグラムが並んでいます。


また
New Table
のメニューから SysML でモデル化を行う際に有用な「表」が作成可能です。SysMLの仕様書を見ると表形式も積極的に推奨されているような印象を受けます。


ざっと、そのような感じです。

UML自体をその記述のベース言語とする一般的なUMLプロファイルよりは、専用モデリング言語として特化した操作系として各種モデル作成が行えるようになっています。

SysML 向け Papyrus となる細かな使い方やTips、また和集合として 「SysML OR UML」 となる使い方については、またご紹介出来ればと思っています。