OCL in Papyrus Introduction

1,647 views
1,426 views

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,647
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

OCL in Papyrus Introduction

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

×