Translate

2019/07/26

ダイアグラムのカラーテーマ設定(前半)

ダイアグラムの表示色

Papyrusのクラス図でモデル作成を行うと以下の図のような見慣れた配色で表示がなされます。

なぜこの配色がデフォルトとなのか理由は知らないのですが、落ち着いた感じでもあり、また少し冷たい感じもします。好みではあるでしょうけど。

ただ、ダイアグラムを他の文書に貼り付けたい場合に、色目がないモノクロでの図が欲しい場合もあります。実際、Papyrusのこのグラデーションがかかった図を紙面に印刷した場合に、図の内容が分かりにくくなることがあります。

個別にモデル要素の見た目を変更する場合には、Properties(日本語化している場合にはプロパティー)の所にあるAppearanceにて、色やグラデーション、線の細さ、フォント、アイコンあり・なし等が変更出来ますが、全ての要素を個々に変更し続けることは大変なので、一括で変更したい時があります。その場合には Papyrus のPreferences(設定)にあるPapyrus設定のCSS Themeを変更する形になります。

CSSテーマ

CSSとはCascading Style Sheetsの略語であり、 「HTML や XML の要素をどのように修飾(表示)するかを指示する、W3Cによる仕様の一つ」 です(Wikipediaより)。 デフォルトで設定されているPapyrusのCSS設定は「Papyrus Theme」と呼ばれているものです。Peferenceから辿れる Papyrus の CSS Theme では以下の様になっています。

このメニュー上の Current Theme を変更することで別のテーマに切り替えることが可能です。選択可能なリストの中には「Black & White」という要素も存在しています。

「Black & White」に切り替えることで、先程のクラス図の見た目は以下の様に変わります。

これはこれで悪くはないのですが、少しシンプル過ぎる気がします。個人的には白黒表示にしつつアイコン表示は欲しい所です。 以下に示す様なイメージです。ぱっと見たときに、様々なモデルの付加属性がわかりやすく、かつシンプル、という気が個人的にはしています。

この表示にすべく、これまでは「CSSテーマをBlack & Whiteに」「個々のモデルに対してアイコン表示設定をON」として使っていました(特に印刷物対応が必要となる文書向けのダイアログ作成では)。

ちなみにアイコン表示設定は Appearance の最下部にあるElement iconのチェックボックスになります。

ただ全てのモデルの表示設定を毎回手で実施していくのはやはりとても大変でして、一括変更が欲しい所です。

その場合は、自身でCSSテーマを作成することになります。

今回始めて自身でのCSSテーマ作成を実施したので、その内容について後半の記事に残しておきます。

2019/07/19

Papyrus/Eclipse 2019-06 の日本語化(Babel)

Babel Language Packs R0.17.0 are now available!

Papyrus 2019-06(4.4.0) のベースとなる Eclipse 2019-06 を日本語化する Babel の最新版がリリースされました。

過日の記事「Babel (Eclipse/Papyrusの日本語対応)のリリースについて」に記載した通り、無事に7月末までの時期にリリースされました。Eclipse 20XX-06 リリースの一ヶ月後という予定通りのリリースです。

Babel のインストールは このページの「Installing the language packs」に記載された内容 に基づき、進めていく形になります。

簡単に転記すると以下の通りです:

  • メニューの 'Help' > 'Install new software...' からインストールウィザードを開く
  • Babel p2 リポジトリである https://download.eclipse.org/technology/babel/update-site/R0.17.0/2019-06/ を追加する
  • 必要な言語パック(language pack)を選択しインストール
  • Eclipseを再起動することで選択言語に翻訳された Eclipse が起動

具体的なGUI操作については 過去の記事 「Papyrus の日本語化」 を参考にして下さい。

Papyrus RCP 日本語化した結果

インストール結果は以下の通りです。これまでと同じくEclipseとしての基本的なメニューは日本語化されますが、 Papyrus のメニューに関しては英語のままとなっています。

インストールしてみた印象として、前の版よりもインストール時にリポジトリからデータ取得する時間が増えている気がします。

なお日本語対応される対象プラグインは以下となっています:

  Babel Language Packs in Japanese 
    Babel Language Pack for datatools in Japanese (83.09%) 4.12.0.v20190713060001
    Babel Language Pack for eclipse in Japanese (92.9%) 4.12.0.v20190713060001
    Babel Language Pack for modeling.emf in Japanese (71.01%) 4.12.0.v20190713060001
    Babel Language Pack for modeling.graphiti in Japanese (63.83%) 4.12.0.v20190713060001
    Babel Language Pack for modeling.mdt.bpmn2 in Japanese (38.44%) 4.12.0.v20190713060001
    Babel Language Pack for modeling.tmf.xtext in Japanese (65.79%) 4.12.0.v20190713060001
    Babel Language Pack for mylyn in Japanese (84.84%) 4.12.0.v20190713060001
    Babel Language Pack for rt.rap in Japanese (93.71%) 4.12.0.v20190713060001
    Babel Language Pack for soa.bpmn2-modeler in Japanese (27.89%) 4.12.0.v20190713060001
    Babel Language Pack for technology.egit in Japanese (82.59%) 4.12.0.v20190713060001
    Babel Language Pack for technology.jgit in Japanese (15.62%) 4.12.0.v20190713060001
    Babel Language Pack for technology.lsp4e in Japanese (45.59%) 4.12.0.v20190713060001
    Babel Language Pack for technology.packaging in Japanese (58.43%) 4.12.0.v20190713060001
    Babel Language Pack for technology.packaging.mpc in Japanese (65%) 4.12.0.v20190713060001
    Babel Language Pack for tools.cdt in Japanese (76.85%) 4.12.0.v20190713060001
    Babel Language Pack for tools.gef in Japanese (15.69%) 4.12.0.v20190713060001
    Babel Language Pack for tools.tm in Japanese (81.63%) 4.12.0.v20190713060001
    Babel Language Pack for tools.tracecompass in Japanese (45.54%) 4.12.0.v20190713060001
    Babel Language Pack for webtools in Japanese (85.7%) 4.12.0.v20190713060001

2019/07/08

SysML 1.6 プロファイルのリリース

少しタイムラグがありましたが、SysML 1.6 プロファイルがリリースされた模様です。

これまでと同じく Marketplace から入手可能です。 検索キーワードとして papyrus を入力して検索(Go)すれば見つかると思います。

SysML1.6 プロファイルをインストール後、Papyrus プロジェクトの作成時に SysML 1.6 が選択可能となります。

前の SysML1.4 プロファイルの時と同じように、SysML特化のダイアグラムが選択・作成可能です。

また SysML1.6 プロファイルを適用したモデルでは、SysML1.6 で事前定義された複数のモデル:

  • ControlValues
  • PrimitiveBlocks:ValueTypes
  • UnitAndQuantityKind
  • Requrements
が利用可能です。各々ダイアグラムと共にモデル定義がなされています:

ControlValues では ControlValueKind が利用可能です。

ValueTypes では BooleanComplexIntegerRealおよびString のValueTypeが利用可能です。ブロック定義図の表記は少し見にくくなっていますが。

UnitAndQuantityKindでは QuantityKindUnitが利用可能です。

RequirementsではVerdictKindが利用可能です。

個人的には Annex E.3 Requirements Diagram Extensions に含まれる拡張要求のステレオタイプ

  • «functionalRequirement»
  • «interfaceRequirement»
  • «performanceRequirement»
  • «physicalRequirement»
  • «designConstraint»
の事前定義が欲しかったので、含まれていないのは少し残念です。

また幾つか表形式(Table)も利用可能です。 Allocation MatrixRequirement Tree Table などは役立ちそうです。

2019/07/03

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

Ubuntu 18.04/Gnome での Papyrus の起動

