ソフトウェアメトリクスの測定精度の課題にどう対処するか～測定精度を考慮した統計分析の実践～
ヤマハ(株)
小池 利和

1自己紹介小池 利和
ヤマハ(株) 品質保証部【経歴】
1998年～ SEPG、SQAとしてソフトウェアメトリクスの実践活用に従事。
2013年～ 電子楽器製品全般の品質保証を担当。
2016年～ 全社のソフト品質改善活動に従事。
【学会活動、執筆、資格等】
日科技連SQiP研究会委員長、メトリクス演習コース主査、SQiP運営委員
即活用！「レビューの質チェック票」 http://thinkit.co.jp/article/856/1
QC検定1級（2013年9月成績上位者として日本規格協会Web上で表彰）『データ指向のソフトウェア品質マネジメント』（日経品質管理文献賞受賞）『ソフトウェアメトリクス統計分析入門』執筆【コミュニティ活動】
データ分析勉強会
https://sites.google.com/site/kantometrics/
同人誌『メトリクス公団Vol.1』『メトリクス公団Vol.2』を発行
2アジェンダ• ソフトウェアメトリクスの分析に統計手法を使う意義• 2群の母平均の差のt検定の解説• リリース後品質を予見するメトリクス～ｔ検定を実務で活用した事例～「メトリクスとは何か」や「収集方法」を扱う講義ではありません。
メトリクス分析を有効なものとする強力な手段の１つとして統計手法の初歩を解説します。
3

ソフトウェアメトリクスの分析に統計手法を使う意義

4こんな時どうしますか？
• 品質向上を目的に静的解析ツールをトライアル導入しました。
• 品質向上の効果は、開発終盤のシステムテストでの欠陥密度（欠陥件数/システム規模KLOC）がどれだけ低下したかで判断することにします。
• ツール未使用/使用の５プロジェクトの欠陥密度は以下の通りでした。

