UMLメタモデル仕様とOCL制約 に基づくUMLモデル検証環境 の生成 大阪大学 浜口 優,長井 栄吾,松下 誠,岡野 浩三, 楠本 真二,井上 克郎 NTTデータ 我妻 智之,梅村 晃広 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 2007/10/20 ESS2007 1 概要 仕様の変更に柔軟に対応可能なUMLモデル検 証環境を自動生成する手法を提案 モデル駆動型開発を支援するフレームワークを用い て、UMLモデル検証環境のソースコードを自動生成 支援ツールを作成 生成するUMLモデルと制約を管理 クラス図とシーケンス図間の整合性検証に適用 して実験的に評価 ESS2007 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 2 研究背景 モデル駆動開発(Model-Driven Development, MDD) 対象に関する知識を「モデル」に変換して行うソフトウェア開発手法 UML(Unified Modeling Language) オブジェクト指向システム開発における表記法 工程3 工程2 工程1 修正・ 詳細化 a. 各工程において、修正・詳細化 ⇒ 工程間で不整合が発生 修正・ 詳細化 b. 複数の視点から複数の図を記述 (完全に独立していない) ⇒ 工程内で不整合が発生 ⇒ UMLダイヤグラム間の整合性を保つことが必要 ESS2007 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 3 不整合の例 クラス図とシーケンス図間の不整合例 ビデオオンデマンド(VOD)システム[1] 不整合1: 呼び出し先メソッドが 存在しない 不整合2: メッセージの方向と 関連が不一致 [1] A. Egyed, Fixing Inconsistencies in UML Design Models, In Proc. of ICSE2007 ESS2007 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 4 既存研究 UMLモデルの仕様に対して整合性ルールを付加して検証 整合性ルールにOCL制約式を利用 USE,OCLE etc.. 整合性ルールに独自の制約式を利用 UML/Analyzer etc.. 仕様 整合性ルール UMLメタモデル インスタンス化 利点 UMLモデルA インスタンス化 検証処理系 UMLモデルB 同一仕様に基づく任意のUMLモデルに対して整合性検証が可能 ESS2007 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 5 UMLメタモデル UMLについてのUMLモデル M3 MOF インスタンス化 モデル要素 名前 M2 UMLメタモデル インスタンス化 特徴 * 分類子 M1 UMLモデル インスタンス化 属性 操作 インターフェイス クラス 簡略化したUML メタモデル(クラス図に関係する部分) ESS2007 M0 ユーザオブジェクト UMLのメタモデル4層 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 6 OCL(Object Constraint Language) UMLモデル内のモデル要素に対して制約を与えるため に導入された制約記述言語 クラスの詳細仕様を決定 context ClassA inv: self.name = ‘client’ 第一階述語論理に基づく 論理式 (真ならば制約を満たす) OCL式記述例 インスタンス化 OCL式 クラス インスタンス 不変表明 事前事後条件 派生属性値の設定 etc…. OCL式の記述通りの動作 ESS2007 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 7 既存研究の問題点 既存研究ではUMLメタモデルの変更に対応できない 頻繁なバージョンチェンジを行うUMLメタモデルに逐一対応する必要あり 過去の設計資産(UMLダイアグラム)の再利用が困難 ドメインに特化したUMLメタモデルに対応できない UMLメタモデルB 変更不可 UMLメタモデルA 整合性ルール 整合性 ルール 変更不可 UMLメタモデルC インスタンス化 インスタンス化 整合性 ルール UMLモデルA ESS2007 検証処理系 UMLモデルB 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 8 研究内容 本研究の目的 UMLメタモデルの変更に柔軟に対応した UMLダイアグラム間整合性検証環境の生成 変更可 整合性 ルール UMLメタモデルA 整合性ルール UML メタモデルB 変更可 インスタンス化 整合性 ルール インスタンス化 UML メタモデルC UMLモデルA ESS2007 検証処理系 UMLモデルB 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 9 方針 研究目的を達成するために必要な機能 UMLメタモデルの編集機能 UMLモデルの編集機能 …EMF 検証処理系 …EMFT_OCL 既存のモデリングフレームワークを応用 EMF(Eclipse Modeling Framework)を応用 UMLモデル階層とEMFモデル階層の対応付け ESS2007 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 10 EMF(Eclipse Modeling Framework) モデル記述とコード生成のためのフレームワーク モデル駆動型アーキテクチャ(MDA)をサポート MDAに基づいて、Ecoreモデルからモデルの M2 インスタンス編集環境をコード生成 Essential MOF インスタンス化 Ecoreモデル(PIM) XMI形式に基づく木構造で管理 インスタンス インスタンス間の関連 木構造に基づくユーザインターフェース M1 自動変換 EMFモデル(PSM) コード生成 M0 インスタンス化 モデルの インスタンス編集環境 EMFのメタモデル3層 ⇒ Ecoreモデルをメタモデルとした木構造のモデルエディタを生成可能 ESS2007 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 11 EMFT-OCL EMFT-OCL (EMF Technology-OCL) OCL 制約の検証 OCL式 インスタンス インスタンスは OCL 制約 を満たしているのか? EMFモデル ESS2007 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 12 提案手法 UMLモデル階層とEMFモデル階層の対応付け Ecore、EMFモデルとUMLメタモデルを対応させれば検証可能 Essential MOF M3 インスタンス化 インスタンス化 Ecoreモデル(PIM) M2 UMLメタモデル 自動変換 EMFモデル(PSM) コード生成 インスタンス化 MOF OCL式 モデルの インスタンス編集環境 M1 EMFT_OCL によりOCL式を 用いた検証が可 能 M0 インスタンス化 UMLモデル インスタンス化 ESS2007 ユーザオブジェクト 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 13 提案する検証システムの概要 UMLメタモデルと整合性ルールをEMFの入力として与え、UMLモデル 検証環境を自動生成する EMF EMFT_OCL Ecoreモデルエディタ UMLメタモデル 入力 入力 Ecoreモデル M2 整合性ルール (OCL式) 自動変換 EMFモデル コード生成 記述 記述 M1 整合性検証 記述 UMLモデル検証環境 ESS2007 検証結果出力 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 14 検証システム実現の問題点 インスタンス編集環境はパッ ケージ毎に生成 クラスのインスタンスをルート として木構造で管理 ルートと関連を持たないクラ スはインスタンス化できない Root Ecoreモデル B M2 A V T U r1:Root UMLモデル検証環境構築に は複数パッケージ内のクラス が必要 s1:S XMI形式 u1:U M1 t1:T 互いに関連を持たないクラス v1:V どうしも存在 Aモデル インスタンス編集環境 S tn:T <r1> <s1> <u1>…</u1> <s1>…</s1> <t1>…</t1> <u1>…</u1> <tn>…</tn> <t1>…</t1> </s1> <tn>…</tn> <v1>…</v1> </r1> 構築できない ⇒ 必要な全クラスと関連を持つクラスをEcoreモデルに追加する ESS2007 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 15 検証システム実現のためのプラグイン Ecoreモデルエディタ Ecoreモデルエディタの拡張 プラグイン プラグインによる自動化 導入 Ecoreモデル mainパッケージ作成 各UMLダイアグラムに必要な UMLメタモデル要素を包含 main A インスタンス化 Root インスタンス化 B インスタンス化 EMFモデル Aモデル 検証環境 Mainモデル 検証環境 Bモデル 検証環境 UMLモデル検証環境 ESS2007 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 16 プラグインのUI インスタンス化するUMLダイアグラムの選択 UMLメタモデルに付加するOCL式の編集 OCL式リスト UMLダイアグラム 選択部分 OCL式 編集部分 図:プラグインのUI ESS2007 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 17 プラグインの出力結果 Mainパッケージ作成 Rootクラス作成 選択したUMLダイアグラムに 必要なUMLメタモデルを包含 編集したOCL式を付加 main パッケージ Rootクラス OCL式に対応した関数 UMLダイアグラムを構築する UMLメタモデルの包含関係 ESS2007 図:Ecoreモデル 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 18 Mainモデル検証環境 Rootクラスを起点としてツリー構造の エディタで編集 図:検証結果例 図:Mainモデル検証環境 ESS2007 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 19 実験 目的 提案手法がUMLダイアグラム間整合性検証に可能かどうか評価 入力 UML2.0メタモデル 文献のクラス図とシーケンス図間に関する整合性ルール(10個)[2] UMLモデル検証環境で記述するUMLダイアグラム クラス図とシーケンス図 実験環境 OS : CPU : Memory : Eclipse ver : EMF ver : Windows Vista Business Intel(R) Core(TM) 2 CPU 1.87GHz 2.0GB RAM 3.2.0 uml::interactions::basicinteractions::Lifeline.allInstances()->forAll(l | 2.2.0 uml::classes::kernel::Class.allInstances() ->select(oclIsTypeOf(uml::classes::kernel::Class))->collect(Name) ->includesAll(l->collect(Name)) ) 図:整合性ルールのOCL式表記例 [2] L. C. Briand, Y. Labiche and L. O'Sullivan, Impact Analysis and Change Management of UML Models, Technical Report SCE-03-01, Carleton University, 2003 ESS2007 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 20 実験設定 EMF UML2.0メタモデル EMFT_OCL Ecoreモデルエディタ 入力 入力 Ecoreモデル M2 整合性ルール (OCL式) 自動変換 EMFモデル コード生成 記述 M1 クラス図 整合性検証 記述 シーケンス図 検証結果出力 UMLモデル検証環境 ESS2007 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 21 適用例題 概要 DrinkMakerに関するクラス図、シーケンス図 これらのダイアグラム中に、UMLダイアグラムで最もよく起こる とされる不整合である「関連の引き忘れ」がある[3] 1.関連のないクラスのオブジェクト間で メッセージのやりとりをしている 2.メッセージが未定義 調査した産業用UMLモデル2つ において、引くべき関連のうち 約70%が忘れられていた[4] [3] K. Ludwik and S. Miroslaw, Inconsistencies in Student Designs, In Proc. of Workshop on Consistency Problems in UML-based Software Development, 2003 [4] C. Lange, M. R. V. Chaudron, J. Muskens , L. J. Somers and H. M. Dortmans, An Empirical Investigation in Quantifying Inconsistency and Incompleteness of UML Designs, In Proc. of Workshop on Consistency Problems in UML-based Software Development, 2003 ESS2007 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 22 不整合の検出 違反検出sd DMaker cd DMaker cd DMaker DrinkMaker + + + + + + setChosenDrink(Drink) : void prepareDrink() : void CoinSlot - DrinkMaker 違反が出力されなくなった Container IngredientPortion DrinkMixer chooseDrink(int) : void + getIngredient() : IngredientPortion insertCoin(CoinValue) : void prepareDrink() : void chosenDrink: int returnCoin(CoinValue) : void + validate(CoinValue) : void + setPrice(int) : void + + addWater(Water) : void CoinContainer addPowder(IngredientPortion) : void Water Cocoa Coin {leaf}CoinValue + value: CoinValue cCont :Container wTank :Watertank CoffeePowder DrinkMixer + getWater() : Water - totalAmount: int :Tea IngredientPortion:= getIngredient() - chosenDrink: int Drink + price: int :DrinkMixer prepareDrink() Watertank DrinkRecipe toPay: int TeaPowder :DrinkMaker + setChosenDrink(Drink) : void + prepareDrink() : void addPowder(p) Water:= getWater() Drink + addWater(Water) : void + addPowder(IngredientPortion) : void Coffee {leaf} Tea Cocoa {leaf} Coffee {leaf} Tea 1.関連のないクラスのオブジェクト間で メッセージのやりとりをしてはいけない 2.メッセージが未定義ではいけない ESS2007 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 23 考察と評価 提案手法によりUMLダイアグラム間整合性検証は可能 DrinkMaker例題に対する10個の整合性ルールの検証に成功 OCL式で整合性ルールを記述することが可能 別の種類のUMLダイアグラム間に対しても検証可能だ と考えられる クラス図とシーケンス図間の制約と同様にOCL式を記述可能 クラス図とステートマシン図 etc… しかし、OCL式で記述できない整合性ルールも存在した 事前事後条件は不変表明を妨げない 集約リンクの有向パス中にサイクルはない etc… ESS2007 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 24 まとめと今後の課題 UMLメタモデルとOCL制約を用いてUMLモデル検証 環境を構築する手法を提案 EMFを利用して検証環境のソースコードを自動生成する ツールを作成し、作業の効率化を図る クラス図とシーケンス図間に関する例題に適用 今後の課題 UML2.0以外のバージョンを用いた場合の評価実験 他の例題への適用 別の種類のUMLダイアグラム間整合性検証 ESS2007 2007/10/20 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 25
© Copyright 2024 ExpyDoc