最近、Papyrusを動作させるメインプラットフォームが Ubuntu 18.04 (Linux) になりつつあります。 Windowsの場合には Papyrus をインストール (zipファイルの展開) 後、デスクトップにショートカットを作成し、 簡単に起動させているのですが、今まで Ubuntu ではコマンドラインかGUIベースのシェルから起動させていました。

Papyrusの最新版リリース後等では複数の Papyrus を切り替えて起動させることも増えてきて、 これまでの起動のさせ方だとだんだんと手間になってきました。 その際に、ふと「Ubuntuではどのようにショートカットを作成するんだろう」というのを思い出し、 少し調べてみるとやり方が分かったので、その方法を書いておきます。 具体的な方法は、 この記事 を参考にしました(感謝)。

GNOME PANELのインストール

まずは Gnome Panel のインストールが必要そうです。調べた他のWebページでは他のやり方が書かれているものもありましたが、 Gnome Panelベースで進めようと思います。

例によって例のごとく、gnome-panel をインストールします:

$ sudo apt install gnome-panel
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  alacarte geoclue geoclue-ubuntu-geoip gnome-applets gnome-applets-data gnome-flashback gnome-flashback-common
  gnome-panel-data gnome-screensaver gnome-session-flashback gnome-system-monitor indicator-applet-complete
  indicator-bluetooth indicator-datetime indicator-keyboard indicator-printers libaccounts-glib0 libfcitx-gclient1
  libfcitx-utils0 libgeoclue0 libnm-glib4 libnm-util2 libpanel-applet3 metacity ubuntu-touch-sounds
提案パッケージ:
  tomboy evolution-common desktop-base fcitx
以下のパッケージが新たにインストールされます:
  alacarte geoclue geoclue-ubuntu-geoip gnome-applets gnome-applets-data gnome-flashback gnome-flashback-common gnome-panel
  gnome-panel-data gnome-screensaver gnome-session-flashback gnome-system-monitor indicator-applet-complete
  indicator-bluetooth indicator-datetime indicator-keyboard indicator-printers libaccounts-glib0 libfcitx-gclient1
  libfcitx-utils0 libgeoclue0 libnm-glib4 libnm-util2 libpanel-applet3 metacity ubuntu-touch-sounds