– ツール未使用：2.8, 3.2, 3.0, 2.5, 3.5 (平均＝3.0）– ツール使用 ：2.7, 2.5, 2.3, 2.0, 3.0 (平均＝2.5 ）• ツールを全開発者が使用できるようにするには追加ライセンス購入で多大な費用が発生します。
• この結果から、ツールの効果ありと判断して、本格導入を進めるべきでしょうか？
5測定データの平均と真の平均は違う• ツールを使用した５プロジェクトだけで考えるならば、確かに平均は2.5となっていて、効果はあったと主張できます。
• しかし、本当に主張したいのは、ツールを使用することで、この組織の実力が上がり、将来のプロジェクト含めて欠陥密度が低いはず、ということです。この５つで低下しても、その後のプロジェクトで上がっては意味が有りません。
• 真の実力としての欠陥密度は、未来に実施されるプロジェクトも含めた全データで算出する必要がありますが、それは不可能です。
• 未来分も含めた全プロジェクトからサンプリングされた５つのデータを使って、真の実力値の平均を推し測らなければなりません。
ツール使用の集団からサンプリングされた５プロジェクトデータで平均を算出

2.7
2.5
2.3
2.0
3.0

測定データの平均=2.5

未来も含めたツール使用全プロジェクトの集団
推測

真の実力の平均=？

6意思決定に統計手法を活用する意義• データ分析結果に対する２つの反応について考えてみましょう。
a. データで示されると説得力があるので、何となく信じてアクションを取る（あわて者）
b. ソフトウェアメトリクスなんて精度が悪いので、分析結果は信用できず、アクションなど起こす気になれない（ぼんやり者）• 今回得られた3.0、2.5という平均値は、たまたま得られた5プロジェクトのデータから算出されたもので、欠陥密度の真の実力値を示す訳ではありません。
• あわて者、ぼんやり者どちらの判断が正しいかは神のみぞ知ることで、ある意味ギャンブルです。ならば、確率が高い方に掛け続ければ、長い目で見れば勝てます。
• アクションすべきか、静観すべきかの判断に確率論をベースにした統計手法を活用すれば成功の可能性が高まります。
7

ソフトウェアメトリクスでの統計手法活用の意義◼ 前頁でソフトウェアメトリクスは測定精度が悪いとありました。
では、精度が悪いデータは本当に使えないのでしょうか？

◼ ソフトウェアメトリクスは自然科学分野のデータ（長さ、重さなど）に比べて、測定誤差が大きいのは事実です。
◼ しかしながら、経済学や心理学など人間の行動を研究対象とする社会科学分野では測定データの誤差が大きいのは当たり前のこととして、調査結果から結論を導くのに統計手法の活用は必須となっています。
◼ ソフトウェアメトリクスは人間の活動を測定している側面が大きいので、社会科学分野のデータに近い性質を持ちます。
◼ 精度が悪いから使えないと嘆くのではなく、だからこそ、統計手法を駆使して、誤差に埋もれない重要な情報を読み取る必要があるのです。
8

社会科学分野の研究例（その１）

引用：豊田秀樹 『検定力分析入門』（東京図書、2009）P66• 要は配偶者に対して満足しているかどうかを夫/妻にアンケートして、満足度の違いがどうかを調査したもの• 満足度の回答は１（不満）～７（満足）の7段階で、夫の平均が5.76、妻の平均が5.36という微妙な結果• このデータに対して、対応の無い2群の母平均の差のt検定という統計手法を用いて、夫と妻の満足度に高度に統計的有意差ありという結論（満足度は妻＜夫、やはりというべきか・・・）
9社会科学分野の研究例（その２）

引用：豊田秀樹 『検定力分析入門』（東京図書、2009）P67• 恋人同士で「相手の夢を見たことを話す」という行為の受け止め方の違いを調査したもの• 女性含意とは女性がその行為に対して恋人同士という意味を込めたかどうかの度合で、男性推定とは逆に受け止め方の度合• 回答は１（込めない/受け止めない）～７（込めた/受け止めた）の7段階で、女性含意の平均が3.88、男性推定の平均が4.39• 前頁と同じ手法で、統計的有意差ありと結論（女性はそのつもりはないのに男性が勘違いするケースが多い・・・）
10社会科学分野の研究例（その３）

引用：豊田秀樹 『検定力分析入門』（東京図書、2009）P64• 授業最後の確認テストは穴埋式と記述式のどちらが学習効果が高いかを調査（記述式の方が高いと主張したかったと思われる）• 穴埋式/記述式で確認テストを行った２つの群に対して、最後は同じテストを受けさせてその平均点の違いを見ている• 穴埋式の平均点が5.08で、記述式が4.13という結果• 前頁と同じ手法で、統計的有意差なしと結論（つまり、どちらの確認テスト方式も学習効果に差があるとは言えない）
11３つの研究結果の違い
平均の差 標準偏差

データ数

ｔ値

P値

結論

その１0.40 1.36、1.43236、236

4.32 <0.001 高度に有意差あり

その２0.51 1.76、1.2684、69

2.06<0.05 有意差あり

その３0.95 1.93、2.0924、24－1.65>0.05 有意差なし• 面白いことに「平均の差」と「結論」の解釈が逆転しています。
– 平均の差は、その３（0.95） ＞その２（0.51） ＞その１（0.40）
結論は、その１（高度にあり）＞その２（あり）＞その３（なし）– 結論はｔ検定という統計手法を用いて、平均の差が誤差の範疇かどうかを確率計算をして、客観的に判定しています。
– つまり、ｔ検定を用いずに平均の差だけで見たのでは、結果を見誤る恐れがあるということです。
– 次の章でｔ検定について詳しく解説します。
12

「統計手法を使う意義」まとめ◼ 得られた測定データの平均が真の平均とは限りません。真の平均を得るのは不可能か、現実的ではないことが多いので、得られた（多くの場合少ない）測定データで判断するしか無いのです。
◼ 更に、ソフトウェアメトリクスは自然科学分野のデータ（長さ、重さなど）に比べて、人間の活動を測定している側面が大きいので、測定精度が悪いのは仕方ありません。
◼ 人間の行動を対象とする社会科学研究の例で、そのような測定基準も精度も曖昧なデータでも、統計手法を適用することで、研究成果として客観的な結論を導き出していることを示しました。

◼ ソフトウェアメトリクスを活用する場面で、「データが少ないから」、「測定精度が悪いから」使えないと嘆くのではなく、だからこそ統計手法を適用して客観的な結論を見出すことが重要です。
13

2群の母平均の差のｔ検定

３つの研究結果のように夫婦、男女、A方式／B方式のように２つの群に分けてデータを収集して、その平均に偶然とは言えない差があるかどうかを検証する統計手法です。
ソフトウェアメトリクスならば、例えば改善前後、品質問題有無といった形で２つに分けて、その違いを検証するといったことに適用できます。

14３つの研究結果の違い（再掲）
平均の差 標準偏差

データ数

ｔ値

P値

結論

その１0.40 1.36、1.43236、236

4.32 <0.001 高度に有意差あり

その２0.51 1.76、1.2684、69

2.06<0.05 有意差あり

その３0.95 1.93、2.0924、24－1.65>0.05 有意差なし• 面白いことに平均の差と結論が逆転しています。
– 平均の差は、その３（0.95） ＞その２（0.51） ＞その１（0.40）
結論は、その１（高度にあり）＞その２（あり）＞その３（なし）• 差を見るには2つの群の「平均の差」、「標準偏差」、「データ数」を総合して判定する必要があり、その総合指標をt値と呼びます。
ｔ値の絶対値が大きいほど差が大きいと捉えます。
• 推定誤差を加味しても意味の有る差かどうかをP値で判定します15

4パターンの2群データ

これらの４パターンの2群データは全て平均の差が0.2です。
AとBの差がより顕著なのはどれでしょう？
または、同じですか？
16

ｔ検定のｔ値とはt検定は、単純に平均の差を比べるのではなくt値で差をみます。
概念的にはｔ値の計算式は以下の通りです。
ｄ：平均の差ｓ：2群の標準偏差を合併（加重平均）したもの
n：2群のデータ数
dが大きくなると分子が大きくなりtが大きくなる
が小さくなると分母が小さくなりtが大きくなる
sが小さくなると分母が小さくなりtが大きくなる
nが大きくなると分母が小さくなりtが大きくなる

標準誤差と呼ぶ
ソフトウェアメトリクスは測定誤差（sに相当）が大きく、データ（n)が少ないので使えないと言われる正体

ｔ値（の絶対値）が大きければ、２つの平均に顕著な差があると判定しますが、その判定基準はどうするか？
17

P値の小ささで判定• 平均の差をベースに計算したｔ値が０に近い値ならば、２つの群の平均はほぼ等しいと見なせるし、０から離れた値ならば違っていると判断できます。
• その離れ具合を評価するのにP値を用います。P値が小さいほど離れていると言えます。
• 十分に離れている＝等しくない＝有意差ありと判定する基準は慣例的に５％とします。
データ数から算出される
自由度のt分布P値
赤部分の面積-3 -2 -1012

P値が小さいならば、分布から外れた値という意味になる。
つまり平均は等しくないと確信持って判断することができる

観測されたt値18４つのパターンのP値の違い

データが多いほど差が顕著（信憑性高い）

ばらつきが小さいほど差が顕著（分離性高い）

平均の差

標準偏差 データ数 ｔ値

P値

結論

パターン１0.20.27

9 1.55 0.070

有意差なし

パターン２0.20.14

9 3.10 0.003

高度に有意差あり

パターン３0.20.27

18 2.26 0.015有意差あり

パターン４0.20.14

4 2.09 0.041

有意差あり

19

「2群の母平均の差のｔ検定」まとめ◼ 改善前/後、品質問題有/無、A方式/B方式といった形で、データを２つの群に分けて、その平均の差に誤差範囲ではない違いがあることを検証する場面で適用できます。
（簡単に言えば、違いが「たまたま」or「そうではない」の検証）◼ 2群の平均の差を評価するには以下の２要素も絡みます。
• データのばらつき大きいほど違いがぼける（つまり、違いが小さい）• データ数多いほど平均の確からしさ（推定精度）が上がり、違いが明確になる（つまり、違いが大きい）◼ 平均の差だけで一喜一憂するのでは、客観的な判断を見誤ることがあるので注意が必要です。
◼ t検定の原理をきちんと理解するのは難しいですが、まずはp値が5％以下になれば良いと覚えましょう。
20

リリース後品質を予見するメトリクス『データ指向のソフトウェア品質マネジメント』 3.2節

２つの品質メトリクスのどちらが、リリース後の品質と関連が強いかを母平均の差のｔ検定を活用して調べた事例です。

21

分析目的と使用メトリクス• プロジェクト完了時に算出していた以下の２つのメトリクスが製品リリース後の品質に関連があることを検証すると同時にどちらの方が関連が強く品質指標として妥当かを確認する。

– 不具合密度＝ST不具合数/新規開発行数– 不具合検出率＝ST不具合数/ST工数※ST：システムテスト• 元々は、不具合密度を品質指標としていましたが、以下の理由で妥当ではないと感じていたことも背景となっています。
– 不具合がテストが不十分で低いのか、品質が良くて低いかが区別できない– 信頼性工学では、MTBFなど時間と不具合の関係を見ることが一般的
22

用いたデータセット（抜粋）・・・・・・・・・・・・・・・
23

不具合密度と品質問題数の相関分析◼ あくまでも本事例のデータでの結果に過ぎませんが、相関はそれほど高くは有りませんでした。

◼ ですが、全く関連が無いとは言い切れないので、（諦めずに！）違うアプローチを検討しました。
◼ データを品質問題が「無」と、1件でも発生したら「有」の2つに分けて、「無」と「有」のデータ群の分布の違いを見ることに。
リリース
後品質問
題数

相関係数＝0.21

不具合密度（件/KLOC）
24

品質問題有無の不具合密度分布の違い
プロジ
ェ
ク
ト
比率
プロジ
ェ
ク
ト比率

リリース後品質問題無しのヒストグラム◼ 無しの方が左に分布が寄っているが、右側にもデータがばらついており、明らかに差が有る
不具合密度（件/KLOC）と言えるかは微妙

リリース後品質問題有りのヒストグラム◼ 母平均の差のt検定を行う

不具合密度（件/KLOC）
25

不具合密度の母平均の差のt検定
平均値

自由度

標準誤差

品質問題無し1.32

400.28

品質問題有り

1.58

t値

P値

-0.930.36◼ P値が0.36（36％）で有意水準5％よりも大きいため、平均値の差は統計的に有意差無しと判断、つまり品質問題無し/有りの分布の平均値に差があるとは言えないと判定します。
◼ 残念ながら、この分析結果では、不具合密度と品質問題有無の関連を示すことは出来ませんでした。
26

品質問題有無の不具合検出率の違い◼ 次に不具合検出率で同様の分析を進めますが、相関分析は不具合密度と同様に傾向性が見られなかったので、省略しています。
プロジ
ェ
クト
比率
プロジ
ェ
クト比率

リリース後品質問題無しのヒストグラム◼ 無しの分布が明らかに右に歪んでいます（左に偏り）◼ このまま分析すると具合が悪いので、不具合検出率（件/H）対数変換をします。

リリース後品質問題有りのヒストグラム

不具合検出率（件/H）

27

対数変換
リリース後品質問題無しのヒストグラム

プロジ
ェ
クト数平均

• ソフトウェアメトリクス
はレンジの広いデータを扱うことが多く、上図のように左に偏った分布になる場
不具合検出率（件/H） 合があります。

対数変換で偏りを補正

リリース後品質問題無しのヒストグラム

プロジ
ェ
クト
数

平均

LOG不具合検出率（件/H）• 偏った分布で平均を扱う分析を行うのは望ましくありません。
• このような場合に対数変換を施すことで、分布の偏りを補正することができます。
28

対数変換後不具合検出率の分布の違い
プロジ
ェ
クト
比率
プロジ
ェ
クト比率

リリース後品質問題無しのヒストグラム◼ 不具合密度の時よりも、無しの分布が左に寄った傾向を示しています。

◼ それでも、明らかにLOG不具合検出率（件/H）平均の差があるとリリース後品質問題有りのヒストグラムいうほどではないので、やはり母平均の差のt検定を行うことに
LOG不具合検出率（件/H）29対数変換後不具合検出率の母平均の差のt検定

平均値

自由度

標準誤差

品質問題無し-1.44

610.15

品質問題有り

-0.95

t値

P値

-3.310.002※対数変換後の値での計算結果なので、平均値がマイナスとなります◼ P値が0.002（0.2％）で有意水準5％よりも小さいため、平均値の差は統計的に有意差有りと判断、つまり品質問題無し/有りの分布の平均値に違いがあると判定します。

◼ この結果、不具合検出率が大きい方がリリース後に品質問題を発生する可能性が高いことがデータにより支持されました。
30

本分析の結論◼ 不具合密度と不具合検出率について、リリース後の品質問題数と関連性を分析しました。
◼ 不具合密度と不具合検出率ともに、リリース後の品質問題の件数との明確な相関を見出すことは出来ませんでした。
◼ しかしながら、リリース後に品質問題が無いプロジェクトの方が平均して不具合検出率が小さいことが統計的に証明されました。
◼ あくまでも平均的な結果なので、不具合検出率の大小だけで、リリース後に品質問題が有無を占うことは出来ませんが、不具合検出率が大きい方が品質問題が起きる可能性は高いと考えられます。
◼ 今後プロジェクト完了時の品質を判断するには、不具合密度よりも不具合検出率を見る方が有効であることが分かりました。
31

（補足）なぜ相関分析ではうまくいかない？
◼ リリース後に品質問題が発生するかどうかは、製品の品質だけに依らず、ユーザーやその他の要因の影響も大きいです。
◼ プロジェクト完了時の品質メトリクスにそれらの要因まで加味することは難しいです。
仮にこの相関が強いメトリクスを測定できたとしても品質メトリクス

製品の真の品質

ユーザー要因リリース後品質問題
その他の要因ユーザーやその他の要因により、相対的に「品質メトリクス」と「リリース後品質問題」の相関は低くなります32

（補足）相関分析と母平均の差のt検定の違い
品質問題有無の箱ひげ図
ＬＯ
Ｇ
不具合検
出率

◼ 母平均の差のt検定はデータ群で比較するので、多少の誤差によるデータ変動では結果は変わりません。
つまり、鈍感（ロバスト）です。
無ＬＯ
Ｇ
不具合検
出率

有

誤差の多いソフトウェアメトリクスはよりロバストなアプローチを試みる◼ 相関分析は個々のデータの動きを見るので、誤差などのデータ変動に敏感です。

リリース後品質問題数
33

「リリース後品質を予見するメトリクス」まとめ◼ リリース後を予見するメトリクスとして、本分析結果では、不具合密度よりも不具合検出率の方が有効であることが分かりました。
（一般論ではありませんので、留意してください）◼ 不具合検出率とリリース後品質問題数の相関分析では、明確な関連性を示すことができませんでした。そこで、リリース後品質問題数を問題有/無の２つに分けて、2群の母平均の差のt検定を実施したところ関連性を示すことができました。
◼ 原因系（今回はリリース直前の不具合検出率）と結果系（今回はリリース後品質問題数）が、時間的、構造的に因果関係を見出すことが難しい場合に相関分析はうまく行かないことが多いです。
◼ 相関が無いから役に立たないと嘆くのではなく、手法の引き出しを増やし、色々なアプローチを試みることが重要です。
34