Translate

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

2020/06/04

モデルファイルの分割作成と使用

UMLでモデル化を行う場合の最上位の要素は「Model」なのですが、どの粒度で1つのモデルパッケージとなる最上位モデルを規定するかの問題があります。

対象とする開発プロジェクト全体を扱うモデルを1ファイルで作成するか、より細かな粒度でモデルファイルを扱うかの話しとなります。

上記の「Model」のリンクから辿れる記事で説明した通り PapyrusでのModelのファイル構成は非常にシンプルでファイルの独立性が高いです。また作成しているUMLモデルから別ファイルのモデルのImportも簡単に行えます。

そのため自分としては「1つの関心事で1つのモデルファイルを作成する」というやり方を行っています。

実はそうしている理由がもう一つあって、昔、ツール上での自分の操作ミスとツール不具合により、作成中のモデルが完全に消えたことがあります。それなりにボリュームのあるモデルを作成していたため、かなりショックで、またそのリカバリ(といっても再度のモデル化ですが)に多くの時間を有しました。その時の経験も踏まえ、出来るだけファイル分割したモデルを作成しています。

またファイル分割したモデルとすることで、複数人での並列作業も可能となります。

そのような運用を行う場合のやり方について以下で紹介したいと思います。

プロジェクトの作成

上で説明した様な運用をする場合、分割する粒度を「プロジェクト」とするか「モデルファイル」とするかが、まずはの分岐点となります。
どちらでも大きな問題は発生しませんが、それよりも自身がPapyrus/Eclipseの「プロジェクト」という単位で何を扱っているかに大きく依存しそうな気がします。
自分は RCP版の Papyrus でも通常の Eclipse と同様に扱っており、より大きな括りで扱っている「Workspace」下に関係する C/C++ プロジェクトや Java プロジェクト、XMLプロジェクトやLaTeXプロジェクト等が混在しています。その一つとして「(ある特定の対象向けの)モデルプロジェクト」として「プロジェクト」を位置づけています。
そのため、作成するモデルが最初から小さいことが明確になっている場合を除き、

「Papyrus プロジェクトではなく 素のプロジェクトを作成し、その下に複数のモデルファイルを作成する」

というやり方をとっています。

素のプロジェクトの作り方ですが、Papyrusのメニュー上の File > New から、「Papyrus Project ではなく」、「Other」を選択します。


これにより使用中の Papyrus (Eclipse) で作成可能なプロジェクトやファイルの一覧が表示されるので、その中の

General > Project

を選択します。


これにより素のプロジェクトファイルが作成可能です。

モデルファイルの作成

その後は、作成したプロジェクトを Project Explorer 上で選択して、同じく File > New から、「Papyrus Project ではなく、Papyrus Modelを選択」します。


その先は通常の Papyrus Project での作成作業と同じダイアグラムが表示されます。


これを繰り返すことにより、一つのプロジェクト下に複数の Papyrus Model (ファイル)を作成することが可能です。

以下は SimpleProject という素のプロジェクト下に Papyrus Model として A、B、C という3つのモデルファイルを作成したプロジェクトの例です(Project Explorer 表示)。


各々のモデルファイルをダブルクリックすると、そのモデルが Papyrus 上で開かれます。

モデルパッケージのImport

今、Papyrus Model の A には ClassA クラスが、Papyrus Model の B には ClassB クラスが定義されているとします。

そしてPapyrus Model の C において、A の ClassA クラス、および B の ClassB を用いて新たなClassC を定義したいとします。

そのためには Model C において Model A パッケージと Model B パッケージを Import するとが必要となります。

まずは  C を開いて、その Model Explorer 上でトップの Model (ここでは C )を選択します。


その後、マウス右クリックで

Import > Import Package from User Model

を選択します。



するとワークスペース内のプロジェクトからUMLモデルとしてImport可能なモデルファイルが選択可能となります。


ここで、「A.uml」および「B.uml」をマウスで選択し、ダイアログ中央にある [⇒] ボタンで、右側に表示させ [OK] ボタンを押します。


その後、どのパッケージ要素を Import するかの選択用ダイアログが表示されます。


ここで A と B を選択することになるのですが、注意点が「Action」です。
ダイアログ中央ぐらいにある 4 つのボタンのうちの3つが対応しているのですが、Actionとしては昔の記事「Papyrus における登録済パッケージのインポート」に示した通り、以下の3種類:

  • Load
  • Import
  • Copy

があり、どれを選択するかで対応する [Load All] [Import All] [Copy All] ボタンをクリックします。

今回は Import で進めるとして、[Import All] ボタンをクリックするとダイアログの表示が以下となります。


これで [OK] を押すと、Model Explorer 上で Model A と Model B が現れます。


あとは Model C 上で ClassA や ClassB をダイアグラム上に Drag & Drop しながら、モデル作成を進めていけます。

モデル作成

試しに Model C 上でClassAとClassBをCompositeする「Cクラス」を定義してみると、このようになります。ClassA と ClassB は Model Explorer 上から Drag & Drop しました。


