[修士論文] 確率的プログラム依存に基づく欠陥箇所特定支援手法

小林グループ(名古屋大学)M2の村松さんが修士論文の発表を行いました.

論文題目:確率的プログラム依存に基づく欠陥箇所特定支援手法
論文概要:

プログラムを実行した際に不具合が見つかった場合,開発者は不具合を再現させ,その原因箇所となる欠陥を特定し,修正を行う.この一連の作業であるデバッギングにおいて,欠陥箇所を特定することは時間や労力のかかる作業である.なぜなら,最終出力として検出される不具合は観測可能であるが,その途中状態である異常な状態はブレークポイントなどを利用しなければ観測できないからである.また,欠陥は必ずしも不具合の近傍にあるとは限らず,その特定は難しい.

欠陥箇所特定を支援する手法が数多く研究されている.既存手法は,静的解析に基づくものと動的解析に基づくものがある.中でも動的解析に基づく統計的デバッギングは欠陥箇所特定に効果的であることが知られている.統計的デバッギングとは,成功実行と失敗実行の多数のトレースを分析する方法である.ステートメントカバレッジやデータ依存,条件分岐の評価式などを特徴ベクトルとし,成功実行と失敗実行で統計的に差異がある箇所を検出する.しかしこれらの手法では,ある部分的な振舞いを観測するため,パス全体を識別することはできない.そのため,離れた場所の欠陥が伝播して異常状態として現れる状態を検出できない.

そこで本研究は,多段階のデータ依存性を考慮することで欠陥箇所特定能力を向上させる.変数の定義・更新や参照を記録した実行トレースから各ステートメントのデータ依存を取得する.多段階のデータ依存性を考慮しパスを識別するために,ステートメント間のデータ依存を推移的に伝播させる.欠陥箇所を特定するために,学習とランキングを行う.学習では,成功実行のトレースを利用し,各ステートメントのデータ依存伝播を求める.各データ依存伝播ごとに発生確率を計算し,これをデータ依存伝播確率と呼ぶ.ランキングでは,1回の失敗実行のトレースを利用する.失敗実行で起こったデータ依存伝播と学習で求めたデータ依存伝播確率を基に,確率が低い順にランキングを行う.この確率が低いステートメントを欠陥と疑わしいステートメントとして提示する.

欠陥を含むプログラムに対して提案手法を適用した結果,データ依存伝播確率を用いることで,従来の手法では区別できなかった特定のパスによって生じる欠陥を識別することができた.また異常状態の遷移を追跡することによって欠陥箇所特定の支援ができることを示せた.