アップグレード: 0 個、新規インストール: 26 個、削除: 0 個、保留: 0 個。
22.2 MB のアーカイブを取得する必要があります。
この操作後に追加で 53.9 MB のディスク容量が消費されます。
続行しますか? [Y/n] 
取得:1 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 alacarte all 3.11.91-3 [81.7 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 libgeoclue0 amd64 0.12.99-4ubuntu2 [27.2 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 libnm-util2 amd64 1.10.6-2ubuntu1.1 [117 kB]
取得:4 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 libnm-glib4 amd64 1.10.6-2ubuntu1.1 [78.7 kB]             
取得:5 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 geoclue amd64 0.12.99-4ubuntu2 [19.4 kB]                      
取得:6 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 geoclue-ubuntu-geoip amd64 1.0.2+18.04.20180223-0ubuntu1 [11.6 kB]
取得:7 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 gnome-applets-data all 3.28.0-1 [6,027 kB]                    
取得:8 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 gnome-panel-data all 1:3.26.0-1ubuntu5 [961 kB]               
取得:9 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 gnome-panel amd64 1:3.26.0-1ubuntu5 [372 kB]                  
取得:10 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 libpanel-applet3 amd64 1:3.26.0-1ubuntu5 [19.5 kB]           
取得:11 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 gnome-applets amd64 3.28.0-1 [280 kB]                        
取得:12 http://jp.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 gnome-flashback-common all 3.28.0-1ubuntu1.3 [71.9 kB]
取得:13 http://jp.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 gnome-flashback amd64 3.28.0-1ubuntu1.3 [239 kB]     
取得:14 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 gnome-screensaver amd64 3.6.1-8ubuntu3 [235 kB]              
取得:15 http://jp.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 metacity amd64 1:3.28.0-1ubuntu0.1 [216 kB]          
取得:16 http://jp.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 gnome-session-flashback all 1:3.28.0-1ubuntu1.3 [5,436 B]
取得:17 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 gnome-system-monitor amd64 3.28.2-0ubuntu1 [193 kB]      
取得:18 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 indicator-applet-complete amd64 12.10.2+17.10.20170425-0ubuntu1 [19.7 kB]
取得:19 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 libaccounts-glib0 amd64 1.23+17.04.20161104-0ubuntu1 [41.0 kB]
取得:20 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 indicator-datetime amd64 15.10+17.10.20170829.2-0ubuntu4 [275 kB]
取得:21 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 libfcitx-utils0 amd64 1:4.2.9.6-1 [35.2 kB]                  
取得:22 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 libfcitx-gclient1 amd64 1:4.2.9.6-1 [20.8 kB]                
取得:23 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 indicator-keyboard amd64 0.0.0+18.04.20180216-0ubuntu1 [50.3 kB]
取得:24 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 ubuntu-touch-sounds all 15.08 [12.7 MB]                      
取得:25 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 indicator-bluetooth amd64 0.0.6+17.10.20170605-0ubuntu3 [33.8 kB]
取得:26 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 indicator-printers amd64 0.1.7+17.10.20171101-0ubuntu1 [26.3 kB]
22.2 MB を 1分 7秒 で取得しました (330 kB/s)                                                                                   
以前に未選択のパッケージ alacarte を選択しています。
(データベースを読み込んでいます ... 現在 593253 個のファイルとディレクトリがインストールされています。)
.../00-alacarte_3.11.91-3_all.deb を展開する準備をしています ...
alacarte (3.11.91-3) を展開しています...
以前に未選択のパッケージ libgeoclue0:amd64 を選択しています。
.../01-libgeoclue0_0.12.99-4ubuntu2_amd64.deb を展開する準備をしています ...
libgeoclue0:amd64 (0.12.99-4ubuntu2) を展開しています...
以前に未選択のパッケージ libnm-util2:amd64 を選択しています。
.../02-libnm-util2_1.10.6-2ubuntu1.1_amd64.deb を展開する準備をしています ...
libnm-util2:amd64 (1.10.6-2ubuntu1.1) を展開しています...
以前に未選択のパッケージ libnm-glib4:amd64 を選択しています。
.../03-libnm-glib4_1.10.6-2ubuntu1.1_amd64.deb を展開する準備をしています ...
libnm-glib4:amd64 (1.10.6-2ubuntu1.1) を展開しています...
以前に未選択のパッケージ geoclue を選択しています。
.../04-geoclue_0.12.99-4ubuntu2_amd64.deb を展開する準備をしています ...
geoclue (0.12.99-4ubuntu2) を展開しています...
以前に未選択のパッケージ geoclue-ubuntu-geoip を選択しています。
.../05-geoclue-ubuntu-geoip_1.0.2+18.04.20180223-0ubuntu1_amd64.deb を展開する準備をしています ...
geoclue-ubuntu-geoip (1.0.2+18.04.20180223-0ubuntu1) を展開しています...
以前に未選択のパッケージ gnome-applets-data を選択しています。
.../06-gnome-applets-data_3.28.0-1_all.deb を展開する準備をしています ...
gnome-applets-data (3.28.0-1) を展開しています...
以前に未選択のパッケージ gnome-panel-data を選択しています。
.../07-gnome-panel-data_1%3a3.26.0-1ubuntu5_all.deb を展開する準備をしています ...
gnome-panel-data (1:3.26.0-1ubuntu5) を展開しています...
以前に未選択のパッケージ gnome-panel を選択しています。
.../08-gnome-panel_1%3a3.26.0-1ubuntu5_amd64.deb を展開する準備をしています ...
gnome-panel (1:3.26.0-1ubuntu5) を展開しています...
以前に未選択のパッケージ libpanel-applet3 を選択しています。
.../09-libpanel-applet3_1%3a3.26.0-1ubuntu5_amd64.deb を展開する準備をしています ...
libpanel-applet3 (1:3.26.0-1ubuntu5) を展開しています...
以前に未選択のパッケージ gnome-applets を選択しています。
.../10-gnome-applets_3.28.0-1_amd64.deb を展開する準備をしています ...
gnome-applets (3.28.0-1) を展開しています...
以前に未選択のパッケージ gnome-flashback-common を選択しています。
.../11-gnome-flashback-common_3.28.0-1ubuntu1.3_all.deb を展開する準備をしています ...
gnome-flashback-common (3.28.0-1ubuntu1.3) を展開しています...
以前に未選択のパッケージ gnome-flashback を選択しています。
.../12-gnome-flashback_3.28.0-1ubuntu1.3_amd64.deb を展開する準備をしています ...
gnome-flashback (3.28.0-1ubuntu1.3) を展開しています...
以前に未選択のパッケージ gnome-screensaver を選択しています。
.../13-gnome-screensaver_3.6.1-8ubuntu3_amd64.deb を展開する準備をしています ...
gnome-screensaver (3.6.1-8ubuntu3) を展開しています...
以前に未選択のパッケージ metacity を選択しています。
.../14-metacity_1%3a3.28.0-1ubuntu0.1_amd64.deb を展開する準備をしています ...
metacity (1:3.28.0-1ubuntu0.1) を展開しています...
以前に未選択のパッケージ gnome-session-flashback を選択しています。
.../15-gnome-session-flashback_1%3a3.28.0-1ubuntu1.3_all.deb を展開する準備をしています ...
gnome-session-flashback (1:3.28.0-1ubuntu1.3) を展開しています...
以前に未選択のパッケージ gnome-system-monitor を選択しています。
.../16-gnome-system-monitor_3.28.2-0ubuntu1_amd64.deb を展開する準備をしています ...
gnome-system-monitor (3.28.2-0ubuntu1) を展開しています...
以前に未選択のパッケージ indicator-applet-complete を選択しています。
.../17-indicator-applet-complete_12.10.2+17.10.20170425-0ubuntu1_amd64.deb を展開する準備をしています ...
indicator-applet-complete (12.10.2+17.10.20170425-0ubuntu1) を展開しています...
以前に未選択のパッケージ libaccounts-glib0:amd64 を選択しています。
.../18-libaccounts-glib0_1.23+17.04.20161104-0ubuntu1_amd64.deb を展開する準備をしています ...
libaccounts-glib0:amd64 (1.23+17.04.20161104-0ubuntu1) を展開しています...
以前に未選択のパッケージ indicator-datetime を選択しています。
.../19-indicator-datetime_15.10+17.10.20170829.2-0ubuntu4_amd64.deb を展開する準備をしています ...
indicator-datetime (15.10+17.10.20170829.2-0ubuntu4) を展開しています...
以前に未選択のパッケージ libfcitx-utils0:amd64 を選択しています。
.../20-libfcitx-utils0_1%3a4.2.9.6-1_amd64.deb を展開する準備をしています ...
libfcitx-utils0:amd64 (1:4.2.9.6-1) を展開しています...
以前に未選択のパッケージ libfcitx-gclient1:amd64 を選択しています。
.../21-libfcitx-gclient1_1%3a4.2.9.6-1_amd64.deb を展開する準備をしています ...
libfcitx-gclient1:amd64 (1:4.2.9.6-1) を展開しています...
以前に未選択のパッケージ indicator-keyboard を選択しています。
.../22-indicator-keyboard_0.0.0+18.04.20180216-0ubuntu1_amd64.deb を展開する準備をしています ...
indicator-keyboard (0.0.0+18.04.20180216-0ubuntu1) を展開しています...
以前に未選択のパッケージ ubuntu-touch-sounds を選択しています。
.../23-ubuntu-touch-sounds_15.08_all.deb を展開する準備をしています ...
ubuntu-touch-sounds (15.08) を展開しています...
以前に未選択のパッケージ indicator-bluetooth を選択しています。
.../24-indicator-bluetooth_0.0.6+17.10.20170605-0ubuntu3_amd64.deb を展開する準備をしています ...
indicator-bluetooth (0.0.6+17.10.20170605-0ubuntu3) を展開しています...
以前に未選択のパッケージ indicator-printers を選択しています。
.../25-indicator-printers_0.1.7+17.10.20171101-0ubuntu1_amd64.deb を展開する準備をしています ...
indicator-printers (0.1.7+17.10.20171101-0ubuntu1) を展開しています...
alacarte (3.11.91-3) を設定しています ...
libnm-util2:amd64 (1.10.6-2ubuntu1.1) を設定しています ...
gconf2 (3.2.6-4ubuntu1) のトリガを処理しています ...
metacity (1:3.28.0-1ubuntu0.1) を設定しています ...
libgeoclue0:amd64 (0.12.99-4ubuntu2) を設定しています ...
indicator-printers (0.1.7+17.10.20171101-0ubuntu1) を設定しています ...
mime-support (3.60ubuntu1) のトリガを処理しています ...
libnm-glib4:amd64 (1.10.6-2ubuntu1.1) を設定しています ...
desktop-file-utils (0.23-1ubuntu3.18.04.2) のトリガを処理しています ...
libaccounts-glib0:amd64 (1.23+17.04.20161104-0ubuntu1) を設定しています ...
gnome-screensaver (3.6.1-8ubuntu3) を設定しています ...
gnome-applets-data (3.28.0-1) を設定しています ...
libglib2.0-0:amd64 (2.56.4-0ubuntu0.18.04.3) のトリガを処理しています ...
libglib2.0-0:i386 (2.56.4-0ubuntu0.18.04.3) のトリガを処理しています ...
libfcitx-utils0:amd64 (1:4.2.9.6-1) を設定しています ...
gnome-panel-data (1:3.26.0-1ubuntu5) を設定しています ...
bamfdaemon (0.5.3+18.04.20180207.2-0ubuntu1) のトリガを処理しています ...
Rebuilding /usr/share/applications/bamf-2.index...
gnome-system-monitor (3.28.2-0ubuntu1) を設定しています ...
ubuntu-touch-sounds (15.08) を設定しています ...
libc-bin (2.27-3ubuntu1) のトリガを処理しています ...
gnome-flashback-common (3.28.0-1ubuntu1.3) を設定しています ...
man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ...
gnome-menus (3.13.3-11ubuntu1.1) のトリガを処理しています ...
dbus (1.12.2-1ubuntu1.1) のトリガを処理しています ...
libpanel-applet3 (1:3.26.0-1ubuntu5) を設定しています ...
hicolor-icon-theme (0.17-2) のトリガを処理しています ...
indicator-bluetooth (0.0.6+17.10.20170605-0ubuntu3) を設定しています ...
indicator-applet-complete (12.10.2+17.10.20170425-0ubuntu1) を設定しています ...
libfcitx-gclient1:amd64 (1:4.2.9.6-1) を設定しています ...
gnome-panel (1:3.26.0-1ubuntu5) を設定しています ...
indicator-datetime (15.10+17.10.20170829.2-0ubuntu4) を設定しています ...
geoclue (0.12.99-4ubuntu2) を設定しています ...
gnome-flashback (3.28.0-1ubuntu1.3) を設定しています ...
indicator-keyboard (0.0.0+18.04.20180216-0ubuntu1) を設定しています ...
geoclue-ubuntu-geoip (1.0.2+18.04.20180223-0ubuntu1) を設定しています ...
gnome-applets (3.28.0-1) を設定しています ...
gnome-session-flashback (1:3.28.0-1ubuntu1.3) を設定しています ...
gnome-session-flashback.target is a disabled or a static unit, not starting it.
libc-bin (2.27-3ubuntu1) のトリガを処理しています ...

関連して結構色々なアプリやライブラリがインストールされますね。

インストール後はショートカット作成アプリの起動となります。

gnome-desktop-item-edit の起動

ショートカット作成アプリは nome-desktop-item-edit です。 引数として「作成するフォルダ(ようはデスクトップ)」と「新規作成用オプション」を渡して起動します。 以下のように実施します。

~$ gnome-desktop-item-edit ~/デスクトップ/ --create-new
Gtk-Message: 11:05:48.814: GtkDialog mapped without a transient parent. This is discouraged.

これにより以下のダイアログが起動されます。

この後、「名前」「コマンド」および「アイコン」を指定していきます。 「名前」は自分で指定する任意の名前です。 「コマンド」は Papyrus のアプリケーションを指定するのですが、ダイアログ右側の「参照」からGUI上でファイル指定が可能です。 「アイコン」ですが、これはダイアログ左上にある、ちょっと何のアイコンなのかわかりませんが、その表示をクリックすることで GUIでファイル指定が可能です。そこで、Papyrusのインストールフォルダにあるicon.xpmを指定します。

すべてを設定すると以下の表示となります。

これでショートカットの作成は完了です。[OK]ボタンを押します。

初回起動

作成したデスクトップ上のショートカットを見ると、確かに作成はされていますが。 アイコンの表示が反映されていなく「本当にちゃんと設定できたのかな?」と不安になりますが、安心して下さい :-)

デスクトップ上のアイコンをダブルクリックすると、初回は以下のダイアログが表示されます。

この右下の「信頼して起動」をクリックすると無事に Papyrus が起動されますし、デスクトップ上のショートカットアイコンも更新されます。

これで次回からダブルクリックするだけで Papyrus を起動することが可能となります。

2019/06/23

Babel (Eclipse/Papyrusの日本語対応)のリリースについて

今回の Eclipse/Papyrus 2019-06 のリリースを受け、

「そいえば前の 2019-03 リリースでは日本語化の Babel は update されなかったな」
ということが気になりました。 なお、Babel については 前の記事 を参考にして下さい。

気になったので Babel の Mailing List を調べたら以下の記事を見つけました:

[babel-dev] Future Babel Release Plan

簡単に要約すると:

  • 今後のBabelのリリースは Eclipse の6月リリースと12月リリースに対応した年2回となる
  • 対応するEclipseがリリースされた後、約一ヶ月後(4週間後)に Babel はリリースされる(6月リリースでは7月末、12月リリースでは1月末)
となります。

なるほど、それで2019-03では Babel のアップデートはなかったわけです。確かに BabelのDeveloper and Nightly Buildsのサイト を確認すると 2019-06 リリース対応の Babel の準備が着々と進んでいる模様です。

この先も Papyrus + Babel の組み合わせで進めていくのであれば

6月/12月リリースのEclipseに1月遅れのBabelを適用し8月/2月に更新し使用していく
とした方が良いかもしれません。

Papyrus 4.4.0 RCP/ Linux版の起動

動作確認

リリースされた Papyrus 4.4.0 RCP / Linux 版の入手を入手し、さっそく動作させてみました。 なお最近、メインPCを Linux (Ubuntu 18.04 x86_64) にしているので、Linux版RCPでの動作確認です。

いつも通りに Papyrus のサイトから RCP版をダウンロード・展開し、普通に起動してみました。

特に問題なく起動しました。確かに 2019-06 (4.4.0) となっています。

SysML 1.6 Profile

今回のリリースの特徴は SysML 1.6 対応 とのことで通常のRCP版でも SysML1.6プロファイルがついてくるのかなと思い、普通に Papyrus プロジェクトを作成しようとしてみましたが、残念ながら選択肢に SysML 1.6 は現れませんでした。前の版までは SysML 1.4 プロファイルを適用後には、このプロジェクト作成段階で選択肢として出てくるので、どうもRCPのリリース版に直接含まれているわけではないみたいですね。

はてと思い、もしかしたら今回の Papyrus から新規プロジェクトの作成では出てこなくなったのかなと思い、通常のUMLプロジェクトを作った後で、プラグイン適用をしてみることにしました。UMLプロジェクト作成後、トップモデルを選択し、Profile 適用をしようとした画面が以下となります。

うーん、やっぱり入ってなさそうですね。。。

なので、これまでと同じく Market Place をインストールし、Papyrus向けのプロファイルプラグインを別途導入する形で進めようと思います。

Market Place のインストール

これもこれまでと同じく Papyrus RCP版では Market Place の選択メニュー(これもプラグイン)が導入されていないので、追加インストールで導入していこうと思います。これまでの記事と同じく Install New Software で Marketplace Plugin を導入していきました。

Market Place インストール後、プラグイン検索画面で sysml で検索した結果が以下となります。

うーん。。。既存の SysML1.4 しか見当たりません。他にも Papyrus 等のキーワードで試してみましたが、やはり見つかりませんでした。

SysML1.6 プラグインへの結論

最終確認というわけではありませんが、今回の Papyrus 4.4.0 の最大の特徴は SysML 1.6 対応 みたいですが、まだ同プラグインは準備できていないのではと思います。またプラグインの存在(リリース?)が確認できたら報告させていただこうかと思います。なお Model2Doc も明確には見当たりませんでした。全てについて、もう少し待ってみて、情報が確認できてから 4.4.0 に移行した方が良さそうです。

2019/06/22

Papyrus 2019-06 release (4.4.0)

リリース概要

Eclipse 2019-06 の 6/19 のリリースに合わせて、 Papyrus 2019-06 (4.4.0) もリリースされました。 本リリースの詳細は ここに、 ダウンロードは ここから可能です。

Eclipse 2019-06 のリリース直後に Papyrus の Jenkins を覗いてみたら、まだビルド失敗を受けた再テストの真っ最中だったのですが、 その後、テストを通った所まで確認できたので、そろそろリリースかなと思ってたら、 早々にリリースされました。

Papyrus 2019-06 の特徴

最大は SysML 1.6 への対応でしょうか。 メーリングリスト等で Papyrus / SysML Profile の問題点等も指摘されていたので、 その対応を含むのかなと思います。とはいえ、 OMGのサイト情報 によると SysML 1.6 はまだ beta ステータスなので、少し踏むこんだ対応に思えます。 具体的な対応内容については上記のリリース詳細がかかれたサイトで確認できます。 個人的には、 SysML は Papyrus のプラグイン(Profile)の1つなので、 それが Papyrus のリリースの最大の目玉になっている理由が気になる所です。 また動かして試してみようと思います。

その他には LibreOffice の Writer(odt) に向けた Model2Doc もあるみたいです。 LibreOffice Writer に落ちれば、そこから Microsoft Word の docx や、 pdf直接の出力なので、どのような感じかまた試してみたく思います。

後はやはり Papyrus プラグイン向けの対応が多い印象です。

どちらにしても最近のリリースは少し難産だった印象があるので、 Eclipse のリリースと共に、ほぼオンスケで Papyrus もリリースされるようになり、 色々と安定してきたのかなとの印象もあります。開発者の皆様に感謝です。

2019/06/05

UML Profile の適用方法

はじめに

前回の UML Standard Profile の記事を書いた後でふと気になり、 これまでの記事を見直して Profile 適用方法について書いてないことに気が付きました。 そのため Papyrus における Profile 適用方法について書いておこうと思います。

モデルへのProfile適用

最初にすでに何かしらの Papyrus UML モデルが作成されていることを前提とします。

また一般に、作成するモデル全域にプロファイルを使用可能としたいケースが多いと思いますので、 それを前提として話を進めます。

まず最初に Model Explorer 上で最上位のモデル要素 (それは Model となります。 この記事を参照下さい)を選択します。 こんな感じです。

その後、右下の Properties タブから Profile を選択します。

この Profile applications の所で適用するプロファイルを選択する操作となります。

その右上の所に列をなした操作ボタンが見て取れると思います。

このボタン列は左から、適用するプロファイルに関する以下の操作が行えます。

  1. Apply profile -- ユーザが作成した Profile の適用
  2. Remove selected elements -- 選択したプロファイルの適用を解除します (プロファイル適用後の操作となります)
  3. Apply registered profile -- Papyrus に登録されているプロファイルを適用します

今回は Standard Profile の適用を考えるので3番目の Apply registered profile で説明します。 1つ目の Apply profile はユーザ作成プロファイルの説明を行う際にまた説明しようかと思いますが、 適用するプロファイルの選択方法だけの話なので、プロファイル適用後の各モデル要素へのステレオタイプ適用のやり方は同じです。

3つ目のボタン Apply registered profle (ボタン上にマウスをあてて少し時間をおけば本文字列が表示されます。 なおこのボタン上のアイコンが何を示しているのか、すみません、理解していません。。) をクリックします。 そうすると以下のダイアログが表示されます。

Eclipse Marketplace からどのような拡張機能を導入しているかにより表示されるプロファイルは異なりますが、 色々と魅力的なプロファイルが registered されているのかが見て取れます。

今回は Standard Profile の適用で進めていくので Standard と表示されているプロファイルを選択し OK をクリックします。 そうすると Profile applications が以下のように変化するかと思います。

これでモデルへのプロファイル適用は完了です。この後、モデル要素に対するステレオタイプ適用について説明します。

モデル要素に対するステレオタイプ適用

モデル要素に対するステレオタイプ適用はダイアグラムベースで行うことが多いかと思いますので、 ここではクラス図を元に説明します。今、以下のようなクラス成果物 (Artifact)、およびモデル (Model)が 作成されているとします。

ここでクラス (Class)に対してステレオタイプを適用するとします。 まずはクラス図上で本モデル要素 (クラス/Class) を選択し、その下の Propertiesタブの Profile を選択します。

Applyed stereotypeという表示になっているかと思います。 ここで[+]ボタン(Apply stereotype)をクリックします。 すると以下に示すダイアログが表示されます。

左側に対象とするモデル要素に適用可能なステレオタイプが表示されます。 どのモデル要素が対象となるかはステレオタイプ定義の際に規定してあるのですが、 前回のStandard Profileの記事の表では 適用先と表示された列が該当し、今回では Class と記載されたものが対象となります。

今回は «Auxiliary» を選択し、右向きの矢印(⇒)をクリックすることで Applied Stereotype に移動します。

そしてOKを押すと対象とするモデル要素にステレオタイプが適用された表示となります。

クラス図上で «Auxiliary» が適用されているのが見える化と思います。 また Propertiesタブの Profile の所にも選択したステレオタイプが表示されています。

ステレオタイプに属性が定義されている際には、この Properties/Profile の所で設定ができるのですが、 今回は特に指定されているものがないので説明を割愛します。 また自身でProfile定義を行った際に使い方、およびクラス図上での表示のさせ方を説明しようと思います。

同じく Artifact および Model のモデル要素にもステレオタイプを適用してみようと思います。 各々を選択して、同じく Applyed stereotype を選択するとArtifactおよびModelの順に以下のダイアログが表示されると思います。 モデル要素毎に適用可能なステレオタイプが選択されているのが見て取れます。

そして最終的にはこのようなステレオタイプを適用したモデル(クラス図)となりました。

細かな部分で説明をはしょりましたが、基本的なプロファイル適用操作はこのようになります。

2019/05/31

UML/Standard Profile

UMLでは幾つかの「標準プロファイル」が規定されています.

UML仕様書(2.5.1)では22章(Standard Profile) にあたります.

Papyrus でも Standard Profile はサポートされており,Software Designer でコード生成する際に Standard Profile にて規定のステレオタイプが必要になることもあります.

UML 2.5.1 仕様書に規定されている Standard Profile モデルとしては以下の図で示される33個ほどあります.

また Table 22.1 Description of the Stereotypes in the UML StandardProfile に,その詳細な説明が記載されています.以下参考として同内容を転記しておきます. なお34個記載されていますが,これは«Create»の適用先が2つあるためで,ステレオタイプの個数としては33個となります.

若干機械的に翻訳したため説明が分かりにくいものも多々ありますが,詳細な情報を確認し,適宜updateしていければと考えています.

Description of the Stereotypes in the UML StandardProfile
名前 適用先 説明
«Auxiliary» Class

通常,二次的なロジックまたはコントロールフローを実装することで,より中心的な別のクラスまたは基本クラスをサポートするクラス. 補助クラスは通常,フォーカスするクラスと一緒に使用され,設計中に二次的なビジネスロジックやコンポーネントの制御フローを指定する場合に特に便利. «Focus»も参照のこと.

«BuildComponent» Component

コンパイルやバージョン管理など,システムレベル開発活動の目的のために定義された要素の集合.

«Call» Usage

そのソースが操作であり,そのターゲットが操作である使用法の依存関係. この関係は,依存関係が適用されるクラス内に操作が存在するという意味で,操作を含むクラスに包含されることもある. コール依存関係は,ソース操作またはソースクラス内の操作が,ターゲット操作またはターゲットクラス内の操作を呼び出すことを指し示す. コール依存関係は,ソース操作を,範囲内にある任意のターゲット操作(これに限定されるものではないが,囲み分類器の操作および他の可視分類器の操作)に接続することができる.

«Create» Usage

クライアント分類子がサプライヤ分類子のインスタンスを作成することを示す使用依存関係.

«Create» BehavioralFeature

指定されたフィーチャが,フィーチャが関連付けられている分類子のインスタンスを作成することを指し示す.

«Derive» Abstraction

通常同じタイプのモデル要素間の派生関係を指定するが,必ずしもそうである必要はない. 派生した依存関係は,クライアントがサプライヤから計算されることを指し示す. マッピングは計算を指定する. クライアントは,たとえ論理的に冗長であっても,効率性などの設計上の理由で実装することができる.

«Destroy» BehavioralFeature

指定された機能が,その機能が接続されている分類子のインスタンスを破棄することを示す.

«Document» Artifact

人間が読める形式のファイル. «ファイル» のサブクラス.

«Entity» Component

ビジネスコンセプトを表す永続的な情報コンポーネント.

«Executable» Artifact

コンピュータシステム上で実行可能なプログラムファイル. «ファイル»のサブクラス.

«File» Artifact

開発システムのコンテキストにおける物理ファイル.

«Focus» Class

サポートする1​​つ以上の補助クラスのコアロジックまたはコントロールフローを定義するクラス. フォーカスクラスは,通常,1つ以上のAuxiliaryクラスとともに使用され, 設計中にコアとなるビジネスロジックやコンポーネントの制御フローを指定する場合に特に便利. «Auxiliary»を参照.

«Framework» Package

システムの全部または一部に対して再利用可能なアーキテクチャを指定するモデル要素を含むパッケージ. フレームワークには通常,クラス,パターン,またはテンプレートが含まれる. フレームワークがアプリケーションドメインに特化している場合, フレームワークはアプリケーションフレームワークと呼ばれることもある.

«Implement» Component

仕様自体を持たないことを意図したコンポーネント定義. むしろ依存性を持つ別個の「仕様」の実装.

«ImplementationClass» Class インスタンスが複数のクラスを持たないプログラミング言語(C++,Smalltalk,Javaなど)のクラス実装. これは,Classとは対照的である. インスタンスは,一度に複数のクラスを持ち,時間の経過とともにクラスを獲得したり 失ったりする可能性があり,オブジェクトは複数のクラスを動的に持つことがある. Implementationクラスは,Classifierのオペレーションに指定されたのと同じ振る舞いで, Classifierに対して定義されたすべてのオペレーションを提供する場合,Classifierを実現すると言われている. インプリメンテーション・クラスは,いくつかの異なるタイプを実現することができる. Implementationクラスの物理的属性および関連は,それが実現する任意のClassifierのものと同じである必要はなく, Implementation Classは,その物理的属性および関連性に関して操作のためのメソッドを提供することができる. «Type»も参照のこと.
«Instantiate» Usage

クライアント上の操作がサプライヤのインスタンスを作成することを示す分類子間の使用依存関係.

«Library» Artifact

静的または動的なライブラリーファイル. «File»のサブクラス.

«Metaclass» Class

インスタンスもクラスであるクラス.

«Metamodel» Model

いくつかのモデリング言語(たとえば,MOFモデル)のモデリング概念を指定するモデル. «Metaclass»を参照.

«ModelLibrary» Package

他のパッケージによって再利用されることを意図したモデル要素を含むパッケージ. いくつかのプログラミング言語では,クラスライブラリに類似している. モデルライブラリには,プロファイルおよびステレオタイプなど, 12.3節で指定されたメタモデル拡張メタクラスのインスタンスは含まれない場合がある. ただし,ProfileApplicationsおよびStereotypeアプリケーションが含まれている場合があり, モデルライブラリはしばしば適用されたプロファイルと共に使用される.

«Process» Component

トランザクションベースのコンポーネント.

«Realization» Classifier

オブジェクトのドメインを指定し,それらのオブジェクトの物理的な実装も定義する分類子. 例えば«Realization»によってステレオタイプ化されたコンポーネントは, 別個の«Specification»コンポーネントで指定された動作を実装する分類子を実現するのみ. «仕様»を参照. «ImplementationClass»は,システム設計者にとって有益な属性やメソッドなどの機能を持つことができるクラスの実現であるため, «ImplementationClass»とは異なります.

«Refine» Abstraction

異なる意味レベルでのモデル要素間の洗練された関係(分析や設計など)を指定. マッピングは,2つの要素または要素のセットの間の関係を指定する. マッピングは計算可能であってもなくてもよく,単方向または双方向であってもよい. リファインメントを使用し,分析から設計およびその他の変更に至るまでの変換をモデル化することができる.

«Responsibility» Usage

要素の他の要素との関係における契約または義務.

«Script» Artifact

コンピュータシステムによって解釈可能なスクリプトファイル. «File»のサブクラス.

«Send» Usage

オペレーションがシグナルを送信することを指定, クライアントがオペレーションでありサプライヤがシグナルである使用法.

«Service» Component

ステートレスで機能的なコンポーネント.

«Source» Artifact

実行可能ファイルにコンパイルできるソースファイル. «File»のサブクラス.

«Specification» Classifier

これらのオブジェクトの物理的な実装を定義せずにオブジェクトのドメインを指定する分類子. 例えば,«Specification»によってステレオタイプ化されたコンポーネントは,インタフェースを提供し, 必要とするだけであり,その定義の一部として実現クラスを持たないことを意図している. «Type»は,アナリストのモデリングシステムにとって有用な属性やメソッドなどの機能を持つことができるため, «Type»とは異なります. «Realization»を参照.

«Subsystem» Component

大規模システムにおける階層分解の単位. サブシステムは一般的に間接的にインスタンス化される. サブシステムの定義はドメインやメソッドによって大きく異なり, ドメインとメソッドのプロファイルがこの構造を特化することが期待される. サブシステムは,仕様と実現要素を持つように定義することができる. «Specification»と«Realization»を参照.

«SystemModel» Model

SystemModelは,同じシステムのモデルのコレクションを含むステレオタイプのモデル. SystemModelには異なるモデルに含まれるモデル要素間のすべての関係と制約も含まれる.

«Trace» Abstraction

異なるモデルで同じ概念を表すモデル要素またはモデル要素のセット間のトレース関係を指定する. トレースは,主にモデル間の要件と変更を追跡するために使用される. モデルの変更は両方向で発生する可能性があるため,依存関係の方向性はしばしば無視できる. マッピングは2つの間の関係を指定するが,ほとんど計算可能ではなく通常は形式でない.

«Type» Class

それらのオブジェクトの物理的な実装を定義することなく, オブジェクトに適用可能な操作と共にオブジェクトのドメインを指定するクラス. ただし属性と関連性を持つことがある. タイプ操作の動作仕様は,例えばアクティビティ図を用いて表現することができる. オブジェクトは実装クラスを最大で1つ持つことができるが,複数の異なる型に準拠することができる. «ImplementationClass»も参照.

«Utility» Class

インスタンスを持たないクラスで,属性と操作の名前付きコレクションを表す. これらはすべて静的である.

2019/04/09

Qiita からのリンク

最近 Qiita の記事からリンクを張っていただいたおかげで,そこからの来訪者の方が増えてきております.
OSSのUMLモデリングツールpapyrusを使ってみよう ~インストール編~
感謝です.

記事を起こされた背景をたどっていくと,なるほど  astah community版がなくなったことで,この先の技術教育で使用するツールをどうするか,というお話しなのですね.

あとは ETロボコンも絡むのですかね??

もしそうなら Papyrus SW Designer の記事もそろそろアップした方がよいのかしらんと思ったりしたりしています.

僕が Papyrus RCP を最新版に更新した際に Eclipse Market Place から入れるのが 「SysML Profile」と「Papyrus SW Designer」の2つですしね.

特に Papyrus SW Designer を入れると「C/C++」や「Java」や「MARTE」のプロファイルが入るので,それだけでも重宝するのではと思います.







SysML v2 について

最近,何故か知りませんが SysML v2 の blog ページへのアクセスが急増しています.

このページです

SYSML V2

どこで何があったのでしょうか?

逆にキーワードは聞こえてくるけども,なんら新しい情報が入ってこないので,このページにたどり着いておられるのかもしれませんね.

僕もあまり最近の情報は知らないのですが,直近で知って「へー」と思ったのが,このプレゼンです.2019-2-18との日付が打たれています:

SysML v2 and the Next Generation of Modeling Languages

Model Driven Solutions社の CTO である Ed. Seidewitz さんの資料で,概要も上記ページに記載されています.

へーと思うのが資料上にある以下の内容です:

  • SysML v2 will be based on a kernel metamodel, rather than UML.
  • The kernel semantics will be grounded in a declarative formalism.
  • Full language semantics will be specified using a semantic model library.
  • The SysML v2 specification will include a separate volume with a self-contained definition of the Kernel.
そして
  • It will be natural to build a other modeling languages on this rigorous foundation.
  • Will UML v3 be a profile of SysML v2?
とのことです.


なんということでしょう(笑)

なかなかの大作になりそうですね,SysML v2 は.

読まないといけないものが,また増えそうです ><

Vienna University of Technology でお話しされた内容の様でして,その概要が以下のページに記載されています:

SysML v2 and the Next Generation of Modeling Languages – Ed Seidewitz, February 18th, 4 p.m. Vienna
関連する部分を抜粋しますと,RFP(Request for Proposals) の発行後,
A year into this work, it is clear that SysML v2 needs to be more than just an expansion of the functional capabilities of SysML. Rather, it must address fundamental architectural issues that have made it difficult to further evolve SysML v1 to address the needs of its user community.
Therefore, the language is being re-designed using a new kernel metamodel with formally grounded semantics. This kernel can then be extended using semantic model libraries, rather than by expanding the language metamodel itself.
This approach will allow SysML v2 to be not only the modeling language for traditional systems engineering, but also the foundation for a whole new generation of modeling languages.
とのことです.

ちなみに  Ed. Seidewitz さんは以下の YouTube で解説されておられる方ですね:
Overview: UML® (Unified Modeling Language™) and SysML® (Systems Modeling Language™)

2019/04/04

MARTE 2.0 RFI

MARTE (UML Profile for Modeling and Analysis of RealTime and Embedded Systems version) の version 2.0 に向けた RFI (Request For Information) が発行されているのに気が付きました.
MARTE 2.0 RFI (OMGページ)
に RFI のドキュメントと Response list があります.

RFI ドキュメントに記載の Summary of this RFI では
Our goal is to modernize, enhance and integrate the embedded hardware and software model-based design and analysis frameworks that are enabled by MARTE with the opportunities that heavily distributed and intensive communication run time environments as well as other modern technologies offer nowadays. Since the inception of MARTE, 12 years ago, a number of OMG standards have emerged to improve the UML base semantics, and additional new analysis and design techniques as well as application domains (e.g., IoT and AI) for MARTE have appeared. Then, to drive the update of the language over the basis of the updated UML and its related standards, it is time to seek inputs from the community for potential enhancements and additions in the various domains in which MARTE could be used, and to account new design and analysis techniques that emerged in the meantime. 
The purpose of this RFI is to identify the community of interest and to identify potential stakeholders, along with their specific interests and needs. These will be used to prepare a roadmap for MARTE evolution and more specifically concrete requirements for MARTE 2.0.
とのことです.
詳細は上記のOMGホームページにて.

SysML2.0 のこともありますし,色々と動いていますね.

2019/03/27

Papyrus 2019-03 release (4.3.0)

ここ数ヶ月,本業がかなり忙しく,なかなかブログを更新できないままなのですが,
今日,ふと,

がリリースされていることに気づきました.

Eclipse の 2019-03 がリリースされたことに対応する版みたいです.

あまり最近,プロジェクト側で大きなアクティビティを感じてなく,

「2019-03 はスキップかな」

と思ってましたので,少し驚きでした.

ちなみにupdate内容は以下とのことです:

  • Diagram:clean some code that was not used anymore
  • Sequence diagram fix problem about fragment ordering
  • CDO:
    • add benchmark code for 
    • add aa way to add and edit easily CDO User

さほど目立った改善はなさそうですがシーケンス図は色々と問題を感じるので,改善され続けていくのは良いことですね.
色々とアグレッシブな改変を発生させるよりも,こういう着実な改善を進めることも,もちろんですが大事だと思います.

ダウンロードはこちらから.

なお前の 2018-12 リリースからそうですが 64bit 版のみです.

2019/01/12

Papyrus 2018-12 が12/19にリリースされたというニュースが公開されました :-)

