netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2003-02-22 古い日記からの変換データ [長年日記] ▲
_ 論文 ▲
何となく検索してたら見つけた論文.
Doug Palmer: "Dynamic Aspect-Oriented Programming in an Untrusted Environment"
動的アスペクトの世界(JACなど)では,特に分散環境の場合,アスペクトが信頼できるかどうかが重要となる.
で,アスペクトを Wrapper として考えたとき,External Wrapper (事前・事後条件と関係ない)とInternal Wrapper (事前・事後条件を維持する)に分類できる.
External Wrapper はアクセス制御アスペクトなど,メッセージを握りつぶすようなものでもよい.なお,Internal Callに対しては External Wrapper は動作しない.
各メソッドに,事後条件を定義しておくと,Internal Wrapper の終了時点で事後条件を検査し,違反していたら処理をロールバックするような仕組みを導入する,(この処理そのものは Validator アスペクトがやる)というもの.考え方としては妥当な気もするが,Wrapper がInternal かExternal かを決めるのは誰の仕事なんだろう.また,悪意あるExternal Wrapperなんかはどうやって対処するんだろう.ディジタル署名とかかなぁ.いちおう,変なinternal wrapperのせいで振る舞いが壊れる可能性は検出できるのかな? 6ページの短いpaperで実験的な評価がないので詳細は不明.
_ 論文 ▲
先の論文で関連研究として挙げていたものは次のとおり.
Software Reconnaissanceテストケースを複数用意して,あるfeatureを「使っている」ケースと「使わない」ケースを用意して,その実行時の違いから Concept Analysis を行う.
BEE++: C++ベースの,分散システムの動的解析フレームワーク.アプリケーションのどこを解析するかは手作業で指定.
ATOM: プログラム解析ツールを作るためのフレームワーク.オブジェクトファイルレベルで行うので,ソース情報は取れない.
Form: 実行時情報取得ツール.実行時のデータからコールグラフを構築する.JVMPI で実装しているので,詳細な情報までは取れない.
_ 論文 ▲
久々に論文読み.Thomas Gschwind, Johann Oberleitner:"Improving Dynamic Data Analyhsis with Aspect-Oriented Programming"To appear in Proccedings of the 7th European Conference on Software Maintenance and Reengineering, March 26--28, 2003, Benevento, Italy, Europe
プログラムの実行時解析で,現在利用可能な方法には次のような問題がある.
- トレースを実行するまでに色々手間がかかる.
- トレースをオブジェクトごとに有効にすることができない
- 特定インスタンスやメソッドごとに指定することができない.
- 引数などへアクセスできない.など.
で,筆者らはARE: A Reverse Engineering tool というものをAspectJ を使ってARE の解析モジュールを作成している.AspectJ の利点は,細かいアクセスが設定できること.ここから,オブジェクトごとのアクセストレースを作れる.具体的には, before() call と after() call を使う.
利点は,
- アスペクトは自動的に組み込まれる.
- AspectJ は JIT をオフにしなくてよい(JVMDIに比べて有利).
- Join Points からソースコードへのマッピングが取れる.
- 呼び出しのときの引数へのアクセスや,インスタンスの識別ができる.
- 開発者が対象のソースコードを読まなくてもよい.
- リフレクションを使っていても大丈夫.
- 引数などの情報も取れる.
- 余分な情報をフィルタリングできる.
- 利用が簡単.
動的解析をして,インスタンスを識別したシーケンス図のようなものを作っているだけで,静的解析との組み合わせは将来の課題としている.
やはり,同じことを考える人はいるらしい.