netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2005-12-28 [長年日記] ▲
_ [お出かけ] 神戸市立博物館のナポレオンとヴェルサイユ展 ▲
見に行ってきた.絵画と,家具がメインな展示.人物の肖像画がかなり多かった気がする.
肖像画か何かのところに付いてた説明を読んでたら,当時はヘアスタイルとして,もみあげを伸ばしてたらしいので,アルセーヌ・ルパンのもみあげと関連してるのか,とか,どうでもいいことを思ったり(年代は離れているが).
_ [論文] 実行履歴に対してマッチするアドバイスの定義方法 ▲
Allan, C., Avgustinov, P., Christensen, A. S., Hendren, L., Kuzins, S., Lhotak, O., de Moor, O., Sereni, D., Sittampalam, G. and Tibble, J.: Adding Trace Matching with Free Variables to AspectJ.
Proceedings of OOPSLA 2005, pp.345-364, San Diego, California, USA, October 2005.
イベント列にマッチするアドバイスを定義するために,before/after + pointcut でイベントシンボルを定義し,イベントシンボルの正規表現によってアドバイス実行の条件を記述することを提案している.
before/after + pointcut を使うのは,通常の join point だと,呼び出しが始まってから終わるまで,のような有効範囲を持ってしまうためそれを before/after によって「点」に変更している.
「オブジェクト x に対して特定のメソッド呼び出しが起きたとき」といったオブジェクトのバインディングを,AspectJ のように各アドバイスで保存・参照するのではなく,シンボル列のマッチ時に解決することで,プログラムの簡潔な記述を実現している.
pointcut マッチによって生成されるシンボル列に対して,非決定性オートマトンを使った正規表現マッチでアドバイスの実行を決定する.このとき,シンボルとして,関係あるイベントだけが取り出されており,どのポイントカットにもマッチしないイベントはフィルタされる.
たとえば「ログイン後にクエリーを投げたとき」というアドバイスは,login/logout/query というイベントだけ定義しておけば,「login query+」というパターンで記述できる.logout が間に一度でも出現していたら上にはマッチしないし,それ以外のメソッド呼び出しはそもそもシンボルとしては登場しない.
手法に対する形式的記述や,関連研究の説明もうまくまとめられており,かなり参考になりそうな文献.