少し妙なタイトルで始めてみました :-)

Papyrus 4.2.0 2018-12 がリリースされたというニュースが公開されました:
Papyrus 4.2.0 2018-12 Released 
Posted Dec 19, 2018 とのことです.

リリースに気づいていなかったわけではなく,POST自体はその日にされたのかもしれませんが今までずっと公開されていなかったわけで,ようやく公開された形です.

12月からリリースに向けた状況を Papyrus の Jenkins から確認していたのですが, 僕の認識だと実際のリリース予定日の12/19の直前にコミットされたコードからビルドに失敗するという状況が発生し,リリース予定日を超えそのまま2019に突入.最近,なんとか安定してきたので,ようやくニュースリリースを公開した,という様に思えます.

変更内容は Eclipse Papyrus 4.2.0 の詳細ページ に記載されています.

またダウンロードページに RCP 版も準備されています.前にアナウンスがあった通り64bit版のみ提供となっています.

いつもはすぐにでも試してみるのですが, Jenkins を見るとまだ All Clear という感じでもなさそうなので,ぼちぼちと試してみようと思います.

2018/12/05

Papyrus 2018-12 まであと2週間

最近,記事の投稿がおろそかになっています.
書きかけの記事は結構たまっているのですが,なかなか推敲が進みません.

