Download presentation
Presentation is loading. Please wait.
1
様々なAOPメカニズムをモデル化する パラメータ化インタプリタ
九州工業大学4年 森山 元喜 九州工業大学 鵜林 尚靖 東京大学 玉井 哲雄 PPL2005
2
発表の流れ 背景 目的 アスペクト指向のメカニズム 3パートモデル化フレームワーク パラメータ化インタプリタ(X-ASB) 評価 まとめ
3
背景 アスペクト指向プログラミング(AOP) システムの不十分なモジュール化による問題 横断的関心事:モジュール間にまたがる機能
システムの保守・改変が困難になる場合がある 横断的関心事:モジュール間にまたがる機能 ログ処理,認証機能,永続化 など オブジェクト指向の限界 機能要件のモジュール化には適しているが, 横断的関心事の表現には必ずしも向いていない 横断的関心事をどう表現するかにより,AOPのメカニズムは大きく異なる アスペクト指向プログラミング(AOP)
4
目的 様々なAOPメカニズムを パラメータを用いて共通にモデル化する AOPメカニズムの理解 言語開発におけるプロトタイピングに利用
5
AOP(Aspect-Oriented Programming)
アスペクト指向: モジュール化機構 横断的関心事を1つのモジュール(アスペクト)として記述 システム本来の関心事とアスペクトとを織り込むことで1つのプログラムを作る 織り込みのメカニズムは,JPM(Join Point Model)によって表現される
6
JPM(Join Point Model) ジョインポイント 織り込みたい箇所を全ジョインポイントから絞り込む機能
アスペクト指向のメカニズム JPM(Join Point Model) ジョインポイント 織り込み対象になり得る箇所 織り込みたい箇所を全ジョインポイントから絞り込む機能 絞り込んだ箇所に影響を与える機能
7
JPMの例(AspectJ) ジョインポイント:メソッド呼び出し 絞り込み機能:ポイントカット 影響を与える機能:アドバイス
アスペクト指向のメカニズム JPMの例(AspectJ) ジョインポイント:メソッド呼び出し 絞り込み機能:ポイントカット 影響を与える機能:アドバイス ・・・・・・・ method1(...); method2(…); method3(…); ポイントカット 絞り込み method1 method3 アドバイス コードの挿入 logger.log() ベースプログラム (システム本来の関心事) アスペクト プログラム
8
代表的な言語毎のJPM AspectJ:PARC(Palo Alto Research Center)で開発
アスペクト指向のメカニズム 代表的な言語毎のJPM AspectJ:PARC(Palo Alto Research Center)で開発 現在はEclipseプロジェクトに移管 PA(pointcut and advice) OC(open classes) Demeter:Northeastern大学で開発 TRAV(traversal specifications) Hyper/J:IBM T.J Watson Research Centerで開発 COMPOSITOR(class hierarchy composition)
9
TRAV ベースプログラムから得られるオブジェクト木をトラバースするメカニズム アスペクト トラバーサル仕様(目的のオブジェクトへのパス)
アスペクト指向のメカニズム TRAV ベースプログラムから得られるオブジェクト木をトラバースするメカニズム アスペクト トラバーサル仕様(目的のオブジェクトへのパス) visitor(目的のオブジェクトへの到達での振る舞い)
10
COMPOSITOR 独立した2つのプログラムをマージするメカニズム 支配関係はない(指定した関連に基づいてマージ)
アスペクト指向のメカニズム COMPOSITOR 独立した2つのプログラムをマージするメカニズム 支配関係はない(指定した関連に基づいてマージ)
11
アスペクト指向のメカニズム OC あるクラスに属性を追加するメカニズム アスペクト 追加先のクラス名 追加させたい属性の宣言
12
JPM 横断的関心事をどう表現するかによって,様々なJPMがある しかも,JPMはそれぞれ大きく異なる
アスペクト指向のメカニズム JPM 横断的関心事をどう表現するかによって,様々なJPMがある PA,TRAV,COMPOSITOR,OC しかも,JPMはそれぞれ大きく異なる アスペクト指向メカニズムの共通点は何か?
13
3パートモデル化フレームワーク 様々なJPMを統一的に理解するための枠組み
増原,Kiczalesが提案(ECOOP 2003) いくつかのパラメータを用いて織り込みプロセスを表現することによりJPMをモデル化 ジョインポイント:織り込みプロセス中の箇所
14
PAのモデル ジョインポイント 織り込みプロセス中のメソッド呼び出し 3パートモデル化フレームワーク プログラムA プログラムB
(本来の関心事) プログラムB (横断的関心事) アドバイス 実行 メソッド 実行 メソッド宣言 アドバイス宣言 ポイントカット メソッド 検索 織り込み メソッド呼び出し (ジョインポイント) 織り込みの結果 (計算) ジョインポイント 織り込みプロセス中のメソッド呼び出し
15
OCのモデル ジョインポイント プログラムへ宣言を設定する箇所 3パートモデル化フレームワーク プログラムA プログラムB (本来の関心事)
(横断的関心事) 該当クラスへの複写 クラス宣言 クラスの設定 オープンクラス 宣言 オープンクラス 検索 クラス 検索 織り込み 宣言の設定 (ジョインポイント) 織り込みの結果 (プログラム) ジョインポイント プログラムへ宣言を設定する箇所
16
3パートモデル化フレームワーク 2つの入力プログラムを1つに織り込む パラメータを用いてモデル化 A B BEFF AEFF BID AID
(影響) AEFF BID AID (識別) 織り込み XJP X 2つの入力プログラムを1つに織り込む パラメータを用いてモデル化
17
3パートモデル化フレームワーク パラメータが示す内容は形式的でない ASB(Aspect Sand Box) PAへのパラメータの適用
A: メソッド宣言 B: アドバイス宣言 X: 計算 XJP: メソッド呼び出し AID: メソッドの検索 AEFF: メソッドの実行 BID: ポイントカット BEFF: アドバイスの実行 ASB(Aspect Sand Box) UBCで開発 3パートモデル化フレームワークに基づいたインタプリタ JPM毎にインタプリタを提供(インタプリタ群) 概念的パラメータに基づいて構築
18
JPMを導入する事を考えると ある程度形式的なパラメータが必要 X-ASB(eXtensible Aspect Sand Box)
形式的でないパラメータに基づく導入は困難 必要な処理と導入手順が定まっていれば容易 X-ASB(eXtensible Aspect Sand Box) パラメータの形式化 ASBを拡張性の高いものに再構成
19
パラメータ化インタプリタ(X-ASB) Schemeで記述 X-ASBの構成 共通な構造 JPMに共通な構造
パーサ パラメータ同士の関係 共通構造 パラメータ群 PA CM OC TRAV X-ASBの概要
20
X-ASBパラメータ 概念的パラメータの形式化(手続きを設定) 括弧でくくられたものは手続き
21
X-ASBパラメータ 織り込みを行う上で重要なパラメータ パラメータに,JPMに適した手続きを設定
ジョインポイントに関わる要素を識別する方法(AID, BID) 識別した要素による影響を生じさす方法(AEFF, BEFF) 上記をいかに織り込むか(X) 織り込み発生箇所(X) パラメータに,JPMに適した手続きを設定 lookup-a, lookup-b: 識別を行う effect-a, effect-b: 影響を生じさす computation-at-jp: 要素の織り込みを行う eval-program: プログラムを実行する
22
X-ASBパラメータ ジョインポイントによってlookup-a/b, effect-a/bの組は定まる
4つを一組で登録する(register-jp手続き) ジョインポイントによって実行における織り込みの箇所は定まる eval-programがジョインポイントに関係する実行箇所において,織り込みに適したcomputation-at-jpを呼び出す JPMによって要素の織り込み方は定まる computation-at-jpが登録されているlookup-a/b,effect-a/bをコーディネートし,要素を織り込む
23
X-ASBの実行フロー register-jp 以下を登録 登録 ・ ジョインポイント情報 ・ lookup-a/b 手続き
・ effect-a/b 手続き 登録 プログラム実行 eval-program 実行がジョインポイントに到達する度, 適したcomputation-at-jp手続きを呼び出す computation-at-jp 登録されているlookup-a/b, effect-a/bを コーディネートし,要素を織り込む 織り込み
24
JPM導入手順 ジョインポイントとして何を捉えるのかを定め,識別,実行できる手続きを設定する
識別,影響の手続きをどうコーディネートするかを定めたcomputation-at-jp手続きを設定する プログラム実行中のどの箇所でcomputation-at-jpを呼び出すかを踏まえeval-programを設定する
25
評価①:JPM導入について effect-a effect-b JPM毎のコード行数 全体に対して特化した部分の割合: 10~30%
26
評価②:JPM拡張について 導入済のJPMと同様のcomputation-at-jpにより織り込みを行うJPMは,拡張の形で導入
フィールド値設定の箇所を捉える(FSET) フィールド値参照の箇所を捉える(FGET) 以下の箇所をPAにおいて捉えられる メソッド呼び出し フィールド値設定 フィールド値参照 PAを拡張
27
評価②:JPM拡張について 全パラメータを設定しなくても良い パラメータ全体に対する拡張分の割合:約22% effect-a
effect-b 全パラメータを設定しなくても良い パラメータ全体に対する拡張分の割合:約22%
28
まとめ パラメータ化インタプリタ(X-ASB)の提案 共通構造とパラメータ群によりモデル化 パラメータの形式化
JPMに適したパラメータを設定することで,メカニズムを導入できる JPM拡張は純粋な導入よりも容易 共通構造 パラメータ群 JPMに適した パラメータ PA CM OC TRAV
30
ジョインポイント構造 call-jp構造 lookup-method, lookup-advice
execute-method, execute-advice mname, target, args
31
3パートモデル化フレームワーク 3パートモデル化フレームワーク JPMへのパラメータの適用
32
X-ASBパラメータの適用 パラメータにはJPMに対応した手続きを設定 METAには,織り込みポリシーを設定
computation-at-jpはMETAに沿った織り込みを行う
33
3パートモデル化フレームワーク A B XJP X AID BID AEFF BEFF パラメータを用いてJPMを共通にモデル化
A, B: 入力プログラム X: 織り込みの結果(計算 or プログラム) XJP: ジョインポイント(織り込みプロセス中の箇所) AID, BID: XJPに関係するプログラム要素の識別 AEFF, BEFF: 識別された要素による影響 (META: 織り込みのメタ情報) A B XJP X AID BID AEFF BEFF
34
現状の問題 JPMを導入する場合,形式的なパラメータが必要 X-ASB(eXtensible Aspect Sand Box)
概念的パラメータに基づく導入は困難 必要な処理とそのインタフェースが定まっていれば容易 X-ASB(eXtensible Aspect Sand Box) 概念的パラメータの形式化 ASBを拡張性の高いものに再構成
35
単一インタプリタの構築 (define eval-program (lambda (pgm-a pgm-b)
(let* ((pgm1 (compositor::eval-program pgm-a pgm-b)) (pgm2 (oc::eval-program (remove-oc-mdecls pgm1) (gather-oc-mdecls pgm1)))) (pa::eval-program (extract-org-pgm pgm2) (extract-advice-decls pgm2))))) (define eval-exp (lambda (exp env) (cond .. ((method-call-exp? exp)(call-method ...)) ((traverse-exp? exp)(trav::eval-program ...)))))
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.