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メソッドを追加 ⑧メソッド本体を追加 PIM PSM 3 研究のアプローチ 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モデル (クラス図) weave UMLモデル (クラス図) モデルコンパイラ アスペクト図 (システム構成モジュール としてのアスペクト) 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を継承 継承の追加/削除 ○ 集約の追加/削除 ○ 関連の追加/削除 ○ PA(pointcut & advice),CM(composition),NE(new element), OC(open class),RN(rename),RL(relation) RL ⑦executeメソッドを追加 OC ⑧メソッド本体を追加 PA 11 AspectMの概要 6つのJPMをサポート(新たなJPMを追加可能) 3種類のアスペクトをサポート(通常アスペクト、コンポーネント アスペクト、テンプレートアスペクト) UMLを対象としたXMLベースのAOP言語 ダイアグラム表記 aspect << jpm-type >> aspect-name pointcut-name : joinpoint-type { pointcut-body } : : advice-name [pointcut-name]: advice-type { advice-body } : : ダイアグラム保存形式(XMLベース) <aspect name=aspect-name type=jpm-type > { <pointcut name=pointcut-name type=joinpoint-type> pointcut-body </pointcut> } + { <advice name=advice-name type=advice-type> <ref-pointcut>pointcut-name </pointcut> <advice-body>advice-body </advice-body> </advice> } + </aspect> 12 AspectMのJPM JPM Join point PA operation CM class NE class-diagram OC class RN class, operation, attribute RL class Pointcut Advice before, after, around merge-by-name 記述例 ① setX || setY ② set* ③ classA || classB ④ class* add-class delete-class add-operation, delete-operation, add-attribute, delete-attribute rename add-inheritance, delete-inheritance, add-aggregation, delete-aggregation, add-relationship, delete-relationship13 MessageクラスとMessageProfileクラスを AspectMの記述例 マージして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 クラス図 アスペクト図 PSM クラス図 アスペクト図 ユ ー ザ イ ン タ ー フ ェ ー ス Javaソース メ タ モ デ ル XML 文書 モデルコンパイラ XML 文書 モデルコンパイラ XML 文書 Eclipse 16 AspectMのメタモデル(プロト タイプ) アスペクトの メタモデル 17 モデルコンパイラの実装(プロトタイ プ) アスペクト図 「アスペクト図→XMI形式」変換 XMI形式アスペクト 「XMI形式アスペクト→XSLT変換 ルール」変換 XSLT変換ルール クラス図 (PIM) XSLT処理系 クラス図 (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
© Copyright 2024 ExpyDoc