netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2004-04-26 古い日記からの変換データ [長年日記] ▲
_ 論文 ▲
Thomas Reps and Genevieve Rosay:Precise Interprocedural Chopping.Proceedings of 3rd FSE, 1995.
Program Chopping というのは,プログラムスライシングの forward と backward を組み合わせて「ある文 s からある文 t までデータが到達する経路」となる.で,Jackson and Rollins がオリジナルを提案したのだが,彼らは intraprocedural なものしか考えていなかったので手続き間でも使えるように変更しました,というもの.
基本の考え方は,手続き内では依存関係を summary edge という形式で作成して,手続き間をcall,parameter in/out で接続したもの.
しかし,実験結果を見た限りでは,えらく時間がかかっている気がする.realizable path を探すために,メソッドの call/return の対応を取りながらグラフの traversal をする必要があるので,実はスライスよりも計算は難しいらしい.
単純にスライスで得られた頂点の積集合を取るだけだと「到達するかもしれない」集合が大きくなりすぎて駄目ということなのだろうか.
_ 論文 ▲
Kim Mens, Bernard Poll, Sebastian Gonzalez:Using Intentional Source-Code Viewsto Aid Software Maintenance.Proceedings of ICSM 2003, pp.169-178.
"intentional source-code view" というのは開発者がある目的のためにソースコード中を抽出したもの.論理型言語を使って結果を抽出し,それに加えて incremental に例外要素の追加・削除を行う.
ケーススタディとして,コード自動生成した部分と手動部分の切り分けとか,コーディング基準が維持されているかどうかとか,実は AspectJ の declare warning などの活用でやっていることに近い気がする.
関連研究として一番近いものが Conceptual Module.論理型言語を使ってモジュールを抽出するという点で同じ.次に Concern Graph.ただし,粒度が違っていて,Conceptual Module は正規表現での行単位マッチに制約されていたりConcern Graph はエンティティ間の関係が限られているといった理由から,提案手法が一番使いやすい,と主張している.わりともっともらしい.ただ,論理型言語の性能は,使える述語次第という気もするが.
その他の関連研究としては,Aspect Browser,Subject-Oriented Programming,データベースにおけるビュー管理やGrundy らのソースコードビューに関する非一貫性の管理とかが挙げられている.