netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2004-10-04 古い日記からの変換データ [長年日記] ▲
_ [論文][work]モデルベースでのアスペクトの競合の検出 ▲
Francis Tessier, Mourad Badri, Linda Badri:A Model-Based Detection of Conflicts BetweenCrosscutting Concerns: Towards a Formal Approach.Workshop on Aspect-Oriented Software Development 2004.
アスペクトの導入が問題を起こさないかどうか(アスペクト同士が競合しないかどうかなど)を早い段階で(モデルを作ったあたりで)検出しましょう,というもの.
基本的なアイディアとして,アスペクト同士が・同じクラスに作用するが Join Point が異なる→OK・同じクラス,同じ Join Point に作用する→危険 -- アドバイスのタイプ(before/after)が同じ場合は高リスク -- 引数が同じ場合もリスクがある・異なるクラスにしか作用しない,共通部分がない →OKといった感じの分類をして,警告を出しましょうというもの.
この情報は静的解析なので,これをベースに動的解析したりとか,他の手法と組み合わせることも考えているよう.
アプローチとしてはそれなりに単純で分かりやすい.もしソースコード上から解析するのであれば静的に Join Point の共通部分とかをテストするのが(Cflow などを含む場合は)難しそうな気はするが.
モデル記述でテストする場合,モデルの記述に必要なコストがそれなりに低くてモデルとコードの対応付けがきちんとできるのならそれなりに有用そうではある.
ただ,「競合してるかもー」と警告を出すのは簡単だけど,開発者がシステム全体で一貫した解決方法を使っているかとか,その解決方法が正しそうかどうかとかをいかに確認するかも問題になってくるだろうから,その辺で議論できたら面白そう.
_ [論文]合成可能なメタオブジェクトの記述 ▲
Philippe Mulet, Jacques Malenfant, Pierre Cointe: Towards a Methodology for Explicit Composition of Metaobjects.Proceedings of the 10th annual Conference on Object-Oriented Programming Systems, Languages, and Applications(OOPSLA95), pp.316-330, Austin, Texas, United States, 1995.
メタオブジェクトを複数使う場合の問題を解決しましょうという論文.複数のメタオブジェクトは,順番に連結されるものとすると,Trace→Delegate→(Basic) というように順番が決まる.
メソッドの呼び出し・実行を Lookup + Apply ととらえて,メタオブジェクトはそれぞれ自分の Lookup を実装するが,このときに連結先のメタオブジェクトの Lookup を利用して,Lookup 処理や,追加の処理(Delegationなど)を実装する.
メタオブジェクト間の関係の取り扱いにはSpecialization と Aggreagation の二つを考えていて,親メタオブジェクトの Self 参照が自分自身を指すか親メタオブジェクトを指すかを選択する.
Lookup が起きると,連結されたメタオブジェクトの中でメッセージを読み替えや Lookup の連鎖などが起こって,最終的に実際のオブジェクトの動作が決まる.
このアプローチでは,メタオブジェクトは,自分自身が,連結相手に対してどのように振舞うかを記述する.汎用的な Mix-in が書ける人ならちゃんと書けそう.Composition Filter では結合演算自体は外部で定義されて通常はフィルタ生成順序などで implicit に扱われる点が異なる.