少し気分をかえて,今月に予定されている次のリリースについてです.
次のリリース Papyrus 2018-12 は 12月19日に予定されています.
より詳しく言うとアメリカ東部時間での 12/19 10:00 でして,日本時間に換算すると確か14時間差なので 12/19 24:00,ようは 12/20 0:00 でしょうか.

なお上記日時は正確には Eclipse-2018-12 のリリース日なので,もしかしたら Papyrus 単体,特に RCP としての正式リリースは少し遅れるかもしれませんね.
Eclipse-2018-12のリリーススケジュールはここから確認できます.

最新の Weekly Problem Digest for Papyrus を見ると,大幅に Problem が減ってきているので,Papyrus-2018-12 リリースに向けて大きく対応がなされていると思います.

リリースが楽しみです.


2018/11/07

Model パッケージ

Papyrus でモデルファイルを作成し,そのモデルファイルをソフトウェアリポジトリ上で管理する場合,そのモデル記述は Papyrus プロジェクトフォルダ (Eclipse プロジェクトフォルダ)下の独立した3つのファイル:

  • .di
  • .notation
  • .uml

として保存されます.

これらは UML の仕様と同じく OMG で規定されたモデル記述やダイアグラム記述のファイルフォーマットであり,内部的には XML 形式のファイルです.

