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 2026 ExpyDoc