オープンソースソフトウェアのFault

オープンソースソフトウェアの
Fault-Proneモジュール判別に
向けたデータ解析
工学系研究科博士前期課程
海尻海谷研究室
04TA521J 内宮秀明
1
研究の動機
商用向けソフトウェアには納期がある。
検証期間に限りがある。
全てのルートを検証することは困難
効率的にバグを刈り取りたい
現状の仕組みで効率よく行いたい。
→更新履歴情報を活用すれば。。。
2
更新履歴の活用
リビジョン
svnリポジトリ
更新履歴情報
(コミット回数)
ソフトウェア
リリース n+1
リビジョン 1.5
測度を収集
品質管理用
データ
ソフトウェア
リリース n+2
リビジョン 1.10
ソフトウェア
リリース n
リビジョン 1.1
測度を収集
svnリポジトリ
ソースコード
時間
3
背景・目的
[Nagappan2005](*)では、コードチャーンによる測
度を用いてFault-proneモジュールの判別を行った。
[Nagappan2005]の対象は、Windows Server2003
本研究では、Nagappan2005で提唱された手法が、
他のソフトウェアにて適用できるのか検証を行う。
(*) N. Nagappan, Ball, T., "Use of Relative Code Churn Measures to
Predict System Defect Density",Proceedings of International Conference
on Software Engineering, pp. 284-292, 2005
4
用語の定義(その1)
コードチャーン
前回リリースから今回のリリースまでに追加、
変更、削除された LOC数のこと。
相対的コードチャーン
コードチャーンを用いて算出された測度
のこと。本発表では、相対測度と呼ぶ。
絶対測度
ソースコード及び、更新履歴情報から測定し
た測度のこと。
5
用語の定義(その2)
リリース
あるソフトウェア製品を公開すること
リビジョン
バージョン管理ツール(*)にコミットする際に更新される
改訂番号のこと。
測度(メトリクス)
ソフトウェア品質を測る尺度のこと。
欠陥密度
バグ数/KLOC
(*)代表的なツールとして、CVSやSubversionがある。
6
Nagappan2005の要旨
相対測度は欠陥密度と相関関係がある
コードチャーンを用いた相対測度を提唱
相対測度は欠陥密度の予測が可能
相対測度はFault-Proneの判別が可能
7
Fault-prone判別のメリット
Fault-proneは「誤りの可能性」という意味
Fault-proneモジュールを重点的に検証
することで品質向上を期待
短い期間で効果的な検証が可能
8
実験の対象
背景
守秘義務により、自社コードは適用不可
Apache Http Serverを対象
Apacheについて
商用システムから家庭用まで幅広く利用
オープンソースソフトウェア
ソースコードや更新履歴の入手が容易
9
仮説の設定
Nagappan2005の仮説をApacheに対して適用する
1.
2.
3.
4.
相対測度と欠陥密度は正相関
絶対測度よりも相対測度の方が有効
欠陥密度の予測ができる
Fault-proneモジュールを判別できる
絶対測度とは、ソースコードや更新履歴情報から直接、得られる測度のこと
相対測度とは、コードチャーンを用いて相対的に表した測度のこと
測度は、メトリクスとも言う。
10
データ収集
実験を行うにあたり、以下に示すデータを収集した。
絶対測度の収集
ソースコード・更新履歴情報から収集
相対測度の算出
絶対測度を基に、計算式から算出
バグ数を求める
更新履歴情報のコメント部分から、リリース単
位で算出
11
絶対測度
Total LOC
コメント行および空行を除いた総line数。
Churned LOC
追加・変更を行ったline数。
Deleted LOC
削除を行ったline数
File count
コンパイルで使用したファイル数。
Weeks of churn
コミットするまでに要した時間(週単位)
Churn count
コミットの回数
Files churned
チャーンが発生したファイル数
Nagappan, Ball, T., “Use of Relative Code Churn Measures to Predict System Defect Density”,Proceedings of International Conference
on Software Engineering, pp. 284-292, 2005 より引用した。
12
相対測度(相対的コードチャーン)
M1
M2
M3
M4
M5
M6
M7
M8
Churned LOC / Total LOC
Delete LOC / Total LOC
Files churned / File count
Churn count / Files churned
Weeks of churn / File count
Lines worked on / Weeks of churn
Churned LOC / Deleted LOC
Lines worked on / Churn count
Lines worked on = Churned LOC + Delete LOC
Nagappan, Ball, T., “Use of Relative Code Churn Measures to Predict System Defect Density”,Proceedings of International Conference
on Software Engineering, pp. 284-292, 2005 より引用した。
13
実験(1/3)
仮説1(コードチャーンと欠陥密度は正相関)の検定
コードチャーンと欠陥密度の相関係数を求め、正相関で
あることを確認する。
仮説2(絶対測度よりも相対測度が有効)の検定
重回帰分析により、相対測度と欠陥密度の関係が、
絶対測度との関係よりも相関があることを確認する。
目的変数:欠陥密度
説明変数:絶対測度及び、相対測度
14
実験(2/3)
仮説3(欠陥密度の予測ができる)の検定
データの2/3を重回帰分析に使用して、欠陥
密度を予測するモデル式を作成
残1/3を検証用データとして、モデル式に適用
し、欠陥密度を予測
予測値と実測値との乖離状況を確認し、欠陥
密度の予測の可能性を検証
15
実験(3/3)
仮説4(Fault-proneを判別できる )の検定
欠陥密度が0.435(*)以上のものをFaultproneモジュール、そうでないものをnonFault-proneモジュールと定義
データの2/3を使用してモデル式を算出
残1/3を検証用データとして、モデル式に適用
し、判別分析を行い、Fault-proneの判別状
況を確認
(*)Nagappan2005で定義された計算式にApacheで取得したデータ値を代入し
算出した結果
16
統計分析ツール
高度な計算
費用は0円
R
• フリーの統計ツール
• SPSS並みの操作が可能
操作が容易
Rコマンダ
• RをGUIベースで操作可能
17
仮説1の実験結果(1/3)
(絶対測度と欠陥密度との相関)
Churn.count
Churned.LOC
Defects/KLOC
Deleted.LOC
File.count
Files.churned
Total.LOC
Weeks.of.churn
Churn.c Churned. Defects Deleted. File.count Files.chu Total.LO Weeks.of
ount
LOC
/KLOC LOC
rned
C
.churn
1.000
0.890
0.357
0.754
-0.629
0.493 -0.710
0.279
0.890
1.000
0.189
0.865
-0.411
0.682 -0.516
0.455
0.357
0.189
1.000
0.183
-0.752 -0.042 -0.763 -0.545
0.754
0.865
0.183
1.000
-0.417
0.624 -0.514
0.365
-0.629 -0.411 -0.752 -0.417
1.000 -0.092
0.977
0.443
0.493
0.682 -0.042
0.624
-0.092
1.000 -0.183
0.364
-0.710 -0.516 -0.763 -0.514
0.977 -0.183
1.000
0.344
0.279
0.455 -0.545
0.365
0.443
0.364
0.344
1.000
File.countと欠陥密度は負の相関がある。
ファイル数が増加すると欠陥密度は小さくなる傾向がある。
Total.LOCと欠陥密度は負の相関がある。
総LOC数が増加すると欠陥密度は小さくなる傾向がある。
Week of churnと欠陥密度は、やや負の相関がある。
コミットするまでの期間が長ければ、欠陥密度は小さくなる傾向がある。
•Week of churn=追加/変更したLOC数+削除したLOC数の合計
18
仮説1の実験結果(2/3)
(相対測度と欠陥密度との相関)
M1
M2
M3
M4
M5
M6
M7
M8
Defects
/KLOC
M1
M2
1.000
0.854
1.000
M3
M4
M5
M6
M7
M8
0.613 0.156 0.455 0.710 0.022 0.638
0.578 0.097 0.274 0.789 -0.407 0.660
1.000 -0.466 0.294 0.417 -0.145 0.800
1.000 -0.080 0.182 0.215 -0.400
1.000 -0.211 0.100 0.318
1.000 -0.256 0.455
1.000 -0.376
1.000
Defects
/KLOC
0.235
0.273
0.019
0.231
0.318
0.630
0.042
-0.095
1.000
M6(Lines worked on / Weeks of churn)と欠陥密度は、やや正の相関がある。
単位時間あたりの変更量が多い時は、欠陥密度が増加する傾向がある。
•Lines worked on=Churned LOC + Delete LOC
19
仮説1の実験結果(3/3)
絶対測度と欠陥密度の関係
規模が増えると欠陥密度は小さくなる
コードチャーンについては相関があるとは断
定できない。
相対測度と欠陥密度の関係
M6については、やや相関関係がある
コードチャーンについては相関があるとは断
定できない。
20
仮説2の実験結果
Model
R
2
Adjusted
R
2
P値
絶対
測度
ALL
0.638
0.469 0.0147
Step-wise
0.469
0.495
0.004
相対
測度
ALL
0.015
0.316
0.086
0.61
0.414
0.013
Step-wise
相対測度と絶対測度ともに、欠陥密度とはやや相関がある。
相対測度と比べて絶対測度の方が、やや相関がある。
21
仮説3の実験結果(1/3)
モデル式を用いた予測値と実測値を重回帰分析を行った結果
Model
R
2
Adjusted
R
2
P値
絶対
測度
ALL
0.645
0.369
0.117
Step-wise
0.585
0.396
0.055
相対
測度
ALL
0.714
0.429
0.108
Step-wise
0.688
0.583
0.005
相対測度を用いたモデル式の方が相関がある
22
仮説3の実験結果(2/3)
予測値と実測値を用いて相関係数を求めた結果
ピアソンの
相関係数(p値)
Model
絶対
測度
0.793 (0.06)
0.771 (0.103)
0.88(0.02)
0.771 (0.103)
ALL
0.72 (0.107)
0.771 (0.103)
Step-wise
0.34(0.513)
0.257 (0.658)
ALL
Step-wise
相対
測度
スピアマンの
相関係数(p値)
データが正規分布の時はピアソンの相関係数が適用可能
データが非正規分布の時はスピアマンの相関係数が適用可能
23
仮説3の実験結果(3/3)
• 重回帰分析の結果においてはP値<0.05に着目
すると、相対測度の方が相関係数は高かった。
• これに対して、ピアソンやスピアマンの相関係係
数を算出した値において、 P値<0.05に着目す
ると、絶対測度(step-wise) のピアソン相関係数
が最も、信頼性のある結果となった。
• →仮説3においては、相対測度が欠陥密度の予
測に有効であるとは断定できない。
24
仮説4の実験結果
Fault-proneモジュールの判別分析を行った結果
Model
再現率
(recall)
適合率
(precision)
絶対測度
0.4
1.0
相対測度
0.8
0.8
相対測度の方が再現率が高い結果となった。
適合率は、Fault-proneモジュールと予測したうち、実際にFault-proneモジュー
ルである割合を示す。
再現率は、すべてのバグを含むモジュールのうち、バグを含むモジュールと予
測した割合を示す。
25
おさらい
Nagappan
2005
今回
仮説1
○
×
仮説2
○
×
仮説3
○
×
○ 仮説は成立
仮説4
○
○
× 仮説は不成立
• Apacheによる実験では、仮説4のみ
成立した。
26
Apacheにおける結論
仮説1と仮説2の実験結果により、両測度ともに
欠陥密度の相関は見当たらない。
仮説3の実験結果により、絶対測度による
Fault-proneの判別分析は、再現率0.8であり、
有効といえる。
相対測度と欠陥密度は相関が無いにもかかわ
らず、相対測度については、仮説4が成立してい
る。この理由は、今回の対象とした測度以外の
要素が関与していると考えられる。
Nagappan2005の手法は一般化されていると
は言い難い。
27
今後の課題
• 欠陥密度を予測するにあたり、欠陥密度
と因果関係のある第三の要素を究明する。
28
ご清聴ありがとうございました。
29