netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2005-05-31 [長年日記] ▲
_ [AspectJ] Java の "-ea" オプション ▲
Eclipse3.1M6 + AJDT で assert 文を書いていて気づいたのだが,アスペクト内部に書いた assert は "-ea" オプションがなくても検査される.アスペクトの結合対象になっている Java クラス内に書かれた assert 文は,"-ea" を付けない限り検査されない.コンパイラのバグっぽい症状.AspectJのサイトで調べないといけないか.
_ [論文]差分デバッグでのエラー波及の分析 ▲
Holger Cleve, Andreas Zeller: Locating Causes of Program Failures.
Proceedings of International Conference on Software Engineering 2005, pp.342-351, May 2005.
バグのあるプログラムでは,その実行中に,ある時点で変数の値がおかしくなって,その値が他の変数の値に波及していって,最終的に出力文などで開発者から見えるものとなる.
間違った変数の値が他の変数に波及するタイミング(正しいテストケースとそうでないテストケースで,値が異なる変数の集合が変わったとき)を Cause Transition と呼んで,それを発見することがバグの原因を見つけることに役立つ(開発者が調べるべきプログラムの範囲が減少する)ことを,他の手法と比較実験して確認した論文.
Cause Transition の概念自体は悪くないような気がする.スライシングが「出力に影響を与えた文の集合」を求めるのに対して,入力された値の違いと,出力された値の違いの間に,どれだけ Cause Transition があったかを求める(実行履歴の中に区切りを入れると言ってよい?).
成功するテストケースと失敗するテストケースが与えられる必要があるので,まったく動かないプログラムのデバッグには使えなかったりするけれど.