なお、ClassA や ClassB が別パッケージ由来というのが少し分かりにくいので、明示したい場合には、ClassA (やClassB)をダイアグラム上で選択し、Properties の Appearance の一番下にある

「Qualified name de」

を適切に切り替えることで表示が変更されます (de って何でしょうかね? なにかしら単語が途中で切れているのでしょうか? それともフランス語の前置詞 de なのでしょうかね??)





2017/07/16

Project の作成

Papyrus で UML モデルを作る基本的な方法はモデルプロジェクト(Papyrus Project)を作成することになります.また,そのやり方は,通常の Eclipse におけるプロジェクト作成と同様です.メニューの File を選択し New → Papyrus Project を選択します



ある程度使っている中で,一般的なプロジェクトの一部として Papyrus のモデルを作成・登録したい場合も出てくると思います.その場合は素のプロジェクト(上図中リストの Project... から)を作成して,そこに適当なフォルダ(上図中リストの Folder)を作成し,そこに Papyrus Model (上図中リストの Papyrus Model)を作成することも出来ます.元のプロジェクトがソースベースの場合やドキュメントベースの場合には Papyrus Project ではなく Papyrus Model を使う方が便利です.僕も幾つかのプロジェクトではそうしています.

File → New → Papyrus Project の選択で New Papyrus Project Wizard が開きます


いきなり Papyrus 2.0系とは画面が異なっていますね :-)
Architecture Contexts や Architecture Viewpoints という選択肢があります.
因みに Papyrus 2.0.2 での New Papyrus Project Wizard は以下のような画面でした


シンプルに使用するモデリング言語を選べば良かったのですが,Papyrus 3.0 では Architecture Contexts や Architecture Viewpoints とは何かをちゃんと押さえておいた方がよさそうです.
因みに上記 Papyrus 2.0.2 の画面で SysML 1.4 が選択できるようになっているのは Additional Component として SysML 1.4 を追加しているためです.またボタンの文字表示が日本になっていますが,これも日本語化対応のプラグインをいれているためです.
それらについては,また紹介できればと思います.

今回は Papyrus 2.0 から Papyrus 3.0 への変更調査もしたいので,じっくり確認していこうと思います.
このように不明点に出会ったら,あせらずに画面左したのヘルプマークをクリックします.そうすると以下のようにヘルプ付き画面に変わります.


Eclipse ヘルプと連動しており Papyrus のヘルプも辿ることができます.この表示上の「Search for Select Architecture Context」をクリックしてみます.


Local Help に 7つほどアイテムが出てきました.一番上の architecture が近そうですね.クリックしてみます.


Papyrus Guide > Toolsmith  Guide > Architecture Contexts のページの様です.
これを読んでみた方がよさそうですね.それについてはまた別記事にまとめるとして,まずは デフォルトの UML を選択して進めます.


プロジェクト名とモデルファイル名を入力する表示に変わりました.
基本的には Papyrus 2.0 系と同じなのですが一点だけ違う所があります.
Papyrus 2.0 系 ではモデルファイル名は "model" という文字列でデフォルトで入っていました.もちろん修正可能ではあったのですが,デフォルトである model という名前で使うことが多かったです.Papyrus 3.0 ではモデルファイル名は空欄になっています.
実はここ,プロジェクト名を入れると連動してモデルファイル名に同じ名前が入力されます.


このような感じです.とりあえず先に進みます.


ここも Papyrus 2.0 系と基本的には同じですが,幾つかの違いがあります.
まず Root model Element name が前は "RootElement" がデフォルト設定だったのですが,今回は モデルファイル名が入っています.実は一度 Back ボタンで戻り,プロジェクト名と異なるファイル名にしてみたのですが,Root model Element name に表示される名前はモデルファイル名の方でした.因みに Root model Element name は,その名の通り,UMLでモデル化する対象のルートとなる Model パッケージの名前です.この名前は,他のモデルを Import したり UMLプロファイルを読み込んだりする際のルート名となるため,実は Papyrus 2.0 系の共通的なデフォルト名だと,その際に名前がわかりづらく,後々変更するなどの面倒くさいこともあったので,今回のモデルファイル名(また大元となるプロジェクト名)に連動させるというのは良い感じに思えます.
また別の違いとしては,Select a Diagram Kind に表示される Diagram/Table の数が増えています.プロジェクトやモデル作成時に選ばなくても後で選べますし,いつも数多くのダイアグラムを作成するため,この初期画面で選択することはほぼないのですが.
因みに増えているのは

  • Generic Table
  • Relationship Generic Matrix
  • View Table

の3つみたいですね.
これらについても,またおいおい.
その下のチェックは,後で対応できるので,ここでは何も指定せずに進みます.
それで Finish を押すと


となります.
Papyrus の見慣れたトップ画面となりました.

とりあえず今回はここまで.
今回の内容でも,いくつか宿題が出来てしまいました...