スライド 1 - トップエスイー

トップエスイー修了制作
静的コード解析メトリクスを用いた
バグ予測モデルの評価
NTTデータ
新井 広之
[email protected]
開発における問題点
本評価による解決
ソースコードは必ずバグが潜在しているものの,
そのバグがどこにあるかはわからない. そのた
めバグが潜在している可能性の高いモジュー
ルを特定し, 効果的に品質保証の作業を行いた
い. しかし実務で統計を利用したモデルは適用
経験がなく, どの手法をどのように適用すれば
よいかわからない.
研究分野で提案されている数種の既存手法を,
社内で実際に取得されているプロジェクトデー
タに適用し, バグの潜在している可能性の高い
ソースコードの検出の可能であることが検証で
きた. また手法の選択においても, より精度の高
いものを特定できたため, 効果的な品質保証活
動が可能になる.
バグ予測モデル利用の流れ
設
計
コーディ
ング
静的メトリクス
取得
静的メトリクス
取得ツール実行
public class Order {
public
int
totalAmount;
public
class
public
Order
class{ Order {
public
void Order
confirm(...)
public
int
public
totalAmount;
int
totalAmount;
public
class
{
{ public
public
void
public
confirm(...)
void confirm(...)
int totalAmount;
... { void confirm(...)
{ public
...{}
...
} ... }
}
大量の
ソースコード
モデル利用による
バグ予測
初回は
過去データで
モデルを構築
テスト計画の
立案
構築済モデルを
利用
y=αX+β
ファイル単位の様々な
統計的なモデル
メトリクス(行数, ネスト数, (影響するメトリクス
とその係数)
コメント率など)を取得
ソースファイル
OrderLogic.java
ConfirmValidation.java
OrderTransaction.java
…
結合
テスト
重点的なテスト箇所,
バグ改修作業を
テスト計画に反映
バグ予測
0.7 |||||||
0.65 ||||||
0.62 ||||||
…
バグが潜在している
可能性の高いソースのリスト
評価対象の手法
結果と課題
本取組では、「モデル利用によるバグ予測」時に
用いるモデルとして, 以下の複数の手法を評価した.
結果
評価用のプロジェクトデータで検証したところ,
以下の結果だった.
バグがあるかないかの判定(F値の高さで評価)
 ゼロ過剰モデルが最も性能が良い
バグ数の精度(残差平方和の小ささで評価)
 ハードルモデル, ゼロ過剰モデルが高精度
評価データでは約3/4のファイルにバグが含まれてい
る. 「バグはソースコードに偏在する」ため, ゼロが多い
ケースのモデルを利用することで高い精度が得られる
ことが分かった.
手法
特徴
応答変数が0から1の範囲に収まる。下の4つ
ロジスティック回帰 はソースファイル中のバグ数を予測するが,
これはバグが含まれているかどうかの判定に
モデル
利用する
ポアソン回帰
1件、2件と数えられるデータの発生分布を分
モデル
析する際によく用いられる
負の二項回帰
用途はポアソン回帰モデルに似ているが,
モデル
データの分散が大きいときに用いられる
ゼロが多い(本件ならバグがないソースファイ
ルが多い)場合の分析用に提案されているモ
ハードルモデル
デル. 内部的にゼロ用のモデルと1件以上の
場合のモデルの2つを分けて持つ
ハードルモデルと似ているが、内部的に持つ
モデルのうち, 「1件以上の場合のモデル」で
ゼロ過剰モデル
はなく「0件以上のモデル」とし, 応答変数の
ゼロと1以上を連続的に扱う
課題
今回の取組で統計的モデルの実用性, 精度の良い手
法がわかった. より手軽に利用するため, 「手順の自動
化」や, 「開発プロセスへの組込」が今後の課題である.
国立情報学研究所
トップエスイー
トップエスイー: サイエンスによる知的ものづくり教育プログラム
National Institute of Informatics
~サイエンスによる知的のものづくり教育プログラム~
文部科学省科学技術振興調整費
産学融合先端ソフトウェア技術者養成拠点の形成