ocl in papyrus introduction

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

Upload: akira-tanaka

Post on 28-May-2015

1.034 views

Category:

Technology


2 download

DESCRIPTION

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

TRANSCRIPT

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