アスペクト指向に基づく 拡張可能な MDAモデルコンパイラ

Slides:



Advertisements
Similar presentations
関心事指向アーキテクチャモデリング環 境 Concern-oriented Architecture Modeling Environment 九州工業大学大学院情報工学府 情報科学専攻 鵜林研究室 M1 佐藤 友紀 1.
Advertisements

メタモデル記述を用いた成果物間の依存関係追跡手法
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
アルゴリズムとプログラミング (Algorithms and Programming)
九州工業大学 情報工学部 知能情報工学科 鵜林尚靖 2004年10月15日
背景 我々の研究室で開発しているJavaプログラム解析フレ ームワークでは,解析情報はメモリ上に保持される 問題点
九州工業大学 情報工学部 知能情報工学科 鵜林尚靖 2005年7月16日
Dynamic AOPと その実装手法について
Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
CHAPTER1 UMLとオブジェクト指向の基本概念(2)
AspectScope によるアスペクトとクラスのつながりの視覚化
BPMN(Business Process Modeling Notation)
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
同期的にアドバイスを活性化できる分散動的アスペクト指向システム
C#とC++とオブジェクト指向 上甲 健史.
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
UML入門 UML PRESS vol.1 より 時松誠治 2003年5月19日.
ユーザ毎にカスタマイズ可能な Web アプリケーション用のフレームワークの実装
UMLとは           032234 田邊祐司.
アスペクト指向プログラミングを用いたIDSオフロード
効率的なJava Dynamic AOPシステムを実現する Just-in-Time weaver
オブジェクト指向モデリング [3] 2003年10月14日.
アスペクト指向プログラミングと Dependency Injection の融合
遠隔ポイントカット - 分散アスペクト指向プログラミング のための言語機構
概要 Boxed Economy Simulation Platform(BESP)とその基本構造 BESPの設計・実装におけるポイント!
AOP言語への 織り込みインターフェイスの導入 A Weaving-Interface for AOP Languages
契約に基づいたアスペクト指向リファクタリングの検証
UMLメタモデルの変更に対応した ダイアグラム間整合性検証環境の 自動生成手法
第10回 2007年6月29日 応用Java (Java/XML).
その他の図 Chapter 7.
ソフトウェア開発手法の最前線 ~ アスペクト指向、MDA、MIC ~
組込みシステムの外部環境分析のためのUMLプロファイル
暗黙的に型付けされる構造体の Java言語への導入
関心事ごとに視点を切り替えて プログラムを編集できる 統合開発環境の提案と実装
理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾
統合開発環境のための アスペクト指向システム
只見町 インターネット・エコミュージアムの「キーワード」検索の改善
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
社会シミュレーションのための モデル作成環境
横断的関心事に対応したオブジェクト指向言語GluonJとその織り込み関係の可視化ツール
既存Javaプログラム向け 分散化支援システムの開発
豊富な情報を基にした pointcut を記述できるアスペクト指向言語
ソースコード縮退による ソースコード理解 神谷年洋 科学技術振興事業団 さきがけ研究21 オブジェクト指向シンポジウム2003.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
UMLモデルを対象とした リファクタリング候補検出の試み
クラスのインターフェース やその振る舞いに及ぼすアスペクトの影響の解析と可視化
アスペクト指向言語のための 独立性の高いパッケージシステム
Strutsフレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案
アスペクト指向言語のための 独立性の高いパッケージシステム
pointcut に関して高い記述力を持つ アスペクト指向言語 Josh
1-3 UMLの図(ダイアグラム) コンポーネント図 システムの物理的な構成を表現 ソフトウェアコンポーネントの依存性を表現
UMLの概要とオブジェクト指向の基本概念
プログラムの織り込み関係を可視化するアウトラインビューの提案と実装
拡張可能なアスペクト指向モデリングにおける織り合わせの検証
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
分散 Java プログラムのための アスペクト指向言語
Josh : バイトコードレベルでのJava用 Aspect Weaver
統合開発環境によって表現された 言語機構によるコードのモジュール化
設計情報の再利用を目的とした UML図の自動推薦ツール
様々なAOPメカニズムをモデル化する パラメータ化インタプリタ
アスペクト指向言語のための視点に応じた編集を可能にするツール
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
UMLモデルを対象とした リファクタリング候補検出手法の提案と実現
統合開発環境のための プログラミング言語拡張 フレームワーク
開発者との対話を活かした 横断的構造の表現
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
1.2 言語処理の諸観点 (1)言語処理の利用分野
Josh : バイトコードレベルでのJava用 Aspect Weaver
Presentation transcript:

