[修士論文] メソッド入退出情報を利用した階層的欠陥箇所特定支援手法

小林研M2の原口さんが修士論文の発表を行いました.

論文題目:メソッド入退出情報を利用した階層的欠陥箇所特定支援手法
論文概要:

ソフトウェア開発においてデバッグは時間のかかる作業である.
バグの原因である欠陥を修正するためには,顕在化した不具合からプログラムの感染状態を遡ってソースコードを検査し,欠陥箇所を特定する必要がある.
感染状態が長く続く場合には欠陥箇所に辿り着くのは困難となる.
そこで,欠陥箇所の特定を支援する研究が多くなされている.

既存手法の中でも,成功テストと失敗テストにおけるプログラムの振舞いの違いを分析するスペクトラムベースデバッグは欠陥箇所特定に効果的であることが知られている.
ステートメントやメソッドのカバレッジ等を特徴ベクトルとし,テスト成功時と失敗時で統計的に差異がある箇所を検出する.
しかし,ステートメントレベルで解析を行う手法では,ステートメントが実行されるコンテキストを考慮できないという問題点がある.
メソッドレベルで解析を行う手法では,欠陥箇所の実行によるメソッド内での振舞いの変化やメソッド呼出しによる感染状態の伝播を十分に考慮できないという問題点がある.

本研究は,プログラムの実行ログを解析する際の特徴分析を階層的に行うことで欠陥箇所特定を支援する手法を提案する.
欠陥を含むと疑われるメソッドを順位付けし,その関連メソッドを含めた対象内のステートメント単位での欠陥箇所推定に重み付けを行う.
メソッドレベルでの欠陥箇所推定では,メソッドの退出位置を解析に用いることで欠陥によるメソッドの振舞いの変化を考慮し,より高精度なメソッドの順位付けを行う.
また,関連メソッドの計算ではメソッドの呼出関係を解析しメソッド呼出しによる感染状態の伝播を考慮する.
あるメソッドからメソッドの呼出関係を複数回辿ることで到達可能なメソッド集合を, 基点となるメソッドと同等に扱うことで,メソッドランキングの修正を行う.
これらの処理によって計算されるメソッドの順位を重みとして高精度なステートメントレベルでの欠陥箇所推薦を行う.

本研究ではDefects4JとSIRから収集した欠陥箇所が既知であるオープンソースソフトウェアを対象として,44個のバグバージョンに対して提案手法を適用することで手法の評価実験を行った.
この結果から,メソッドレベルの解析におけるメソッドの退出位置を考慮することによるメソッドの振舞い分析やメソッドの呼出関係を辿ることによる感染状態の伝播の考慮が有用であることを示した.
さらに,提案手法では34/44個のバグバージョンについて欠陥箇所の特定が可能であり,ステートメントレベルで解析を行う既存手法で最も精度の高いO^P以上の性能を持つことを示した.