オープンソースソフトウェアの 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
© Copyright 2024 ExpyDoc