アスペクト指向に基づく 拡張可能な MDAモデルコンパイラ AOPミニワークショップ SPA-SUMMER 2004 アスペクト指向に基づく 拡張可能な MDAモデルコンパイラ 九州工業大学 情報工学部 知能情報工学科 鵜林尚靖 2004年8月24日

MDAとは 従来の開発 MDAによる開発 設計フェーズが 大きく変化! CIM 分析 PIM 設計 PSM コーディング ソース・コード モデルコンパイラ による自動変換 PSM コーディング ソース・コード MDA: Model-Driven Architecture PIM: Platform Independent Model CIM: Computation Independent Model PSM: Platform Specific Model

モデル変換の例(Strutsの場合) ステップ1: 複数PIMの合成 ①PIMクラスのマージ ステップ2: アクションフォーム ステップ1: 複数PIMの合成 ①PIMクラスのマージ ステップ2: アクションフォーム         Beanへの変換 ②Bean規約名に変更 ③ActionFormを継承 ④setter/getterを追加 ステップ3: アクションクラス         の新規作成 ⑤アクションクラスを生成 ⑥Actionを継承 ⑦executeメソッドを追加 ⑧メソッド本体を追加 PIM PSM

研究のアプローチ MDAの課題 モデル作成者自身がアプリケーションの特性や目的に応じてモデル変換規則を定義するのが難しい eg. QVT アスペクト指向に基づいたモデルコンパイラ モデリング言語AspectM ゴール モデル作成者はモデリングの一環としてアスペクトを定義することにより、モデルコンパイラの機能を拡張できる モデル変換記述も通常のモデリングも同じ土俵で考えることができる(モデリングレベルのメタプログラミング)

何故、アスペクト指向なのか? (研究のモチベーション) MDAにおけるモデル変換は実装に関わる部分の変換であるが、モデル変換の対象はこれに留まらない。最適化、等々。Active Library の考え方をモデルコンパイラに導入する必要はないか? 実装に関わる部分は横断的関心事。 アスペクトはソフトウェアモジュールであると同時に変換モジュールである。この2面性を考えると、システムの構成要素と変換規則を同じモジュール化メカニズム(アスペクト)で実現できる可能性がある。 上流段階(ユースケースや設計レベル)でのアスペクト指向サポートとMDAサポートを同じメカニズムで実現できる。

AOPのメカニズム 実行コード 元ソース ・・・・・・ --- JPM Join Point Advice Point Cut メソッド呼び出し メソッド実行 ・ AOP: Aspect-Oriented Programming JPM: Join Point Model

AOPとMDA JPM においてのadviceはプログラム変換と呼ぶことができる JPMでモデル変換を記述することが可能になるのでは Join Point クラス名 Advice クラス名 属性 ・・・ 属性① 属性② 操作 ・・・ 操作 ・・・ Point Cut クラス図

以降の内容 拡張可能なモデルコンパイラの考え方 モデル変換のためのJPM(Join Point Model) AspectMの概要 AspectMの実装(開発中) 関連研究 まとめ

拡張可能モデルコンパイラの考え方 weave アスペクト アスペクト図 UMLモデル UMLモデル モデルコンパイラ アスペクト図 (モデル変換モジュール としてのアスペクト) アスペクト図 アスペクトを追加することにより様々な変換を可能にする weave UMLモデル (クラス図) UMLモデル (クラス図) モデルコンパイラ アスペクト図 (システム構成モジュール としてのアスペクト)

