Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
奈良先端科学技術大学院大学
ソフトウェア工学研究室
○内垣聖史,伊原彰紀,門田暁人,松本健一
システムの大規模化,多機能化に伴いテストケース
が爆発的に増加
カメラ
指紋認証

インターネット接続

GPS

多機能化

大規模化[1]

◦ 全てのソースコードをテストすることは現実的でない
◦ 全開発工数に占めるテスト工数の割合は50...
テスト開始前に欠陥モジュール(ソースコード)を予測
◦ 欠陥のないモジュールへ割り当てる工数を削減することで,
テスト工程を効率化
総工数:75人時
75人時
75

総工数:100人時

工数の削減
20人時

20人時
20人時
20人時
...
欠陥がありそうなモジュール
開発モジュール群(予測対象)
開発モジュール群(予測対象)

予測
モデル

予測
分類)
(分類)

欠陥がなさそうなモジュール

学習データ
・欠陥情報
欠陥の有無or数or密度
・メトリクス(特性値)
コード行...
従来研究では学習データとして,前バージョンの開発
終了時のスナップショット1のデータを利用
ウォータフォール開発プロセス
Ver. 3.2(現行Ver.)
リリース
予測時点

Ver. 3.1(前Ver.)
リリース

Ver. 3.0
リリ...
イテレーティブ型開発では開発途中で実績データ(メトリ
クス,欠陥情報)が計測でき,学習データとして利用可能
◦ オープンソースソフトウェア(OSS)ではインテレーティブ型が主流
OSSプロジェクトに対する欠陥予測に利用可能
イテレーティブ
開発...
欠陥予測において,いつの時点のデータを学習データ
として用いるのが適当かを明らかにする
Ver. 3.1(前Ver.)
リリース

~
~

Ver. 3.2(現行Ver.)
リリース
予測時点
(実装終了時)

・・・ ・・・ ・・・

学
...
開発途中のスナップショットを学習データとする欠陥予
測モデルの構築
学習データの計測時点による欠陥予測精度の比較
Ver. 3.1(前Ver.)
リリース

Ver. 3.2(現行Ver.)
リリース
実装終了時

~
~
・・・ ・・・ ・・...
OSSプロジェクトデータを対象に,学習データの計測時
点を移動させ,各学習データで構築したモデルを評価
◦ 評価データの計測時点は固定
学
習
モデル

学
習
モデル

学
習
モデル

評
価

予測対象: モジュール欠陥密度
◦ ソースコ...
モデル構築アルゴリズム
◦ ランダムフォレスト法[3]

モデルの予測精度の評価指標
◦

[4]

モジュールの規模を考慮した評価指標
値が大きいほどモデルの性能が良い
値域は [0,1]

[3] L. Breiman,“ Random f...
Eclipse Platformから取得したスナップショット
◦ 取得期間:2005年7月(ver3.1)~2006年7月(ver3.2)
◦ 各月1日0時時点のスナップショットを利用
使用メトリクス
メトリクス
AvgCyclomatic

...
Step1:予測モデルの構築
◦ 説明変数:13種のメトリクス(プロダクト10種+プロセス3種)
◦ 目的変数:欠陥密度
2005/8

~
~

2005/7

2006/6

スナップショット

・・・

メトリクス

欠陥密度

予測モデ...
Step2:欠陥密度の予測
◦ 構築した各予測モデルにそれぞれ評価データのメトリクスを
適用し,各モジュールの欠陥密度を予測
欠陥密度
(予測値)

予測モデル
予測モデル
1
評価データ

予測モデル
予測モデル
2
・
・
・

予測モデル...
Step3:

の算出

◦ 予測した欠陥密度と評価データから計測した欠陥密度の実
測値,モジュール規模より	
	を算出し,モデルごとに比較・
分析
欠陥密度 欠陥密度 モジュール
規模
(実測値) (予測値)
	1

	2

評価
データ
・...
学習データの計測時点が予測時点から…
◦ 遠い場合,予測精度が低く,近い場合,予測精度が高い

