OCL	
  in	
  Papyrus	
  UML	
	
  
田中	
  
ビューファイブ	
  LLC
OCL	
  概要	
•  OCL	
  
– Object	
  Constraint	
  Language (UML	
  の一部)	
  
– グラフィカルに表現された	
  UML	
  モデルやメタモデ
ルに追加するテキスト形式の制約記述言語	
  
•  機能	
  
– モデル要素からの値の読み出し	
  
– 関連するモデル要素をナビゲート	
  
– モデル要素のコレクションに対する操作	
  
– 標準的なデータ型・コレクション型・各種操作 等	
  
OCL	
  リソース	
•  標準仕様	
  
–  OMG:	
  h:p://www.omg.org/spec/OCL/	
  
–  バージョン:	
  2.3.1	
  が公開されている最新版	
  
•  この版が	
  ISO	
  に	
  PAS	
  提案され	
  ISO/IEC	
  19507	
  となっている	
  
•  実装	
  
–  各種商用	
  UML	
  ツールで実装	
  
•  ツールの機能説明ページなどで確認下さい	
  
–  オープン実装	
  
•  Eclipse	
  OCL	
  (大島さんが紹介されたもの)	
  
•  Eclipse	
  Papyrus	
  (Eclipse	
  OCL	
  を	
  UML	
  Tool	
  にインテグレート)	
  
