[修士論文] メソッド実行範囲分析に基づく軽量欠陥箇所特定手法

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

論文題目:メソッド実行範囲分析に基づく軽量欠陥箇所特定手法
論文概要:

ソフトウェア開発において、実装した機能が仕様通り動くか確認するテスト段階がある。このテストにおいて、仕様と違う不具合が顕在化した場合、不具合の原因である欠陥を修正しないといけない。しかし、修正すべき欠陥の箇所は顕在化した不具合から感染状態を遡らないといけない。この感染状態が長ければ長いほど欠陥箇所を特定するのは困難である。そのため、デバッグは非常に労力のかかる作業であり、デバッグの労力を減らすために欠陥箇所特定を支援する研究が多くなされている。

既存手法は、静的解析に基づくものと動的解析に基づくものがある。動的解析に基づく手法は大きくテストの成否を利用するか否かにより分かれており、テストの成否を利用する手法を統計的デバッグといい、欠陥箇所特定に効果的であることが知られている。しかし、多くの統計的デバッグはある時点での状態のみを用いており、そこに至る経緯を考慮していない。一方、実行パスを考慮する方法は計算コストが高く実行が遅い問題点がある。

これらの問題点に対し多段階のデータ依存を取得し疑似パスを再現する手法を村松らが提案し大沼が実装、中野が拡張し評価実験を行っている。しかし、数千行規模のプログラムで多段階のデータ依存を取得する際数十分の時間が必要となってくるため、高速かつ低リソースで作動する軽量手法が望まれる。

メソッドの実行範囲の分析に基づく軽量欠陥箇所特定支援手法を提案する。提案手法では、メソッドの脱出箇所を検出することでメソッドの実行範囲の分析を行ない、欠陥によって振る舞いが変化したメソッドを絞り込む。その後絞り込んだメソッド内の詳細な振舞いの差異を重視する2 つのランキング手法によって、従来手法と同等程度の実行コストを維持しながら欠陥箇所特定の精度向上を実現する。メソッド内の詳細な振舞いの差異を重視する2 つの手法のうち1 つはメソッドに対する呼び出し関係を用いる手法であり、本研究では手法1 と呼ぶ。2 つ目の手法はメソッド内に存在するメソッド呼び出しステートメントに対し選択的に展開する手法であり、本研究では手法2 と呼ぶ。

また、本研究では提案手法を実装し、メソッドレベルとステートメントレベルで解析精度を既存手法と比較する実験を通して提案手法の有効性を評価した。この結果から、メソッドレベルでの提案手法が、既存手法より優れた性能を示した。また、ステートメントレベルにおいても提案手法が既存手法より向上された性能を示した。2 つの手法のうち優れていたのは手法2 の選択展開であった。