**********************************************************************
セッション:s4a
テーマ  :ソフトウェアメトリクスの測定精度の課題にどう対処するか
講師   :小池 利和 ヤマハ(株) 品質保証部
日時   :2020/08/21(金) 13:40~14:50
参加人数 :27名
**********************************************************************

■概要
メトリクスを活用して現場で起きている問題兆候を検知し、適切なマネジメントが求められる。
しかしながら、データ分析結果から、目標と実績の誤差範囲の違いで一喜一憂したり、重大な
悪化兆候を見過ごし、後で痛い目に会うなど、メトリクスを有効活用しきれていない組織も多い。
本セッションでは、メトリクスの測定精度の課題を克服し、データから品質悪化の兆候や改善の
効果等を読み取るための統計手法の基礎を学ぶ。初心者でも理解できるように数式を用いず直観的に、
かつ、現場ですぐ活用できるように実践的な例を用いて解説する。


■アジェンダ
- ソフトウェアメトリクスの分析に統計手法を使う意義
- 2群の母平均の差のt検定の解説
- リリース後品質を予見するメトリクス
t検定を実務で活用した事例

注意:
「メトリクスとは何か」や「収集方法」を扱う講義ではない
メトリクス分析を有効なものとする強力な手段のひとつとして
統計手法の初歩を解説する


■こんな時どうしますか?
〇思考実験
試行:品質向上を目的に静的解析ツールをトライアルに導入した
品質向上効果の判断基準:開発終盤のシステムテストでの欠陥密度(欠陥件数/システム規模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)
補足:ツールを全開発者が使用できるようにするには追加ライセンス購入で多大な費用が発生する

Q(講師->聴講者). この結果からツールの効果ありと判断して、本格導入を進めるべきか?
A. すべき 6人
見送るべき XX人
よくわからない YY人

〇測定データの平均と真の平均は違う
- ツールを利用した5プロジェクトに限定すれば平均が2.5となっており効果はあったと主張できる
- しかし、本当に主張したいことは ”ツールを使うことでこの組織の実力が上がり、将来の
プロジェクトを含めて欠陥密度が低いはず” ということ。試行した5プロジェクトで低下して
 も、その後のプロジェクトの効果は不明。

-> 真の実力としての欠陥密度は、未来に実施されるプロジェクトを含めた全データで算出す
  る必要があるがそれは不可能。
測定データの平均 != 真の実力平均

〇意思決定に統計処理を活用する意義
今回得られた3.0, 2.5という平均値はたまたま得られた5プロジェクトのデータから算出されたもので、
欠陥密度の真の実力を示すわけではない

-> アクションすべきか、静観すべきかの判断に確率論をベースにした統計手法を活用すれば
成功の可能性が高まる


■ソフトウェアメトリクスでの統計手法活用の意義
- 精度が悪いデータは本当に使えないのか?
-> ソフトウェアメトリクスは自然科学分野のデータにくらべて、測定誤差が大きいのは事実
しかし、人間の行動を研究対象とする社会科学分野では測定データの誤差が大きいのは
当たり前のこととして、調査結果から結論を導くのに統計手法の活用は必須
- 精度が悪いから使えないと嘆くのではなく、だからこそ、統計手法を駆使して、誤差に埋もれない
重要な情報を読み取る必要がある

〇社会科学分野の研究例(1)
目的:配偶者に対して満足しているかを夫/妻(n=236)にアンケートし、満足度(MAX 7.0)の違いを調査
結果:夫 平均 5.76
妻 平均 5.36

-> このデータに対し対応のない2群の母平均の差のt検定という統計手法を用いると
満足度に高度に統計的有意差ありという結論。

引用:豊田秀樹 「検定力分析入門」


〇社会科学分野の研究例(2)
目的:恋人同士で「相手の夢を見たことを話す」という行為の受け止め方の違いを調査
女性含意とは女性がその行為に対して恋人同士という意味を込めたかどうかの度合いで、
男性推定とは逆に受け止め方の度合
結果:女性含意 平均3.88
男性推定 平均4.39
※1(込めない/受け止めない)~7(込めた/受け止めた)

-> (1)と同じ手法で、統計的有意差ありと結論

〇社会科学分野の研究例(3)
目的:授業最後の確認テストは穴埋式と記述式のどちらが学習効果が高いかを調査
-> 記述式が高い、という結果がでることを予想
結果:穴埋式 平均点 5.08
記述式 平均点 4.13

-> 前項と同じ手法で統計的有意差なしと結論

〇3つの研究結果の違い
-「平均の差」と「結論」の解釈が逆転
- 結論はt検定という統計手法を用いて、平均の差が誤差の範疇かどうかを確率計算して
客観的に判定。
-> t検定を用いずに平均の差だけで見たのでは結果を見誤る

