H18年度共同研究最終報告会

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