これらのファイル形式(仕様としては XMI 等)については,また記事をかければと思っていますが,全てテキストとして解釈可能なテキストファイル形式でありソフトウェアリポジトリ管理ツールと相性がいいです.

そのため,モデルの流用や再利用等を考え出すと,開発対象のモデルをどのようにモデルファイル管理に分割し,また,どのようにリポジトリ管理ツール上で連携させるかが重要になってくると思います.
理由は,そのファイル単位が独立して作成・修正またメンテナンスをする単位となるからです.

その整理(何かしらのカテゴライズかと思いますが)の仕方として何がよいかはまだ調べ切れていませんが,個人的には図書分類法が何かしらのヒントになるのでは,と思っています.

話しを戻すと,そのようにモデルファイル管理を考えた場合に,Papyrus で作成するモデルのトップが何になるか,というのが気になってきます.ようはその単位でモデルを作成していくことになるのですから.

Model Explorer で見た場合にルートになるノードで,アイコン表示としては通常のパッケージ要素の中に三角形が記載されたような図です(下図で Test と記載されている所).

これは UML のモデル要素における Model という名前のモデル要素になります.分かりづらいですが.
UMLにおける Model はパッケージであり,UML2.5.1 の仕様書では下記の抽象文法で定義されています:

そのため通常のパッケージと同じような扱いは出来ますが,そのプロパティとして文字列型の viewpoint なるものがあったりします.