MDAはどう変化するか? PIM PSM プログラムコード XML XML XML XMLで記述された アスペクト XMLで記述された モデル モデル モデル PIM PSM プログラムコード XML XML XML XMLで記述された アスペクト XMLで記述された アスペクト

モデル変換のためのJPM ①PIMクラスのマージ CM ②Bean規約名に変更 RN ③ActionFormを継承 RL   CM ②Bean規約名に変更   RN ③ActionFormを継承   RL ④setter/getterを追加   OC ⑤アクションクラスを生成   NE ⑥Actionを継承 ⑦executeメソッドを追加 ⑧メソッド本体を追加   PA モデル変換機能 PA CM NE OC RN RL 操作本体の変更 ○ クラスのマージ クラスの追加/削除 操作の追加/削除 属性の追加/削除 クラス名の変更 操作名の変更 属性名の変更 継承の追加/削除 集約の追加/削除 関連の追加/削除 PA(pointcut & advice),CM(composition),NE(new element),OC(open class),RN(rename),RL(relation)

<< jpm-type >> AspectMの概要 6つのJPMをサポート(新たなJPMを追加可能) 3種類のアスペクトをサポート(通常アスペクト、コンポーネントアスペクト、テンプレートアスペクト) UMLを対象としたXMLベースのAOP言語 ダイアグラム表記 ダイアグラム保存形式(XMLベース) aspect <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> << jpm-type >> aspect-name pointcut-name : joinpoint-type { pointcut-body } : advice-name [pointcut-name]: advice-type { advice-body } :

AspectMのJPM JPM Join point Pointcut Advice PA operation 記述例 ① setX || setY ② set* ③ classA || classB  ④ class* before, after, around CM class merge-by-name NE class-diagram add-class delete-class OC add-operation, delete-operation, add-attribute, delete-attribute RN class, operation, attribute rename RL add-inheritance, delete-inheritance, add-aggregation, delete-aggregation, add-relationship, delete-relationship

merge-message-classes AspectMの記述例 MessageクラスとMessageProfileクラスを マージしてPostMessageクラスに変換 << CM >> merge-message-classes message-classes : class { Message || MessageProfile } merge-message-classes [message-classes] : merge-by-name { PostMessage } aspect <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>

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 name=concat(“OC_“,@aspect@) type=“OC” > テンプレート アスペクト コンポーネント 通常アスペクト

当研究室で開発中のツール ユーザインターフェース メタモデル XML 文書 XML 文書 XML 文書 モデルエディタ PIM クラス図 アスペクト図 ユーザインターフェース XML 文書 モデルコンパイラ PSM クラス図 アスペクト図 XML 文書 モデルコンパイラ Javaソース XML 文書 Eclipse

AspectMのメタモデル(プロトタイプ) アスペクトの メタモデル

「XMI形式アスペクト→XSLT変換ルール」変換 モデルコンパイラの実装(プロトタイプ) アスペクト図 「アスペクト図→XMI形式」変換 XMI形式アスペクト 「XMI形式アスペクト→XSLT変換ルール」変換 XSLT変換ルール クラス図 (PIM) クラス図 (PSM) XSLT処理系

関連研究 Stein他[AOSD2002] Gray他[GPCE2003] Sillito他[ECOOP2004] アスペクトをUML図として表現する方法を提案 モデリング段階のアスペクトはAspectJなどのAOP言語に変換するもので、この方法ではMDAは実現できない AspectMのアスペクトはUML図自身を操作するもの Gray他[GPCE2003] AODM(Aspect-Oriented Domain Modeling)を提案 属性や関連などのモデル要素を追加する機能をもつ MDAなどの一般的なモデル変換を対象にしたものではない Sillito他[ECOOP2004] ユースケースレベルのポイントカットを提案 上流のモデリング段階においてもJPMの考え方が有効であることを示した

まとめ MDAのモデルコンパイラをアスペクトを組み合わせることにより実現する方式を提案 従来別々の概念と考えられていたアスペクト指向とMDAを同じ枠組みで捉えることが可能になった