第 4 章 バグ分析と 1+n 施策
4.2 関連する技法と「バグ分析と 1+n 施策」の関係
根本原因分析の手法としては,トヨタ式「なぜを5回」[4-1]が最も有名である.これは,
「なぜ」を5回繰り返すことにより,根本原因にたどり着く方法である.事実を重視し,
ものごとの因果関係やその裏に潜む本当の原因を突き止める科学的アプローチである.ト ヨタ式「なぜを5回」は,ソフトウェア開発に限定した手法ではなく,広く一般に適用さ れている.このため,適用対象領域の特性を考慮したさまざまな応用型が見受けられる.
ソフトウェア開発領域に対する根本原因分析としては,PNA(Process Network Analysis) 技法が提案されている[4-2].これは,ソフトウェア開発のプロセスを強く意識した手法で あり,マネジメントプロセスを常に意識して分析する点に特徴がある.
また,製品の信頼性確保のために,故障モードに着目しその原因を解析する手法として,
FTA(Fault Tree Analysis)やFMEA(Failure Mode and Effects Analysis)などがある[2-12].
これらはソフトウェア開発においても適用されている.根本原因を解析するという意味で,
FTAやFMEAも根本分析手法の一種である.
ソフトウェア開発の現場で最も普及しているのは,トヨタ式「なぜを5回」およびその応 用型であろう.これらは,「なぜ」を繰り返すときの因果関係の注目の仕方に多少の違いは
あるが,「なぜ」を繰り返して根本原因にたどり着くという点では共通である.このため本 論文では,以降,トヨタ式「なぜを5回」およびその応用型を総称して,「なぜなぜ分析」
と呼ぶ.
ソフトウェア開発においては,バグのなぜなぜ分析の分析結果に基づいて,出荷済みのソ フトウェアや出荷直前のソフトウェアの品質向上を目的として追加テストを実施すること がある.このようなバグの根本原因に基づく追加テストによるバグ摘出を,「バグの横展開」
という.バグの横展開の目的は,もとになったバグの根本原因と同じ原因で残存するバグ を摘出することである.例えば,技術資料の調査不足がバグの根本原因の場合には,バグ の横展開では,同じ技術資料の調査不足を原因として作り込まれたバグの摘出が目的とな る.
バグの横展開は,一見,簡便な手法であるため,ソフトウェア開発の現場でよく利用され ている.しかし,残念ながらバグの根本原因を分析し,潜在するバグを効率よく摘出する のは難しい.それが難しい理由は,バグの根本原因分析にある.バグの根本原因が1つで あることはまれであり,ほとんどの場合,バグの原因が複数存在するためである[4-1].こ のため,なぜなぜ分析をすればするほど,原因が枝分かれして,発散してしまうように見 え,根本原因を特定することが困難になってしまうのである.
バグの根本原因は,固有根本原因と共通根本原因という2種類の根本原因に分類すること ができる.固有根本原因とは,そのバグを作り込み,見逃した直接の原因である.例えば,
ある技術情報の欠落による設計ミスや,設計仕様書の記載漏れによるテスト工程項目漏れ がこれにあたる.一方,共通根本原因とは,そのバグを作り込み,見逃した間接的な原因 である.教育不足,組織標準が不十分といった原因が共通根本原因にあたる.バグの固有 根本原因に対する未然防止策を取った場合には,対策実施後にもとのバグと同種類のバグ が作り込まれたり見逃されることはなくなるはずである.しかし,バグの共通根本原因に 対する未然防止策をとった場合には,間接的な対策になるため,その対策を実施しても,
もとのバグと同種類のバグの作り込みや見逃しを確実に防止できるとは限らない.共通根 本原因の未然防止策は,もとのバグと同種類のバグを作り込んだり見逃したりする確率を 低減できるが,確実に防止できるわけではない.したがって,バグの横展開は,共通根本 原因ではなく,固有根本原因に基づいて実施しなければならない.なぜなぜ分析は,固有 根本原因と共通根本原因を区別せずに分析する.
「バグ分析と1+n施策」の「バグ分析」は,固有根本原因を分析するための技法である.
「バグ分析と1+n施策」は,なぜなぜ分析をもとに確実に固有根本原因を分析できるよう 根本原因分析方法を改良し,効果的にバグの横展開を実施できるように見直した技法であ る.
4.3 「バグ分析と 1+n 施策」技法の概要
4.3.1 品質会計との関係
第3章で述べたように,品質会計は以下の2つの特徴をもつ.
・ レビューでのバグ摘出による早期品質確保
「上工程品質会計」により,レビューで摘出したバグを作り込み工程と摘出工程 の両面から管理
・ 的確なテスト完了判断
「バグ傾向分析」,「バグ分析と1+n施策」,および「バグ収束判定」の3つの技法 の併用による残存課題の把握と解決
「バグ分析と1+n施策」は,品質会計の2つの特徴のうち,後者のテスト完了判断をす るために使用される技法である.テスト完了判断は,計画したテストが完了した時点で,
以下の3つの視点から分析して判断する.3つの視点とも問題なしと評価したときに,テス トを完了する.
・ 「バグ傾向分析」技法は,系統的なテスト観点の漏れがないかを分析する.
・ 「バグ分析と1+n施策」技法は,細かいテスト観点の漏れがないかを分析する.
・ 「バグ収束判定」技法は,実際にバグはこれ以上摘出される可能性が低いかを分析す る.
「バグ分析と1+n施策」は,テスト終盤に摘出された重大バグを対象として実施する.
テストの終了段階まで重大なバグが残存しているということは,それまでの開発作業にお いて作業の抜けや漏れの危険性を示唆するものと考える.このような細かいテスト観点の 漏れがないことを分析できるようにするために,「バグ分析と1+n施策」を開発したのであ る.
4.3.2 基本的な考え方
バグ分析と 1+n 施策技法は,1 件のバグの固有根本原因を分析し,その固有根本原因に 基づき,当該バグとの同種バグを摘出するための技法である.「同種バグ」とは,あるバグ と同じ固有根本原因により,まだ当該ソフトウェアに潜在するバグをいう.
本技法では,バグの「作り込み工程」という考え方を用いる.バグの作り込み工程とは,
当該バグを作り込んだ工程のことであり,第 2章の図 2-2に示すV字モデルである開発プ ロセスの上工程のうちいずれかの工程である.本技法では,固有根本原因を以下の 3 種類 に限定する.
・ 当該バグの作り込み工程の設計において,当該バグを作り込んだ原因(以降,「作り
込み原因」と呼ぶ)
・ 当該バグの作り込み工程のレビューにおいて,当該バグを見逃した原因(以降,「レ ビューでの見逃し原因」と呼ぶ)
・ テスト工程において,当該バグを見逃した原因(以降,「テストでの見逃し原因」と 呼ぶ)
本技法において,固有根本原因を上記に限定する理由は,本技法の目的を,ある1件のバ グに対応する同種バグの摘出としているためである.ある 1 件のバグに対応する同種バグ が,当該ソフトウェアに潜在する直接的な原因は,上述する 3 種類の固有根本原因に限定 される.
なぜなら,バグが作り込まれるのは,V字モデルの上工程のうちいずれかの工程だからで ある.また,そのバグ分析と1+n 施策が摘出されるのは,当該工程でのレビューおよび当 該設計工程と対応するテスト工程におけるテストでしかないからである.V字モデルは,対 応する設計とテストの工程を視覚的に明示しているのが特徴である.V字モデルを適用する ことにより,作り込んだ工程を特定できれば,見逃したテスト工程はV 字モデル上で対応 するテスト工程と判断できる.本技法がV字モデルを前提とするのは,このようにV字モ デルがバグ作り込み工程とバグ摘出工程の特定に適しているからである.
また,固有根本原因以外に,技術者のスキルやチームのコミュニケーションなど開発プロ セスを取り巻くさまざまな共通根本原因が考えられるが,それらはいずれもその 1 件のバ グだけでなく他の潜在バグにも共通する原因である.このような共通根本原因は,本技法 では根本原因の対象としない.その理由は,共通根本原因を対象とすると,幅広い範囲の 根本原因を扱うことになり,逆に同種バグの摘出の焦点を的確に定めることができなくな るためである.
「バグ分析と1+n施策」技法のうち,「バグ分析」では,上述した3種類の固有根本原因 を分析する.「1+n 施策」では,「バグ分析」の結果に基づいて追加レビューやテストの範 囲と内容を立案し,これらを実施することにより,同種バグを摘出する.「1+n施策」の「1」
は分析対象バグ1件のことであり,「n」は摘出する同種バグの件数を指す(n≧1).1+n施 策という名称は,1件のバグが検出された場合にはn件の同種バグが潜在するはずであり,
そのn件の潜在する同種バグを必ず摘出するという意味から名付けられた.「バグ分析」と
「1+n施策」は,セットで「バグ分析と1+n施策」として適用する.
4.3.3 適用方法
バグ分析と1+n施策は以下の特徴をもつ.
・ バグの固有根本原因を分析して同種バグを摘出する技法のため,ピンポイントで問題