Upload
akira-tanaka
View
1.034
Download
2
Embed Size (px)
DESCRIPTION
2013.10.03 に開催した Eclipse Modeling 勉強会の資料。
Citation preview
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 の OCL サポート状況
• M2 レベルで定義 & M1 レベルに適用 – UML Profile に OCL で記述した制約を含め、そのUML Profile を適用した UML モデルの妥当性検証 • Papyrus での動作を確認(例外有:詳細は以降で説明)
• M1 レベルで定義 & M0 レベルに適用 – UML モデルに OCL で記述した制約を含め、M0
レベル(インスタンスモデル)で妥当性検証 • Papyrus では現状動作せず
Papyrus UML インストール
• インストール手順 – Eclipse Modeling Package のダウンロード – Help -‐> Install Modeling Components
– Install & Restart
✔
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 使い方
• プロジェクト作成 – File -‐> New -‐> ([Other | Project] -‐>) Papyrus Project
– Project 名(例:org.example.uml) – Diagram Language 選択
• UML – UML Diagram 作成
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 を実行することで評価が実行されエラー表示がなされる。
現状ではまだ実装に反映されていないケース
まだ出来ないこと
• 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 利用 – 現状では UML Profile に OCL で制約を記述し、M1 レベル
のモデル作成時の Model Validafon に利用可能 • OCL による制約である程度 UML モデルチェックが出来る • UML モデルで Interacfve Xtext OCL Console が利用出来る • Associafon の拡張 + OCL 制約は現時点で未サポート
– 現状では M1 のモデルに適用しても、M0 の InstanceSpecificafon には有効に適用出来ていない
• その他
– Eclipse 内で OCL と Papyrus は別グループのため、反映されるまで時差有り