UML仕様書上で Model に関する説明を見つけるのは,pdfをModelで検索してもひっかかるものが多いため難しいですが,UML 2.5.1 では
12.2.3.11 Model
に記載があります.

その内容は以下です.ほぼ直訳ですが,その説明にも色々な示唆が含まれています.UMLの仕様書はそれ自身,とても良い読み物だと個人的には思います.

  • モデルとはシステムの記述です.ここで「システム」とは最も広い意味をさしており,ソフトウェアやハードウェアだけでなく組織やプロセスも含まれます.
  • あるカテゴリのステークホルダー(例えばシステムの設計者,ユーザー,または顧客)による特定の視点(または観点)から,ある抽象レベルでシステムを記述します.
  • モデルは,その目的に関連する(すなわち,与えられた抽象化レベルおよび視点レベル内の)様相のみがモデルに表されますが,システム全体をカバーするという意味で完全です.
  • パッケージとして,モデルには,モデル化されるシステムを一緒に記述するメンバーのセットがあります.
  • これらの要素の構成は,使用されるモデリング方法によって異なります.
  • 1つのアプローチは,最上位のパッケージ/コンポーネントがシステムの境界を表すような,1つ以上のコンポジション階層であるものです.
  • モデルには,システムの環境の関連部分を記述する要素も含まれます.
  • 通常,環境はアクタとそのインタフェースによってモデル化されます.
  • これらはシステムの外部にあるため,パッケージ/コンポーネント階層の外側に存在します. 
  • それらは別のパッケージで収集されるか,またはpackagedElementsとしてモデルによって直接所有されることがあります. 
  • 同じシステムに対して異なるモデルを定義することができます. 異なるモデルは,通常,異なるシステム関係者の見通し(視点)から補完され定義されます. 
  • モデルの構成において,コンテナモデルは,含まれるモデルによって定義される異なるビューによって与えられるシステムの包括的なビューを表します. 
  • モデルは抽象化の依存関係を持つことができます:洗練(標準プロファイルの«Refine»によりステレオタイプ化)またはマッピング(例えば標準プロファイルの«Trace»でステレオタイプ化). 
  • これらは,通常,モデルに含まれる要素間の依存関係によってより詳細に表現されます. 
  • 異なるモデルの要素間の関係は,一般に,各モデルが完全であるため,モデルの内容に直接影響を与えません. 
  • ただしこれらは,詳細をトレースしたり,モデル間の相互参照を追跡したりするのに便利です. 


