netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2005-04-03 [長年日記] ▲
_ [論文]属性ベースの(AspectJの)Join Pointで指定すると問題が起きる例 ▲
Donal Lafferty: Avoiding Incorrect and Unpredictable Behavior with Attribute-bassed Crosscutting.
Proceedings of ACP4IS, Chicago, Illinois, March 2005.
.NET用に言語非依存のAOPフレームワークを作っている人らしく,AspectJなどのメソッドの属性などでポイントカットを指定する方法だと,SML.NETなど一部の言語で,ポイントカットにマッチしてしまうような作業用メソッドがコンパイラによって生成されてしまうことがある,というもの.で,アトリビュート(メタデータ)をメソッドごとに付加した方法だったら,Join Pointが勝手に増加しないので無難だよ,というふうに主張している.
_ [論文]Pointcut記述のマッチ可能性の計算量 ▲
Karl J. Lieberherr, Jeffrey Palm, Ravi Sundaram: Expressiveness and Complexity of Crosscut Languages.
Proceedings FOAL, Chicago, Illinois, March 2005.
AspectJにおけるポイントカットやDemeterJにおけるインスタンス探索を,コールグラフやインスタンス関係のグラフからマッチ対象を選択する "Selector" として考える.このとき,Selectorが特定のノードに常にマッチする場所を見つけられるか,1つもマッチしないことが調べられるか,といったことが最適化時に重要となる.
で,アルゴリズムの計算量を調べたら,基本的には,intersectionとnegationを使わなければ,多項式時間でよく,それ以外でも一部多項式時間で解ける問題があるらしい(それ以外はNP完全).
面白いところは,AspectJとDemeterJとをグラフ選択問題として共通化してるところ.AspectJで,コールグラフ上で
call(void f()) & !cflow(void g())のようなメソッド選択の式を,DemeterJを使って
from main() bypassing g() to f()のように置き換えることで negation や intersection を取り除いて多項式時間の問題に帰着できるらしい.