学習データの計測時点が遅くなるほど
計測時点が遅くなるほど精度が上昇する
計測時点が遅くなるほど
傾向を確認 (有意水準:p<0.01)
予測時点か...
使用するデータセット,モデル構築アルゴリズム,評価
指標は同一
学習データを固定(2005年7月時)し,その他のスナップ
ショットを評価データとして実験を実施
(本実験)
学
習

学
習

学
習

評
価

評
価

評
価

(追加実験)...
評価データの計測時点が早くなるほど
計測時点が早くなるほど精度が上昇す
計測時点
なるほど
る傾向を確認 (有意水準:p<0.01)
学習データに近い

1.0

学習データから遠い
学習データ:2005年7月時

0.8
0.6
0.4
0....
各モデルの予測精度とメトリクス値との関係を分析
◦ 時間経過により13個中9種のメトリクスの取り得る範囲が拡大
関数の数

コード行数
12000
10000
8000
6000
4000
10
0

追加行数

2500
9151 10032...
実験の結果より,学習データの計測時点が予測時点
に近いほど精度が増加する傾向
傾向を確認
傾向
(本実験)
不安定(
減少)
不安定( 増加 or 減少)

(追加実験)
単調増加

計測時点と予測時点が遠い場合,精度は不安定
計測時点と予測時...
目的
◦ 欠陥予測において,いつの時点のデータを学習データとして
利用するのが適当なのかを明らかにした

得られた知見
◦ 学習データ及び評価データとして利用する各スナップショット
の計測時点が近いほど高い予測精度が得られた
◦ 予測精度の高低...
妥当性の確認
◦ 他のOSSプロジェクトデータを利用して同様の実験を実施
現時点で約20プロジェクト分のモジュールデータを取得済み

