??????????? ????? MDA???
Shared by: 586HB40
-
Stats
- views:
- 4
- posted:
- 6/18/2012
- language:
- Japanese
- pages:
- 20
Document Sample


AOPミニワークショップ SPA-SUMMER 2004
アスペクト指向に基づく
拡張可能な
MDAモデルコンパイラ
九州工業大学
情報工学部 知能情報工学科
鵜林尚靖
2004年8月24日
1
MDAとは
従来の開発 MDAによる開発
設計フェーズが
分析 CIM
大きく変化!
PIM
モデルコンパイラ
設計
による自動変換
PSM
コーディング ソース・コード
MDA: Model-Driven Architecture PIM: Platform Independent Model
CIM: Computation Independent Model PSM: Platform Specific Model 2
モデル変換の例(Strutsの場
合)
ステップ1: 複数PIMの合成
①PIMクラスのマージ
ステップ2: アクションフォーム
Beanへの変換
②Bean規約名に変更
③ActionFormを継承
④setter/getterを追加
ステップ3: アクションクラス
の新規作成
⑤アクションクラスを生成
⑥Actionを継承
⑦executeメソッドを追加
⑧メソッド本体を追加
3
PIM PSM
研究のアプローチ
MDAの課題
モデル作成者自身がアプリケーションの特性や目的に応
じてモデル変換規則を定義するのが難しい eg. QVT
アスペクト指向に基づいたモデルコンパイラ
モデリング言語AspectM
ゴール
モデル作成者はモデリングの一環としてアスペクトを定
義することにより、モデルコンパイラの機能を拡張できる
モデル変換記述も通常のモデリングも同じ土俵で考える
ことができる(モデリングレベルのメタプログラミング)
4
何故、アスペクト指向なのか?
(研究のモチベーション)
MDAにおけるモデル変換は実装に関わる部分の変
換であるが、モデル変換の対象はこれに留まらない。
最適化、等々。Active Library の考え方をモデルコン
パイラに導入する必要はないか?
実装に関わる部分は横断的関心事。
アスペクトはソフトウェアモジュールであると同時
に変換モジュールである。この2面性を考えると、
システムの構成要素と変換規則を同じモジュール化
メカニズム(アスペクト)で実現できる可能性があ
る。
上流段階(ユースケースや設計レベル)でのアスペ
クト指向サポートとMDAサポートを同じメカニズ
ムで実現できる。
5
AOPのメカニズム
JPM
Join Point 実行コード
元ソース Advice
メソッド呼び出し
メソッド実行 ・・・・・・ ・・・・・・
・ ・・・・・・ ---
・ ・・・・・・ ・・・・・・
・・・・・・ ---
・・・・・・ ・・・・・・
・・・・・・ ---
Point Cut
AOP: Aspect-Oriented Programming
JPM: Join Point Model
6
AOPとMDA
JPM においてのadviceはプログラム変換と呼
ぶことができる
JPMでモデル変換を記述することが可能にな
るのでは
Join Point
クラス名 Advice クラス名
属性 属性①
・・・ 属性②
操作 操作
・・・ ・・・
クラス図 Point Cut
7
以降の内容
拡張可能なモデルコンパイラの考え方
モデル変換のためのJPM(Join Point
Model)
AspectMの概要
AspectMの実装(開発中)
関連研究
まとめ
8
拡張可能モデルコンパイラの考え方
アスペクト
アスペクト
アスペクト図
(モデル変換モジュール
(モデル変換モジュール
(モデル変換モジュール
としてのアスペクト)
としてのアスペクト)
としてのアスペクト)
アスペクトを追加する
ことにより様々な変換
を可能にする
UMLモデル UMLモデル
weave (クラス図)
(クラス図)
モデルコンパイラ
アスペクト図
(システム構成モジュール
としてのアスペクト)
9
MDAはどう変化するか?
モデル モデル モデル
PIM PSM プログラムコード
XML XML XML
XMLで記述された XMLで記述された
アスペクト アスペクト
10
モデル変換のためのJPM
モデル変換機能 PA CM NE OC RN RL ①PIMクラスのマージ
操作本体の変更 ○
CM
②Bean規約名に変更
クラスのマージ ○
RN
クラスの追加/削除 ○ ③ActionFormを継承
操作の追加/削除 ○ RL
属性の追加/削除 ○ ④setter/getterを追加
OC
クラス名の変更 ○
⑤アクションクラスを生成
操作名の変更 ○ NE
属性名の変更 ○ ⑥Actionを継承
継承の追加/削除 ○ RL
集約の追加/削除 ○
⑦executeメソッドを追加
OC
関連の追加/削除 ○
⑧メソッド本体を追加
PA(pointcut & advice),CM(composition),NE(new element), PA
OC(open class),RN(rename),RL(relation)
11
AspectMの概要
6つのJPMをサポート(新たなJPMを追加可能)
3種類のアスペクトをサポート(通常アスペクト、コンポーネント
アスペクト、テンプレートアスペクト)
UMLを対象としたXMLベースのAOP言語
ダイアグラム表記 ダイアグラム保存形式(XMLベース)
aspect
<< jpm-type >> <aspect name=aspect-name type=jpm-type >
aspect-name { <pointcut name=pointcut-name
type=joinpoint-type>
pointcut-name : joinpoint-type pointcut-body
{ pointcut-body }
:
</pointcut> } +
: { <advice name=advice-name
type=advice-type>
advice-name [pointcut-name]: advice-type <ref-pointcut>pointcut-name </pointcut>
{ advice-body }
<advice-body>advice-body </advice-body>
:
: </advice> } +
</aspect>
12
AspectMのJPM
JPM Join point Pointcut Advice
PA operation before,
after,
around
CM class merge-by-name
NE class-diagram 記述例 add-class
① setX || setY delete-class
OC class ② set* add-operation,
③ classA || classB delete-operation,
add-attribute,
④ class*
delete-attribute
RN class, operation, attribute rename
RL class add-inheritance,
delete-inheritance,
add-aggregation,
delete-aggregation,
add-relationship,
delete-relationship
13
AspectMの記述例
MessageクラスとMessageProfileクラスを
マージしてPostMessageクラスに変換
aspect << CM >>
merge-message-classes
message-classes : class
{ Message || MessageProfile }
merge-message-classes [message-classes]
: merge-by-name
{ PostMessage }
<aspect name="merge-message-classes" type="CM" >
<pointcut name="message-classes" type="class"> Message || MessageProfile </pointcut>
<advice name="merge-message-classes" type="merge-by-name">
<ref-pointcut> message-classes </ref-pointcut>
<advice-body>
<element> PostMessage</element>
</advice-body>
</advice>
</aspect> 14
AspectMにおける部品合成
<aspect name=“Generic-Class2ActionForm“ type=“template”> テンプレート
<params> アスペクト
<param>@aspect@</param>
<param>@class@</param>
</params>
<aspect name=“Class2ActionForm” type=“component”> コンポーネント
アスペクト
<aspect name=concat(“RN_”,@aspect@) type=“RN”>
…
</aspect>
<aspect name=concat(“RL_“,@aspect@) type=“RL” >
… 通常アスペクト
</aspect>
<aspect name=concat(“OC_“,@aspect@) type=“OC” >
…
</aspect>
</aspect>
</aspect> 15
当研究室で開発中のツール
モデルエディタ
PIM
クラス図 ユ
アスペクト図 ー XML
ザ メ 文書 モデルコンパイラ
イ タ
PSM ン モ
タ デ
クラス図
ー ル
アスペクト図
フ XML
ェ 文書 モデルコンパイラ
ー
ス
Javaソース XML
文書
Eclipse 16
AspectMのメタモデル(プロト
タイプ)
アスペクトの
メタモデル
17
モデルコンパイラの実装(プロトタイ
プ)
アスペクト図
「アスペクト図→XMI形式」変換
XMI形式アスペクト
「XMI形式アスペクト→XSLT変換
ルール」変換
XSLT変換ルール
クラス図 クラス図
XSLT処理系
(PIM) (PSM)
18
関連研究
Stein他[AOSD2002]
アスペクトをUML図として表現する方法を提案
モデリング段階のアスペクトはAspectJなどのAOP言語に変換
するもので、この方法ではMDAは実現できない
AspectMのアスペクトはUML図自身を操作するもの
Gray他[GPCE2003]
AODM(Aspect-Oriented Domain Modeling)を提案
属性や関連などのモデル要素を追加する機能をもつ
MDAなどの一般的なモデル変換を対象にしたものではない
Sillito他[ECOOP2004]
ユースケースレベルのポイントカットを提案
上流のモデリング段階においてもJPMの考え方が有効であるこ
とを示した 19
まとめ
MDAのモデルコンパイラをアスペクトを組
み合わせることにより実現する方式を提案
従来別々の概念と考えられていたアスペクト
指向とMDAを同じ枠組みで捉えることが可
能になった
20
Related docs
Other docs by 586HB40
Get documents about "