〇まとめ
- 得られた測定データが真の平均とは限らない。 得られた(多くの場合、少ない)測定データで
判断するしかない
- ソフトウェアメトリクスは自然科学分野のデータに比べて、人間の活動を測定しているので
測定精度が悪いのは仕方がない
- 測定基準も精度もあいまいなデータでも、統計手法を適用することで、研究成果として
客観的な結論を導きだしていることを示した
- ソフトウェアメトリクスを活用する場面で、データの少なさや測定精度の悪さを嘆くのはな
く統計手法を適用して客観的な結論を出すことが重要


■2群の母平均の差のt検定の解説
- 前述した研究結果のように、2つの群に分けてデータを収集して、その平均に偶然とは言えない
差があるかどうかを検証する統計手法。例えば改善前後、品質問題有無といった形で2つに
分けてその違いを検証する
- 差を見るには2つの群の「平均の差」、「標準偏差」、「データ数」を総合して判定する必要が
ある。t値の絶対値が大きいほど差が大きい
- 推定誤差を加味しても意味のある差かどうかをP値で判定


〇(講師->聴講者) 4パターンの2群データはすべて平均の差が0.2。 AとBの差がより顕著なのはどれ?
パターン1: 基本パターン
パターン2: パターンAに比べばらつきが小さい
パターン3: パターンAに比べデータ数が違う(多い)
パターン4: パターンAに比べデータが少ない、ばらつきが小さい

Q1. パターン1とパターン2を比べたときどちらのほうが差があるか?
Q2. パターン1とパターン3を比べたときどちらのほうが差があるか?
Q3. パターン1とパターン4を比べときどちらのほうが差があるか?


〇t検定のt値とは
t検定は単純に平均の差を比べるのではなくt値で差をみる

t=d/(s/√n)
d: 平均の差
s: 2群の標準偏差を合併(加重平均)したもの
n: 2群のデータ数
s/√n:標準誤差

t値(の絶対値)が大きければ、2つの平均に顕著な差があると判定するが、その基準は?

〇P値の小ささで判定
平均の差をベースに計算したt値が0に近い値ならば、2つの群の平均はほぼ等しいと
みなせる。0から離れた値ならば違っていると判断できる
-> 離れ具合を評価するのに使うのがP値。P値が小さいほど離れている
十分に離れている = 等しくない = 有意差あり、と判定するには慣例的に5%

〇4つのパターンのP値の違い
A1. パターン2
ばらつきが小さいほど差が顕著

A2. パターン3
データが多いほど差が顕著(信憑性が高い)

A3. パターン4
データの数が√にきいてくるのでデータ数が少ないパターン4に有意差がある

〇まとめ
- 改善前/後、品質問題有/無、といった形でデータを2つの群に分けてその平均の差に
誤差範囲ではない違いがあることを検証する場面で適用できる
- 2群の平均の差を評価するには以下の2要素も絡む
データのばらつき:大きいほど違いがぼける
データ数:多いほど平均の確からしさ(推定精度)が上がり、違いが明確になる
- 平均の差だけで一喜一憂すると、客観的な判断を見誤る
- t検定の原理をきちんと理解するのは難しいが、まずはp値が5%以下になればよいと
覚えればよい。

■リリース後品質を予見するメトリクス
引用:「データ指向のソフトウェア品質マネジメント」 3.2節

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

〇分析目的と使用メトリクス
プロジェクト完了後に算出していた以下のメトリクスが製品リリース後に関連があること
を検証すると同時にどちらのほうが関連が強く品質指標として妥当かを確認する
不具合密度  = ST不具合数/新規開発行数
不具合検出率 = ST不具合数/ST工数
※ST: システムテスト

〇不具合密度と品質問題数の相関分析
本事例のデータでは相関はそれほど高くはなかった
別のアプローチを検討
データを品質問題が「無」と、1件でも発生したら「有」の2つにわけてデータ群の分
布の違いをみる
・ 不具合密度分布の違いで評価
明らかに差があるといえるかは微妙
-> 母平均の差のt検定を行ったがP値が0.36で統計的に優位な差はなしと判断

・ 不具合検出率の違いで評価
「無し」の分布が明らかに右に歪んでいる。
対数変換を施すことで分布の偏りを補正しても左に偏った傾向があるが
明らかな差というほどではない
-> 母平均の差のt検定を行うとP値が0.002で有意水準よりも小さいため、
統計的に有意差ありと判断

-> 不具合検出率が大きいほうがリリース後に品質問題を発生する可能性が高いことが
データにより支持された

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

〇(補足)なぜ相関分析ではうまくいかない?
リリース後に品質問題が発生するかは、製品の品質だけではなく、ユーザやその他の要
因の影響が大きい。プロジェクト完了時の品質メトリクスにそれらの要因まで加味する
ことは難しい

〇(補足)相関分析と母平均の差のt検定の違い
母平均の差のt検定はデータ群で比較するので多少の誤差によるデータ変動では結果は変わらない(ロバスト)
相関分析は個々のデータの動きを見るので、誤差などのデータ変動に敏感
-> 誤差の多いソフトウェアメトリクスはよりロバストなアプローチを試みる