プロジェクト特性が予測精度に与える影響の分析
◦ 開発の進捗に伴いメトリクス値が大きく変化する時期(プロ
プロ...
Upcoming SlideShare
Loading in …5
×

学習データ計測時点による欠陥モジュール予測精度の比較

1,054 views

Published on

Published in: Technology
  • Be the first to comment

学習データ計測時点による欠陥モジュール予測精度の比較

  1. 1. 奈良先端科学技術大学院大学 ソフトウェア工学研究室 ○内垣聖史,伊原彰紀,門田暁人,松本健一
  2. 2. システムの大規模化,多機能化に伴いテストケース が爆発的に増加 カメラ 指紋認証 インターネット接続 GPS 多機能化 大規模化[1] ◦ 全てのソースコードをテストすることは現実的でない ◦ 全開発工数に占めるテスト工数の割合は50%弱[2] ⇒テスト工程の効率化が重要 [1] 株式会社富士通研究所,”CPUの動作を実時間精度で忠実に再現できる世界最高速のシミュレーション技術を開発”, http://pr.fujitsu.com/jp/news/2012/03/13-1.html [2] テスト技術者交流会,“基本から学ぶソフトウェアテスト”,日経BP社,2001 2
  3. 3. テスト開始前に欠陥モジュール(ソースコード)を予測 ◦ 欠陥のないモジュールへ割り当てる工数を削減することで, テスト工程を効率化 総工数:75人時 75人時 75 総工数:100人時 工数の削減 20人時 20人時 20人時 20人時 30人時 30人時 30人時 30人時 5人時 20人時 5人時 5人時 3
  4. 4. 欠陥がありそうなモジュール 開発モジュール群(予測対象) 開発モジュール群(予測対象) 予測 モデル 予測 分類) (分類) 欠陥がなさそうなモジュール 学習データ ・欠陥情報 欠陥の有無or数or密度 ・メトリクス(特性値) コード行数,分岐数,etc. 過去の開発実績データ 4
  5. 5. 従来研究では学習データとして,前バージョンの開発 終了時のスナップショット1のデータを利用 ウォータフォール開発プロセス Ver. 3.2(現行Ver.) リリース 予測時点 Ver. 3.1(前Ver.) リリース Ver. 3.0 リリース (実装終了時) 要件分析 設計 実装 テスト 要件分析 設計 学習データ ・メトリクス コード行数 分岐数 etc. ・欠陥情報 欠陥の有無 欠陥数 欠陥密度 実装 テスト 評価データ (予測対象データ) 予測 モデル構築 予測モデル 1 ある時点のソフトウェアを構成するモジュールの集合 5
  6. 6. イテレーティブ型開発では開発途中で実績データ(メトリ クス,欠陥情報)が計測でき,学習データとして利用可能 ◦ オープンソースソフトウェア(OSS)ではインテレーティブ型が主流 OSSプロジェクトに対する欠陥予測に利用可能 イテレーティブ 開発プロセス 要件 分析 設計 要件 分析 テスト 設計 実装 要件 分析 テスト 実装 設計 テスト 実装 開発中に 計測可能 Ver. 3.1 リリース Ver. 3.2 リリース 予測モデル 6
  7. 7. 欠陥予測において,いつの時点のデータを学習データ として用いるのが適当かを明らかにする Ver. 3.1(前Ver.) リリース ~ ~ Ver. 3.2(現行Ver.) リリース 予測時点 (実装終了時) ・・・ ・・・ ・・・ 学 習 予測時点に近いデータを学習データとして利用可能 仮説 学習データの計測時点が予測時点に 学習データの計測時点が予測時点に データの計測時点が予測時点 近づくほど高精度での欠陥予測が可能 7
  8. 8. 開発途中のスナップショットを学習データとする欠陥予 測モデルの構築 学習データの計測時点による欠陥予測精度の比較 Ver. 3.1(前Ver.) リリース Ver. 3.2(現行Ver.) リリース 実装終了時 ~ ~ ・・・ ・・・ ・・・ 予測 予測モデル ・ ・ ・ 比較・分析 予測モデル モデル構築 予測モデル 8
  9. 9. OSSプロジェクトデータを対象に,学習データの計測時 点を移動させ,各学習データで構築したモデルを評価 ◦ 評価データの計測時点は固定 学 習 モデル 学 習 モデル 学 習 モデル 評 価 予測対象: モジュール欠陥密度 ◦ ソースコード1000行当たりの欠陥数 9
  10. 10. モデル構築アルゴリズム ◦ ランダムフォレスト法[3] モデルの予測精度の評価指標 ◦ [4] モジュールの規模を考慮した評価指標 値が大きいほどモデルの性能が良い 値域は [0,1] [3] L. Breiman,“ Random forests, ”Machine Learning, Vol.45, No.1, pp. 5-32, 2001. [4] T. Mende, and R. Koschke,“ Revisiting the evaluation of defect prediction models, ”Proceedings of International Conference on Predictor Models in Software Engineering (PROMISE’09), pp.1-10, 2009. 10
  11. 11. Eclipse Platformから取得したスナップショット ◦ 取得期間:2005年7月(ver3.1)~2006年7月(ver3.2) ◦ 各月1日0時時点のスナップショットを利用 使用メトリクス メトリクス AvgCyclomatic 概要 サイクロマティック複 雑度の平均 メトリクス CountStmtExe 概要 実行可能ステートメント 行数 CountLineCodeExe 実行可能コード行数 CountStmtDecl CountDeclClass クラス数 CountLineComment コメント行数 CountDeclfunction 関数の数 NumberOfRevisions 変更行数 CountLineBlanck 空白行数 AddedLines 追加行数 CountLineCode コード行数 RemovedLines 削除行数 CountLineCodeDecl 宣言コード行数 プロダクトメトリクス:10種類 プロダクトメトリクス:10種類 10 ― 宣言ステートメント行数 ― プロセスメトリクス:3 プロセスメトリクス:3種類 メトリクス: 11
  12. 12. Step1:予測モデルの構築 ◦ 説明変数:13種のメトリクス(プロダクト10種+プロセス3種) ◦ 目的変数:欠陥密度 2005/8 ~ ~ 2005/7 2006/6 スナップショット ・・・ メトリクス 欠陥密度 予測モデル 予測モデル 1 予測モデル 予測モデル 2 予測モデル 予測モデル 12 12
  13. 13. Step2:欠陥密度の予測 ◦ 構築した各予測モデルにそれぞれ評価データのメトリクスを 適用し,各モジュールの欠陥密度を予測 欠陥密度 (予測値) 予測モデル 予測モデル 1 評価データ 予測モデル 予測モデル 2 ・ ・ ・ 予測モデル 予測モデル 12 13
  14. 14. Step3: の算出 ◦ 予測した欠陥密度と評価データから計測した欠陥密度の実 測値,モジュール規模より を算出し,モデルごとに比較・ 分析 欠陥密度 欠陥密度 モジュール 規模 (実測値) (予測値) 1 2 評価 データ ・ ・ ・ 12 14
  15. 15. 学習データの計測時点が予測時点から… ◦ 遠い場合,予測精度が低く,近い場合,予測精度が高い 学習データの計測時点が遅くなるほど 計測時点が遅くなるほど精度が上昇する 計測時点が遅くなるほど 傾向を確認 (有意水準:p<0.01) 予測時点から遠い 予測時点に近い 1.0 0.8 0.6 0.4 0.2 評価データ:2006年7月時 0.0 7月 8月 9月 10月 11月 12月 1月 2月 2005年 3月 4月 5月 6月 2006年 学習データの計測時点 15
  16. 16. 使用するデータセット,モデル構築アルゴリズム,評価 指標は同一 学習データを固定(2005年7月時)し,その他のスナップ ショットを評価データとして実験を実施 (本実験) 学 習 学 習 学 習 評 価 評 価 評 価 (追加実験) 学 習 評 価 16
  17. 17. 評価データの計測時点が早くなるほど 計測時点が早くなるほど精度が上昇す 計測時点 なるほど る傾向を確認 (有意水準:p<0.01) 学習データに近い 1.0 学習データから遠い 学習データ:2005年7月時 0.8 0.6 0.4 0.2 0.0 8月 9月 10月 11月 12月 1月 2005年 2月 3月 4月 5月 6月 7月 2006年 評価データの計測時点(予測時点) 学習データの計測時点が予測時点に 近づくほど高精度での欠陥予測が可能 17
  18. 18. 各モデルの予測精度とメトリクス値との関係を分析 ◦ 時間経過により13個中9種のメトリクスの取り得る範囲が拡大 関数の数 コード行数 12000 10000 8000 6000 4000 10 0 追加行数 2500 9151 10032 8256 8421 8628 4000 2000 1500 1849 1881 1929 2051 2243 1329 1000 500 7月 3 10月 2005年 3 3 3 1月 4月 7月 2006年 0 1579 1366 2000 1000 3 3096 3223 3000 0 7月 0 0 10月 1月 2005年 0 4月 2006年 0 7月 0 0 7月 0 10月 2005年 0 1月 0 0 4月 7月 2006年 ■:最大値 ◆:最小値 ◦ 学習データと評価データの計測時点が離れるほどメトリクスの 分布の違いが大きくなる ⇒モデルに対する評価データの適合が困難になり,精度が低下 18
  19. 19. 実験の結果より,学習データの計測時点が予測時点 に近いほど精度が増加する傾向 傾向を確認 傾向 (本実験) 不安定( 減少) 不安定( 増加 or 減少) (追加実験) 単調増加 計測時点と予測時点が遠い場合,精度は不安定 計測時点と予測時点が近い場合,精度は単調増加 予測時点の3か月以内のデータを用いる事が望ましい 19
  20. 20. 目的 ◦ 欠陥予測において,いつの時点のデータを学習データとして 利用するのが適当なのかを明らかにした 得られた知見 ◦ 学習データ及び評価データとして利用する各スナップショット の計測時点が近いほど高い予測精度が得られた ◦ 予測精度の高低は,各スナップショット間のメトリクス値の取 り得る範囲の違いに左右されることが分かった 結論 ◦ 予測時点の3か月以内のスナップショットを学習データとして 予測モデルを構築することが望ましい 20
  21. 21. 妥当性の確認 ◦ 他のOSSプロジェクトデータを利用して同様の実験を実施 現時点で約20プロジェクト分のモジュールデータを取得済み プロジェクト特性が予測精度に与える影響の分析 ◦ 開発の進捗に伴いメトリクス値が大きく変化する時期(プロ プロ ジェクト初期)と変化が少ない時期(プロジェクト安定期 プロジェクト安定期)にお ジェクト初期 プロジェクト安定期 いて予測精度の傾向の強さに違いがあるかを検証 安定期 初期 予測 予測 立ち上げ ~ ~ 比較・分析 21

×