ソフトウェア開発での品質予測の事例紹介...
TRANSCRIPT
©PMI Japan Chapter, 2014 . Copyright and all rights reserved.
ソフトウェア開発での品質予測の事例紹介~その2~
定量的プロジェクトマネジメント事例研究会
代表 山田 知満,PMP
1
2014年12月6日
©PMI Japan Chapter, 2014 . Copyright and all rights reserved.
ソフトウェア開発で過去の品質実績(設計書のレビュー結果、コードレビューや試験の結果、出荷後の不具合)を蓄積すると、その開発チーム固有の欠陥予測モデルを構築することができる。
回帰分析と判別分析の手法を組み合わせた欠陥予測の手法とその適用事例を紹介する。
概要
2
©PMI Japan Chapter, 2014 . Copyright and all rights reserved.
1.品質予測の目的2.品質予測モデルの探索3.判別分析の手法4.新しい欠陥予測手法5.予測モデルの適用事例6.今後の課題7.付録
目 次
3
46
1013182425
©PMI Japan Chapter, 2014 . Copyright and all rights reserved.
1.品質予測の目的
開発フェーズ毎に混入する誤り(欠陥)を定量的に予測し、その数を低減することによって出荷後の不具合を一定レベル以下にする。
設計 製作 試験
欠陥数
出荷後の不具合を一定レベル以下に
製作での欠陥混入を一定レベル以下に
設計での欠陥混入を一定レベル以下に
4
©PMI Japan Chapter, 2014 . Copyright and all rights reserved.
誤りの混入と除去(実績)
0
5
10
15
20
25
30
35
要件
定義
外部
設計
内部
設計
ソ製
作
単体
試験
ソ試
験
出荷
後
誤り件数(件/実KL)
Project A
Project B
Project C
Project D
Project E
Project F
開発チーム毎の欠陥混入と除去グラフ(実績)
5
欠陥数/KL
外部設計 内部設計 製作 単体試験 結合試験
欠陥混入と除去(実績)
©PMI Japan Chapter, 2014 . Copyright and all rights reserved.
2. 品質予測モデルの探索
開発チーム毎に欠陥混入と除去のモデルが成り立つと仮定
設計と製作時に混入した欠陥を品質データから予測
外部設計 内部設計 製作
X
Y
Z
欠陥数
▲▲ ▲
単体試験
▲
混入欠陥予測
残存欠陥予測
欠陥混入と除去のモデル
xy
z
結合試験
▲
6
WVU
©PMI Japan Chapter, 2014 . Copyright and all rights reserved.
①混入欠陥数を目的変数とし、相関がある開発規模やプロセス指標を説明変数と仮定混入欠陥数=A × 説明変数1+ B × 説明変数2 ・・・ + C (線形の予測式の場合)②目的変数の変動を説明できる説明変数の組合せと回帰係数と定数項を決める。③予測式として利用可能か検証する。④利用可能な予測式の組合せが見つかるまで①から③を繰り返す。
予測式の例
予測1 設計時の混入欠陥数=A × 誤り指摘数 + D
予測2 設計時の混入欠陥数=B × 設計頁数 + C × レビュー時間 + E
(A、B、Cは回帰係数、D、Eは定数)
(注)説明変数の組合せでお互いに相関が強いものはモデル式が不安定になるため除外する。
混入欠陥の予測式
7
©PMI Japan Chapter, 2014 . Copyright and all rights reserved.
0
50
100
150
200
-20 0 20 40 60 80 100 120 140誤り指摘数
設計
混入
欠陥
数 実
測値
0
50
100
150
200
設計
混入
欠陥
数 実
測値
0 50 100 150 200設計混入欠陥数 予測値 P<.0001
R2乗=0.89 RMSE=14.77
外れ値を除外するとモデル式としての寄与率(R2乗)は大きくなり誤差(RMSE)は小さくなる。
外れ値
設計混入欠陥数=A×誤り指摘数+D
8
誤り指摘数
設計混入欠陥
©PMI Japan Chapter, 2014 . Copyright and all rights reserved. 9
欠陥数の予測
レビューで検出した欠陥数
品質が悪いデータのグループ
品質が良いデータのグループ
X
Yb
Ya
開発チーム毎に欠陥混入の割合(直線の傾き)は、異なる。開発チーム内でも品質が良いグループと品質が悪いグループでは、傾きが異なる。
欠陥数の予測式 Y= A x X + CX:レビューで検出した欠陥数 A:回帰係数 C:定数
©PMI Japan Chapter, 2014 . Copyright and all rights reserved. 10
3.判別分析の手法
品質が良いグループと品質が悪いグループでは、統計的な分布にわずかな差異がある場合が多い。この差異を利用して開発中のソフトウェア品質の良否とその確率を求める。
品質が良い 品質が良い品質が悪い 品質が悪い
設計レビューの誤り指摘の比較 コードレビューの誤り指摘の比較
©PMI Japan Chapter, 2014 . Copyright and all rights reserved. 11
(判別分析の手順)
(1)収集した品質データを品質が良いグループと品質が悪いグループに分ける。
例 出荷後不具合 n件/KL未満かn件/KL以上)
(2)2つのグループについて統計情報を計算する。
例 変数の平均値、分散、共分散、分散・共分散の逆行列
(3)判別したいターゲットXからの統計上の距離(マハラノビスの距離)を計算する。
(4)ターゲットXは、統計上の距離が近い方に属していると判別する。
(5)統計関数を利用して各々のグループに属する確率を求める。
©PMI Japan Chapter, 2014 . Copyright and all rights reserved. 12
変数1
X●
●
●
変数3
変数2
A:品質が良いグループB:品質が悪いグループX:開発中の判別したいターゲット
B
A
Ra:品質が良いグループに属する確率Rb:品質が悪いグループに属する確率Ra + Rb = 1
誤判別率:間違って判別される割合。判別分析の予測精度を表す。
©PMI Japan Chapter, 2014 . Copyright and all rights reserved. 13
4.新しい欠陥予測手法
回帰分析と判別分析の手法を組み合わせることで高い精度で欠陥を予測する。
(手順)
(1)品質が良いグループに属する場合の欠陥を予測する。(Ya)
(2)品質が悪いグループに属する場合の欠陥を予測する。(Yb)
(3)判別分析により2つのグループに属する確率を求める。
Ra:品質が良いグループに属する確率
Rb:品質が悪いグループに属する確率
(4)ターゲットの欠陥予測は、2つの確率の期待値として求める。
Y= Ya * Ra + Yb * Rb
©PMI Japan Chapter, 2014 . Copyright and all rights reserved. 14
予測
変数X
Ya
Yb
全データによる予測式
品質の良いグループによる予測式
品質の悪いグループによる予測式
Ya:品質が良いグループに属すると仮定した場合の予測値Yb:品質が悪いグループに属すると仮定した場合の予測値Y :YaとYb及びその確率から求める予測値
Y
©PMI Japan Chapter, 2014 . Copyright and all rights reserved.
回帰分析と判別分析を組み合わせて欠陥予測をする。
(注意)過去データの分布状況(良いグループと悪いグループの重なり具合)や変数の組合せにより誤判別率は変化する。誤判別率は、適切な変数の組合せて極力小さくする。
15
判別分析の確率を利用して欠陥予測
プログラムレビュー欠陥検出数
品質が良い場合の予測
品質が悪い場合の予測
混入欠陥予測
残存欠陥予測
品質が良い確率
判別結果
機能1 24 25 35 29.0 5.0 0.6 ○
機能2 33 30 45 40.5 7.5 0.3 ×
機能3 19 18 28 20.0 1.0 0.8 ○
品質が良いグループ
品質が悪いグループ
設計フェーズの残存欠陥の予測値
次フェーズの混入欠陥の予測値
判別分析の判定とその確率
16©PMI Japan Chapter, 2014 . Copyright and all rights reserved.
設計フェーズでの出力例
©PMI Japan Chapter, 2014 . Copyright and all rights reserved. 17
製作欠陥予測内部設計欠陥予測外部設計欠陥予測
外部
設計
欠陥
実績
製作
欠陥
実績
内部
設計
欠陥
実績
外部設計 内部設計 製作 単体 結合
欠陥混入と除去(予測と実績)
残存合計の欠陥予測
残存
合計
の欠
陥実
績
©PMI Japan Chapter, 2014 . Copyright and all rights reserved. 18
(事例1)開発チームX・過去2年分の品質実績から欠陥予測を実施(下図)・検証のため品質悪化の時期と品質改善の時期を比較。
5. 予測モデルの適用事例
(検証)欠陥混入と除去のグラフ(検証)残存欠陥のグラフ
©PMI Japan Chapter, 2014 . Copyright and all rights reserved. 19
品質が悪い時期の予測
品質が良い時期の予測
・品質悪化の時期は、残存欠陥が多い。・品質改善の時期は、残存欠陥が少ない。・欠陥予測は、実績と良く一致している。
品質悪化時と品質改善時の実績比較
©PMI Japan Chapter, 2014 . Copyright and all rights reserved. 20
(事例2)開発チームY・過去2年分の品質実績から欠陥予測を実施(下図)・設計レビューでの欠陥検出が少ないがコードレビューで多く検出。・開発チームYは、途中で2つの開発チームY1とY2に分かれた。・開発チームY1とY2は、継続して開発中。
(検証)欠陥混入と除去のグラフ(検証)残存欠陥のグラフ
©PMI Japan Chapter, 2014 . Copyright and all rights reserved. 22
(事例3)開発チームZの予測と実績
・過去実績なし。類似APP開発(Y)の予測式を適用。・リリース毎の予測と実績は、リリース時期により差異あり。
(検証)開発チームZ(予測)と開発チームY(実績)との比較
©PMI Japan Chapter, 2014 . Copyright and all rights reserved. 23
開発チームZ全体の予測と実績
初期のリリース
最新のリリース
途中のリリース
©PMI Japan Chapter, 2014 . Copyright and all rights reserved. 24
事例から分かること
・欠陥の予測と実績は、比較的良く一致している。・開発チーム毎の欠陥混入と除去の違いがグラフ化により見える。・どのフェーズで残存欠陥を多く残しているかを指摘できる。・今後検出される出荷後不具合の件数を予測できる。
課題・欠陥予測ツールの開発現場での活用と定着・判別分析手法の誤判別率の改善・欠陥予測のガイドライン作成と公開
6. 今後の課題
©PMI Japan Chapter, 2014 . Copyright and all rights reserved. 25
7.付録
7.1 判別分析の計算方法7.2 欠陥予測手法
7.3 研究会の紹介
26
開発中のプロジェクトの変数をXとする。品質の良いグループと品質の悪いグループで次の計算をしてそれぞれのグループの平均からの統計的な距離を求める。
品質の良いグループとの距離D2a :変数Xと品質の良いグループの平均値と分散で計算
品質の悪いグループとの距離D2b :変数Xと品質の悪いグループの平均値と分散で計算
変数Xは、統計的な距離が近い方のグループに属していると判別する。
D2a < D2
b なら開発中のプロジェクトの変数Xは、品質が良いグループに属する。D2
a > D2b なら開発中のプロジェクトの変数Xは、品質が悪いグループに属する。
©PMI Japan Chapter, 2014 . Copyright and all rights reserved.
7.1 判別分析の計算方法
27
2変数(X、Y)と3変数(X、Y、Z)の場合のマハラノビスの距離D2の計算方法
©PMI Japan Chapter, 2014 . Copyright and all rights reserved.
28
マハラノビスの距離は、一般にカイ2乗分布に従うことが知られている。「判別の重み(確率)」をカイ2乗分布の右側確率F(D2,k)を使って次のように定義する。
品質が良いと判別した場合の重み(確率)=F(D2a,k)/(F(D2
a,k) + (F(D2b ,k) )
品質が悪いと判別した場合の重み(確率)=F(D2b,k)/(F(D2
a,k) + (F(D2b ,k) )
Excel データ分析の関数で表すと次のようになる。F(D2,k) =CHISQ.DIST(D2,k) k:自由度(変数の個数)
©PMI Japan Chapter, 2014 . Copyright and all rights reserved.
29
7.2 欠陥予測手法
判別分析と回帰分析を組み合わせて利用する新しい欠陥予測の手法を説明する。
(1)過去の品質データ(設計頁数、レビュー時間、誤り指摘数、出荷後不具合数、開発規模等)を品質の良いグループと品質の悪いグループに分ける。2つのグループは、数が異なっていても良いが、同程度に分ける。
2つに分ける方法の例・出荷後不具合があるかないか・出荷後不具合がn件/KL以上か未満か
(2)品質の良いグループと悪いグループでそれぞれ回帰分析を行い、混入欠陥数を予測する予測式とそのパラメータを決める。
予測式の例・混入欠陥数=A*誤り指摘数+B・混入欠陥数=C*設計頁数+D*レビュー時間+E
(3)品質の良いグループと悪いグループの平均値、分散・共分散行列とその逆行列を求める。(判別分析の準備)
©PMI Japan Chapter, 2014 . Copyright and all rights reserved.
特願2014-169285
(4)設計完了時点の品質データ(設計頁数、レビュー時間、誤り指摘数)に対して判別分析を行い、品質が良いグループか品質が悪いグループか、どちらに属しているかを判別する。またその確率(Ra:品質が良い確率、Rb:品質が悪い確率 Ra + Rb=1)を求める。
(5)品質が良いグループの回帰分析で求めた混入欠陥の予測式から混入欠陥の数Yaを求める。また品質が悪いグループの回帰分析で求めた混入欠陥の予測式から混入欠陥の数Ybを求める。
(6)混入欠陥Yの期待値は、次式で求める。
混入欠陥 Y = Ya * Ra + Yb * Rb
(7)残存欠陥Zは、次式で求める。
残存欠陥 y= Y - レビューで検出した誤り指摘数
30©PMI Japan Chapter, 2014 . Copyright and all rights reserved.
外部設計 内部設計 ソ製作
WV
X
Y
Z
欠陥数
▲▲ ▲ 試験
不具合
▲
混入欠陥予測
残存欠陥予測xy
z
外部設計からソ製作までの各フェーズで同じ手法により混入欠陥と残存欠陥を予測することができる。(下図のX,Y,Zとx,y,z)
試験開始時点の残存欠陥は、x,y,zの合計値である。ただし、単純に予測値を合計すると誤差が大きくなる。このため試験開始前の残存欠陥合計(下図のU)は、外部設計からソ製作までに計測したデータを用いてモデル式を作成し、判別分析と組み合わせて期待値を求める。試験で検出した誤りを除いた残りが出荷後不具合W(予測値)である。
31©PMI Japan Chapter, 2014 . Copyright and all rights reserved.
U
©PMI Japan Chapter, 2014 . Copyright and all rights reserved.
7.3 研究会の紹介
2009年にEVM研究会との合同WGとして発足。定量的なプロジェクトマネジメントの事例を集めて議論し、開発現場ですぐに役立つ研究成果をまとめて公開することを目標に活動している。2012年にCCPM研究WG発足。
毎月、定例会やインターネット会議、メーリングリスト等により意見交換し活動している。この分野に興味・関心のある方の参加をいつでも歓迎する。
32
PMI日本支部関西ブランチ定量的プロジェクトマネジメント事例研究会
PMI日本支部の部会活動≫関西ブランチ≫定量的プロジェクトマネジメント事例研究会https://www.pmi-japan.org/session/cat379/quantitative.php
活動紹介とメンバー募集