なお前の記事でも紹介したかと思いますが,Papyrus は UML の言語仕様にとても忠実で,仕様として規定されているものはだいたい記述可能です.今回の Model における viewpoint のように使用頻度が少ないものは通常のPropertiesメニューには現れませんが,その Advanced の所で入力できることが多いです.今回の Model においても,viewpoint は Advanced の所で入力可能です.



2018/11/04

Papyrus/Eclipse の Simultaneous Release

以下の投稿から:
[mdt-papyrus.dev] Oomph Setup for New Release Cadence

Papyrus は Eclipse の 同時配信(Simultaneous Release)のスキームに従っており,次のリリースはこの12月です.

Eclipse の Simultaneous Release がどういうものかについては以下のページにて説明されています:
Simultaneous Release

簡単にいうと四半期(13週)ごとにローリングリリースされるモデルです.
これまでは年に一回6月のリリースでプラットフォームのマイナーバージョンアップがなされ:
Neonは4.6,Oxygenは4.7,Photonは4.8
それ以降のリリースである Oxygen.1 の様なサブマイナーの改善的なバージョンアップであったものと異なり,四半期毎の各リリースでプラットフォームのマイナーバージョンがアップされていきます.
それもあって,リリース名がこれまでのアルファベット順のコードネームから年月で規定される名前に変更されているみたいです.

なおこの先の予定は以下となります:

  • 2018-09 (現)/プラットフォームバージョン 4.9/ 2018年9月19日リリース
  • 2018-12 (次) / プラットフォームバージョン 4.10/ 2018年12月19日リリース予定
  • 2019-03 / プラットフォームバージョン 4.11/ 2019年3月リリース予定

2018/10/24

Papyrus における登録済パッケージのインポート

Papyrus 上でモデル作成を行っている際,作成した他パッケージのモデルを使用したり,すでに Papyrus に登録済のプロファイル内で定義されている他パッケージを使用したいことがあります.
これをうまく使うと,様々なモデル定義(モデルファイル)を効率的に分割して作成・管理でき,また再利用も容易となるため,モデルベースの開発を効率的に行うことが可能となります.

今回はその様なケースにおいて
「すでに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
の3種類があることが分かります.

これらの意味(挙動)の違いは以下となります.
  • 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 定義の中身がどうなっているかを確認したいケースではこのモデルのインポートは大変役に立ちます.


Papyrus が起動しない / Java VM

Papyrus-2018.9 を起動しようとしたら起動しなくなりました...

エラーを告げるダイアログがいっぱい出てきます.

Error: opening registry key 'Software\JavaSoft\JRE
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment

これらは Java Virtual Machine Launcher が出しているものですね.
この後に Eclipse 自体のエラー出力が表示されます.
タイトルには Papyrus と表示されていますがベースとなる Eclipse そのもののエラーです.

Java was started but returned exit code=2
Papyrus(Eclipse)が使用している JavaVM に問題があるとのことですが,さて何かしたかしらん,と考えてみると,そいえば少し前に Java の update が表示され対応したことを思い出しました.
確かにいつもとは違うアップデート画面で,インストールされているものを削除するという手順があったため,色々と削除したことを思い出しました.
Javaはほっておくと色々なバージョンがインストールされてしまうため,古い奴を消してくれる便利機能でも追加されたのかなと深く考えなかったのですが,どうやら違ったみたいです :-)

コマンドプロンプトをあげて javaw.exe や javac.exe をたたいてみても,同じようなメッセージがテキストで表示されました:
c:\Eclipse\papyrus-2018-09-4.1.0-win64\Papyrus>java
Error: opening registry key 'Software\JavaSoft\JRE'
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.

さてはてと考えていると,ふと先日, Oracle がJavaのライセンスやリリースモデルを変更するってニュースリリースしてたなぁ,と思い出しました.詳細はここに書いてあるものです:
JDKの新しいリリース・モデルおよび提供ライセンスについて
まぁ今もちゃんと読んではいませんが,ようは無償で使う場合には今後は OpenJDK を使ってね,ということでしょうかね(笑).
Linux環境では OpenJDK を普通に使っているのですが,Windowsでは Oracle JDK をこれまでずっと使っていました.
今回は Oracle JDK から OpenJDK に移行しないといけない状況での不連続点なのかもしれません.

確かに Eclipse/Papyrus を動作させる際,Windows下で使用される JavaVM の問題が発生したこともあり,どうしてもJavaVMを固定化したい場合には Eclipse/Papyrus のインストールフォルダの下に `jreフォルダ' を作成し,そこに JavaVM をコピーして使ったりしていました.もしくは Eclipse の ini ファイルを編集して,使用する JavaVM を固定化したりと.前者は複数人で同じ環境を使う場合(Eclipse/Papyrus環境を配布したりする場合),後者は自分単独で使う場合の対応として使い分けています.

感覚的にはそのような状況と同じような対応をすれば良いかなと.

では,と,OpenJDKをインストールします.
OpenJDK は jdk.java.net からダウンロードできます.現時点での最新版は以下のページから入手可能です:
Java Platform, Standard Edition 11 Reference Implementations

これまでの .exe 形式のインストーラではなく .zip での配布ですね.個人的にはどっちでも,です.

ファイル
openjdk-11+28_windows-x64_bin.zip
をダウンロードし,以下のように C:\OpenJDK フォルダの下で展開しました:


その後,Papyrus のインストールフォルダに行き,ファイル papyrus.ini に以下のように使用する JavaVM を陽に指定しました(赤色の太字の所).
-vm
C:\OpenJDK\jdk-11\bin\javaw.exe
-startup
plugins/org.eclipse.equinox.launcher_1.5.100.v20180827-1352.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.800.v20180827-1352
-showsplash
org.eclipse.papyrus.rcp
--launcher.XXMaxPermSize
512m
--launcher.defaultAction
openFile
-vmargs
-Xms256m
-Xmx900m
-Dosgi.bundlefile.limit=200
赤色の太字以外は元々の設定です.
もしかしたらメモリ関係の設定値を増やしているやもしれませんが忘れました(笑)

これで再度 Papyrus を実行すると,無事に起動しました.