•  Dresden	
  OCL	
  (h:p://www.dresden-­‐ocl.org/) など	
  
•  書籍	
  
–  「オブジェクト制約言語	
  OCL」	
  by	
  Jos	
  Warmer,	
  Anneke	
  Kleppe
モデル階層と OCL	
Meta-­‐meta	
  model	
Metamodel	
Model	
Instance	
  or	
  Object	
  Model	
Instance	
  of	
conform	
  to	
conform	
  to	
MOF	
  (CMOF,	
  EMOF/ecore)	
e.g.	
  UML,	
  SOA,	
  BPMN,	
  …	
e.g.	
  UML	
  models,	
  SOA	
  models,	
  
BPMN	
  models,	
  …	
M3	
M2	
M1	
M0	
Constrants	
  (OCL)	
Constraints	
  (OCL)	
UML	
  Profiles	
OCL	
  適用領域(M1,	
  M2)
UML	
  ツールの利用	
•  モデル階層と	
  OCL	
  における	
  UML	
  ツール利用	
  
– Metamodel	
  
•  UML	
  Class	
  Diagram	
  のサブセットで記述	
  
•  Metamodel	
  に基づく	
  UML	
  Profile	
  の定義	
  
– Model	
  
•  制約を持ったstereotype	
  を適用したモデル要素にはそ
の制約が適用	
  
– Instance	
  or	
  Object	
  Model	
  
•  制約を持ったモデル要素のインスタンスにはその制約
が適用
Papyrus	
  UML	
  紹介	
•  Papyrus	
  
– Eclipse	
  Project	
  としては唯一の	
  UML	
  Tool	
  
– プロジェクトページ:
h:p://www.eclipse.org/papyrus/	
  
– 特徴	
  
•  ほぼすべての	
  UML2	
  ダイアグラムをカバー	
  
•  UML	
  Profile	
  定義のサポート	
  
•  Eclipse	
  OCL	
  インテグレーション	
  
Papyrus	
  UML	
  紹介	
h:p://www.eclipse.org/papyrus/	
  
Papyrus	
  UML	
  の OCL	
  サポート状況 	
•  M2	
  レベルで定義	
  &	
  M1	
  レベルに適用	
  
– UML	
  Profile	
  に	
  OCL	
  で記述した制約を含め、その
UML	
  Profile	
  を適用した	
  UML	
  モデルの妥当性検
証	
  
•  Papyrus	
  での動作を確認(例外有:詳細は以降で説明)	
  
•  M1	
  レベルで定義	
  &	
  M0	
  レベルに適用	
  
– UML	
  モデルに OCL	
  で記述した制約を含め、M0	
  
レベル(インスタンスモデル)で妥当性検証	
  
•  Papyrus	
  では現状動作せず	
  
Papyrus	
  UML	
  の OCL	
  サポート状況 	
出来るはずと思い	
  forum	
  に質問	
現状では出来ないとの回答
Papyrus	
  UML	
  インストール	
•  インストール手順	
  
– Eclipse	
  Modeling	
  Package	
  のダウンロード	
  
– Help	
  -­‐>	
  Install	
  Modeling	
  Components	
  
– Install	
  &	
  Restart	
  
✔
Papyrus	
  UML	
  インストール	
•  設定に関する注意事項	
  
Papyrus	
  UML	
  使い方	
•  プロジェクト作成	
  
– File	
  -­‐>	
  New	
  -­‐>	
  ([Other	
  |	
  Project]	
  -­‐>)	
  Papyrus	
  
Project	
  
– Project	
  名(例:org.example.uml.profile)	
  
– Diagram	
  Language	
  選択	
  
•  Profile	
  –	
  UML	
  Profile	
  作成	
  
•  UML	
  –	
  UML	
  Diagram	
  作成 (UML	
  Profile	
  を適用)	
  
Papyrus	
  UML	
  使い方	
•  UML	
  Profile	
  プロジェクト作成
Papyrus	
  UML	
  使い方	
•  UML	
  Profile	
  作成	
ダイアグラム名	
UML	
  Profile	
  ダイアグラム	
基本データ型テンプレート	
✔	
✔
Papyrus	
  UML	
  使い方	
•  UML	
  Profile	
  編集画面
Papyrus	
  UML	
  使い方	
•  Stereotype	
  と	
  Meta-­‐Class
Papyrus	
  UML	
  使い方	
•  OCL	
  Constraint	
  (1/2)	
一旦	
  Pop-­‐up	
  エディタをキャンセルし	
  
制約リンクを設定	
制約の	
  Property	
  で	
  
Context	
  設定
Papyrus	
  UML	
  使い方	
•  OCL	
  Constraint	
  (2/2)	
コンテキストメニューから	
  	
  
OCL	
  制約エディタを選択	
OCL	
  制約を記述
Papyrus	
  UML	
  使い方	
•  UML	
  Profile	
  定義画面(サンプル)
Papyrus	
  UML	
  使い方	
•  UML	
  Profile	
  の保存
Papyrus	
  UML	
  使い方	
•  UML	
  Profile	
  保存画面	
このチェックを忘れないこと
Papyrus	
  UML	
  使い方	
•  UML	
  Profile	
  保存完了画面
Papyrus	
  UML	
  使い方	
•  プロジェクト作成	
  
– File	
  -­‐>	
  New	
  -­‐>	
  ([Other	
  |	
  Project]	
  -­‐>)	
  Papyrus	
  
Project	
  
– Project	
  名(例:org.example.uml)	
  
– Diagram	
  Language	
  選択	
  
•  UML	
  –	
  UML	
  Diagram	
  作成	
  
Papyrus	
  UML	
  使い方	
•  UML	
  Diagram	
  作成	
  
ダイアグラム名	
作成予定のダイアグラム種別選択	
  
(ここでは例として	
  Class	
  図)	
基本データ型テンプレート	
✔	
✔
Papyrus	
  UML	
  使い方	
•  Class	
  Diagram	
  作成用初期画面
Papyrus	
  UML	
  使い方	
•  UML	
  Profile	
  利用準備	
白紙エリアをクリックし	
  Property	
  
の	
  Profile	
  タブを選択	
適用	
  Profile	
  を追加
Papyrus	
  UML	
  使い方	
•  UML	
  Profile	
  利用準備	
先ほど作成した	
  Profile	
  ファイルを選択
Papyrus	
  UML	
  使い方	
•  UML	
  Profile	
  利用準備	
Profile	
  ファイルを選択
Papyrus	
  UML	
  使い方	
•  Class	
  Diagram	
  の作成と	
  stereotype	
  適用	
各クラスにステレオタイプを適用
Papyrus	
  UML	
  使い方	
•  Stereotype	
  の属性値設定	
各属性に値を与える必要があります
Papyrus	
  UML	
  使い方	
•  Model	
  Validafon	
  実行	
モデル領域の右クリックで呼
び出したメニュー
Papyrus	
  UML	
  使い方	
•  Model	
  Validafon	
  実行結果	
OCL	
  の制約に違反したというエラーメッセージ
Papyrus	
  UML	
  使い方	
•  Console	
  表示(Window	
  -­‐>	
  Show	
  View)
Papyrus	
  UML	
  使い方	
•  Interacfve	
  Xtext	
  OCL	
  選択
Papyrus	
  UML	
  使い方	
•  Context	
  設定(対象をクリック)	
 これをクリック
Papyrus	
  UML	
  使い方	
•  OCL	
  文の投入・評価実行
Papyrus	
  UML	
  使い方	
•  Pale:e	
  Customizafon	
Diagram	
  Editor	
  Pale4e	
  Customiza7on	
  @	
  h4p://wiki.eclipse.org/Papyrus_User_Guide	
  
まだ出来ないこと	
参考:h:p://www.eclipse.org/forums/index.php/t/449362/	
モデル作成時にアソシエーション
を設定し	
  stereotype	
  を適用するが、
そのタイミングでは評価されず	
  
validate	
  を実行することで評価が
実行されエラー表示がなされる。	
現状ではまだ実装に反映されてい
ないケース
まだ出来ないこと	
•  Bug	
  398333	
  -­‐	
  [pivot]	
  A	
  stereotype	
  test	
  case:
まだ出来ないこと	
•  Code	
  Generafon	
  
–  (出来るとすると)次の手順で出来るはず	
  
•  model.di	
  のコンテキストメニューから新規	
  EMF	
  プロジェクトの作成	
  
–  作成手順のなかで	
  UML	
  モデルをベースとして指定	
  
•  作成した	
  EMF	
  プロジェクトには次が含まれる	
  
–  Ecore	
  ファイル	
  
–  Genmodel	
  ファイル	
  
•  Genmodel	
  ファイルを EMF	
  Generator	
  でオープン	
  
–  ルートパッケージのコンテキストメニューから、モデルコード生成を
選択	
  
•  Ed	
  さんの	
  Forum	
  の書き込みからは	
  OCL	
  を含んだモデルも
処理出来そうですが、試した版ではOCLが捨てられました
基本的な使い方説明	
UML	
  Profile	
  の使い方説明	
Source:	
  h:p://www.eclipse.org/papyrus/usersTutorials/usersTutorialsIndex.php	
  	
Papyrus	
  &	
  Profile	
  リソース
Papyrus	
  &	
  OCL	
  リソース	
•  Papyrus	
  ドキュメンテーション	
  
–  最も分かり易いのは	
  Help	
  ファイル	
Profile	
  について
はこのあたり	
h:p://www.eclipse.org/forums/index.php/f/121/	
そして	
  Forum
Papyrus	
  &	
  OCL	
  リソース	
•  OCL	
  ドキュメンテーション	
  
–  やはり	
  Help	
  ファイル	
  
この部分
まとめ	
•  Papyrus	
  での	
  OCL	
  利用	
  
–  現状では	
  UML	
  Profile	
  に OCL	
  で制約を記述し、M1	
  レベル
のモデル作成時の	
  Model	
  Validafon	
  に利用可能	
  
•  OCL	
  による制約である程度	
  UML	
  モデルチェックが出来る	
  
•  UML	
  モデルで	
  Interacfve	
  Xtext	
  OCL	
  Console	
  が利用出来る	
  
•  Associafon	
  の拡張	
  +	
  OCL	
  制約は現時点で未サポート	
  
–  現状では	
  M1	
  のモデルに適用しても、M0	
  の
InstanceSpecificafon	
  には有効に適用出来ていない	
  
	
  
•  その他	
  
–  Eclipse	
  内で	
  OCL	
  と	
  Papyrus	
  は別グループのため、反映されるまで時差有り

OCL in Papyrus Introduction

  • 1.
    OCL  in  Papyrus  UML   田中   ビューファイブ  LLC
  • 2.
    OCL  概要 •  OCL   – Object  Constraint  Language (UML  の一部)   – グラフィカルに表現された  UML  モデルやメタモデ ルに追加するテキスト形式の制約記述言語   •  機能   – モデル要素からの値の読み出し   – 関連するモデル要素をナビゲート   – モデル要素のコレクションに対する操作   – 標準的なデータ型・コレクション型・各種操作 等  
  • 3.
    OCL  リソース •  標準仕様   –  OMG:  h:p://www.omg.org/spec/OCL/   –  バージョン:  2.3.1  が公開されている最新版   •  この版が  ISO  に  PAS  提案され  ISO/IEC  19507  となっている   •  実装   –  各種商用  UML  ツールで実装   •  ツールの機能説明ページなどで確認下さい   –  オープン実装   •  Eclipse  OCL  (大島さんが紹介されたもの)   •  Eclipse  Papyrus  (Eclipse  OCL  を  UML  Tool  にインテグレート)   •  Dresden  OCL  (h:p://www.dresden-­‐ocl.org/) など   •  書籍   –  「オブジェクト制約言語  OCL」  by  Jos  Warmer,  Anneke  Kleppe
  • 4.
    モデル階層と OCL Meta-­‐meta  model Metamodel Model Instance  or  Object  Model Instance  of conform  to conform  to MOF  (CMOF,  EMOF/ecore) e.g.  UML,  SOA,  BPMN,  … e.g.  UML  models,  SOA  models,   BPMN  models,  … M3 M2 M1 M0 Constrants  (OCL) Constraints  (OCL) UML  Profiles OCL  適用領域(M1,  M2)
  • 5.
    UML  ツールの利用 •  モデル階層と  OCL  における  UML  ツール利用   – Metamodel   •  UML  Class  Diagram  のサブセットで記述   •  Metamodel  に基づく  UML  Profile  の定義   – Model   •  制約を持ったstereotype  を適用したモデル要素にはそ の制約が適用   – Instance  or  Object  Model   •  制約を持ったモデル要素のインスタンスにはその制約 が適用
  • 6.
    Papyrus  UML  紹介 • Papyrus   – Eclipse  Project  としては唯一の  UML  Tool   – プロジェクトページ: h:p://www.eclipse.org/papyrus/   – 特徴   •  ほぼすべての  UML2  ダイアグラムをカバー   •  UML  Profile  定義のサポート   •  Eclipse  OCL  インテグレーション  
  • 7.
  • 8.
    Papyrus  UML  のOCL  サポート状況 •  M2  レベルで定義  &  M1  レベルに適用   – UML  Profile  に  OCL  で記述した制約を含め、その UML  Profile  を適用した  UML  モデルの妥当性検 証   •  Papyrus  での動作を確認(例外有:詳細は以降で説明)   •  M1  レベルで定義  &  M0  レベルに適用   – UML  モデルに OCL  で記述した制約を含め、M0   レベル(インスタンスモデル)で妥当性検証   •  Papyrus  では現状動作せず  
  • 9.
    Papyrus  UML  のOCL  サポート状況 出来るはずと思い  forum  に質問 現状では出来ないとの回答
  • 10.
    Papyrus  UML  インストール • インストール手順   – Eclipse  Modeling  Package  のダウンロード   – Help  -­‐>  Install  Modeling  Components   – Install  &  Restart   ✔
  • 11.
    Papyrus  UML  インストール • 設定に関する注意事項  
  • 12.
    Papyrus  UML  使い方 • プロジェクト作成   – File  -­‐>  New  -­‐>  ([Other  |  Project]  -­‐>)  Papyrus   Project   – Project  名(例:org.example.uml.profile)   – Diagram  Language  選択   •  Profile  –  UML  Profile  作成   •  UML  –  UML  Diagram  作成 (UML  Profile  を適用)  
  • 13.
    Papyrus  UML  使い方 • UML  Profile  プロジェクト作成
  • 14.
    Papyrus  UML  使い方 • UML  Profile  作成 ダイアグラム名 UML  Profile  ダイアグラム 基本データ型テンプレート ✔ ✔
  • 15.
    Papyrus  UML  使い方 • UML  Profile  編集画面
  • 16.
    Papyrus  UML  使い方 • Stereotype  と  Meta-­‐Class
  • 17.
    Papyrus  UML  使い方 • OCL  Constraint  (1/2) 一旦  Pop-­‐up  エディタをキャンセルし   制約リンクを設定 制約の  Property  で   Context  設定
  • 18.
    Papyrus  UML  使い方 • OCL  Constraint  (2/2) コンテキストメニューから     OCL  制約エディタを選択 OCL  制約を記述
  • 19.
    Papyrus  UML  使い方 • UML  Profile  定義画面(サンプル)
  • 20.
    Papyrus  UML  使い方 • UML  Profile  の保存
  • 21.
    Papyrus  UML  使い方 • UML  Profile  保存画面 このチェックを忘れないこと
  • 22.
    Papyrus  UML  使い方 • UML  Profile  保存完了画面
  • 23.
    Papyrus  UML  使い方 • プロジェクト作成   – File  -­‐>  New  -­‐>  ([Other  |  Project]  -­‐>)  Papyrus   Project   – Project  名(例:org.example.uml)   – Diagram  Language  選択   •  UML  –  UML  Diagram  作成  
  • 24.
    Papyrus  UML  使い方 • UML  Diagram  作成   ダイアグラム名 作成予定のダイアグラム種別選択   (ここでは例として  Class  図) 基本データ型テンプレート ✔ ✔
  • 25.
    Papyrus  UML  使い方 • Class  Diagram  作成用初期画面
  • 26.
    Papyrus  UML  使い方 • UML  Profile  利用準備 白紙エリアをクリックし  Property   の  Profile  タブを選択 適用  Profile  を追加
  • 27.
    Papyrus  UML  使い方 • UML  Profile  利用準備 先ほど作成した  Profile  ファイルを選択
  • 28.
    Papyrus  UML  使い方 • UML  Profile  利用準備 Profile  ファイルを選択
  • 29.
    Papyrus  UML  使い方 • Class  Diagram  の作成と  stereotype  適用 各クラスにステレオタイプを適用
  • 30.
    Papyrus  UML  使い方 • Stereotype  の属性値設定 各属性に値を与える必要があります
  • 31.
    Papyrus  UML  使い方 • Model  Validafon  実行 モデル領域の右クリックで呼 び出したメニュー
  • 32.
    Papyrus  UML  使い方 • Model  Validafon  実行結果 OCL  の制約に違反したというエラーメッセージ
  • 33.
    Papyrus  UML  使い方 • Console  表示(Window  -­‐>  Show  View)
  • 34.
    Papyrus  UML  使い方 • Interacfve  Xtext  OCL  選択
  • 35.
    Papyrus  UML  使い方 • Context  設定(対象をクリック) これをクリック
  • 36.
    Papyrus  UML  使い方 • OCL  文の投入・評価実行
  • 37.
    Papyrus  UML  使い方 • Pale:e  Customizafon Diagram  Editor  Pale4e  Customiza7on  @  h4p://wiki.eclipse.org/Papyrus_User_Guide  
  • 38.
    まだ出来ないこと 参考:h:p://www.eclipse.org/forums/index.php/t/449362/ モデル作成時にアソシエーション を設定し  stereotype  を適用するが、 そのタイミングでは評価されず   validate  を実行することで評価が 実行されエラー表示がなされる。 現状ではまだ実装に反映されてい ないケース
  • 39.
    まだ出来ないこと •  Bug  398333  -­‐  [pivot]  A  stereotype  test  case:
  • 40.
    まだ出来ないこと •  Code  Generafon   –  (出来るとすると)次の手順で出来るはず   •  model.di  のコンテキストメニューから新規  EMF  プロジェクトの作成   –  作成手順のなかで  UML  モデルをベースとして指定   •  作成した  EMF  プロジェクトには次が含まれる   –  Ecore  ファイル   –  Genmodel  ファイル   •  Genmodel  ファイルを EMF  Generator  でオープン   –  ルートパッケージのコンテキストメニューから、モデルコード生成を 選択   •  Ed  さんの  Forum  の書き込みからは  OCL  を含んだモデルも 処理出来そうですが、試した版ではOCLが捨てられました
  • 41.
    基本的な使い方説明 UML  Profile  の使い方説明 Source:  h:p://www.eclipse.org/papyrus/usersTutorials/usersTutorialsIndex.php   Papyrus  &  Profile  リソース
  • 42.
    Papyrus  &  OCL  リソース •  Papyrus  ドキュメンテーション   –  最も分かり易いのは  Help  ファイル Profile  について はこのあたり h:p://www.eclipse.org/forums/index.php/f/121/ そして  Forum
  • 43.
    Papyrus  &  OCL  リソース •  OCL  ドキュメンテーション   –  やはり  Help  ファイル   この部分
  • 44.
    まとめ •  Papyrus  での  OCL  利用   –  現状では  UML  Profile  に OCL  で制約を記述し、M1  レベル のモデル作成時の  Model  Validafon  に利用可能   •  OCL  による制約である程度  UML  モデルチェックが出来る   •  UML  モデルで  Interacfve  Xtext  OCL  Console  が利用出来る   •  Associafon  の拡張  +  OCL  制約は現時点で未サポート   –  現状では  M1  のモデルに適用しても、M0  の InstanceSpecificafon  には有効に適用出来ていない     •  その他   –  Eclipse  内で  OCL  と  Papyrus  は別グループのため、反映されるまで時差有り