44
OCL in Papyrus UML 田中 ビューファイブ LLC

OCL in Papyrus Introduction

Embed Size (px)

DESCRIPTION

2013.10.03 に開催した Eclipse Modeling 勉強会の資料。

Citation preview

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  は別グループのため、反映されるまで時差有り