Translate

2020/06/23

Papyrus 2020-06 (4.8.0) のリリースと次リリースの 5.0.0 について

Papyrus 2020-06 がリリースされました:
Eclipse Papyrus 4.8.0
今回の変更点は主には、
  • Table editor:
    • management of empty row
    • performance improvement
  • State diagrams:
    • fix creation of regions
  • Activity diagrams
    • improve reactivity during creation of a link between nodes
みたいです。詳細は Issues のページに記載されています。積み残した(unresolvedな)不具合も、それなりにあるみたいですね。

このリリースと共に次のメジャーバージョンアップである 5.0.0 についてもアナウンスがありました:
[mdt-papyrus.dev] New major Release Papyrus 5.0 for 2020.12 release train
どうもメジャーリリースである 5.0.0 (2020.12) に専念するために 2020.09 はスキップするみたいですね。

作業内容については以下のページで紹介されるみたいです:
Papyrus/2020.12 Work Description
色々とリファクタリングもかけられるみたいなので、無事にリリース出来るといいなと思います。


2020/06/22

Ubuntu 18.04 から 20.04 にアップグレードした際のデスクトップショートカット

これまでメイン開発マシンとして Ubuntu 18.04 LTS を使ってきたのですが、新たな LTS である 20.04 がリリースされたため、今回、システムアップグレードを行いました。

Ubuntu 18.04 LTS から Ubuntu 20.04 LTS への移行は特に問題なく行えたのですが、これまで作成してきたデスクトップショートカットが起動出来なくなりました。

18.04 でのデスクトップショートカットは、記事

Ubuntu 18.04/Gnome での Papyrus ショートカット

で紹介したやり方で作成していたのですが、そのショートカットアイコンが


という見た目に全て変わってしまいました。

さてと思いつつ、見た目のアイコンも歯車の様になってますし、拡張子 ".desktop" はショットカットを作成した直後の見え方ではありますので、大きな変更とはなってなさそうに思えます。

少し調べてみますと、どうやらマウス右クリックで表示されるメニュー上で

起動を許可する

選択するみたいです。



これを全てのショートカットに対して実行すると、無事に元のショートカットアイコンに戻り、起動できるようになりました。




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」 となる使い方については、またご紹介出来ればと思っています。


2020/06/05

モデルファイル中にある全てのダイアグラムのファイル出力

モデルファイル中にある全ての図をファイル出力したい場合があります。

自分は RCP版Papyrus に TeXLipse プラグインを導入していまして、Papyrusで作成したモデル図を LaTeX のソースから includegraphics して使うことが多いです。

その際、モデルファイル中の図の一括出力機能を使っています。モデル側で修正があった場合に修正したモデルが関係するダイアグラム全ての表示がすべて変更されるため、ドキュメント側でも図全体の整合を取ることが出来ます。

図の一括出力の具体的なやり方ですが、まず、あるプロジェクト中にAという名称のモデルファイルがあるとし、その中のモデル階層がダイアグラムも含めて以下の図の様になっているとします。


ここで図(Diagram)の置かれている階層ですが、
  • ルートの Model "A" の直下に ClassDiagram1 と ComponentDiagram1 があり、
  • ルートA下のパッケージ "X" に ClassDiagram2 と useCaseDiagram1 があり、
  • パッケージ X 下のパッケージ "Y" に CompositeStructureDiagram1 がある

となっています。

プロジェクトエクスプローラ上のモデルファイルAを選択しマウス右クリックで表示されるメニュー最下部の「Export All Diagrams..」を選択します。


選択すると以下の「Export All Diagrams」というダイアログが上がってくるので、ここで、
  • Select the output format: で所望する形式に変更(自分はPDFが多いです)
  • Prefix with qualified name をチェック

します。


これで[OK]を押すとダイアグラムファイルの生成・出力処理が実行され、終了すると以下のダイアログが表示されます。


これでプロジェクトエクスプローラ上でPDFファイルが生成されていることが分かります。

ファイル名は Papyrus が自動的につけますが、

上位のパッケージ種別_パッケージ名_ダイアグラム名

となっているみたいです。

実際、各ダイアグラムのPropertiesを見てみると、



となっており、この「Root element」もしくは「Owner」の「モデル種別名」と「モデル名」を用いた名前となっている模様です。

注意しないといけないのは

「複数のモデルファイルが存在し、そこから図をExportする場合に名前の競合が起こらないように」

することです。

今は生成されるファイル名が重ならないことを確認してからExportしているので問題に遭遇していませんが、競合が起こりうる話しなので注意が必要かと思います。

なお「パッケージAの下にパッケージBがあり、その下にまたパッケージAがあって」の場合で「階層は違うパッケージAの下に同じダイアグラム名があった場合」とかですかね。
試してはいませんが、気になる所です。。。

なお「ダイアグラム名を日本語にしていた場合」は「図出力がなされません」。無視されます。

こちらの方が要注意点ですね笑

そのため、自分は「ダイアグラム名に日本語は使わない」という運用をしています。