欠陥除去率の概念と測定は、今やソフトウェア開発における最重要テーマとなっています。欠陥除去はソフトウェアプロジェクトでもっとも費用がかかる作業の1つであり、スケジュールに大きな影響を及ぼします。効率的な欠陥除去は、開発期間の短縮と高い製品品質につながります。品質および生産性の向上そしてコストの削減には、スケジュールと同様にそのプロジェクトにとってもっとも効果のある欠陥予防と欠陥除去の方法を用いることが重要になります。また、すべてのプロジェクトと開発組織にとって、欠陥除去プロセスの効果を測定することが大切です。
まず、C.Jonesが定義している欠陥除去率について述べましょう。
除去率=(欠陥除去作業で検出した欠陥数)÷(欠陥除去作業時に存在した欠陥数)×100%
=(検出欠陥数)÷(検出欠陥数+未検出欠陥数(のちに発見))×100%
欠陥除去率を正確に定義するためには、欠陥の混入と除去に関連する開発プロセスのアクティビティを理解しなければいけません。欠陥はさまざまなフェーズで、製品あるいは中間成果物に混入します。
それでは、欠陥の混入と除去に関するアクティビティを例示しましょう。

テスト前の開発フェーズではアクティビティ自体が欠陥混入の対象となるため、フェーズ終了時のレビューやインスペクションは欠陥除去の重要な手段となります。
テストフェーズにおけるテスト自体は欠陥除去のための作業ですが、テストによって発見されたバグを誤って修正すれば欠陥混入の機会にもなります。
次に、開発プロセスの各段階における欠陥の混入と除去の詳細なメカニズムを以下に示します。

この図から各開発ステップにおける欠陥除去率は以下のように定義できます。
欠陥除去率=(欠陥除去率(当該ステップ))÷(当該ステップの開発時に存在した欠陥数+当該ステップの開発中に混入した欠陥数)×100%
これは概念的な定義です。除去された欠陥の数は、修正欠陥数から誤修正数を引いたものです。ただし、誤修正を正確に追跡することが難しいのが現実です。
では次に、欠陥データを欠陥の発生源(混入時点)と発見時点の各視点で整理したマトリックスアプローチを用いて、フェーズごとの欠陥除去率と合わせて、全体的な欠陥除去率、インスペクション効率、テスト効率を算出していきましょう。

次にテスト効率を求めます。テストフェーズは誤修正による欠陥の混入が一般に少ない場合、Jonesの式 効率=(現フェーズでの欠陥除去数)÷(現フェーズでの除去欠陥数+以降のフェーズでの除去欠陥数)×100% を用います。
単体テスト効率:TE(UT)を求めます。
TE(UT)=332÷(332+387+111+81)×100%=36%
結合テスト効率:TE(CT)を求めます。
TE(CT)=387÷(387+111+81)×100%=67%
システムテスト効率:TE(ST)を求めます。
TE(ST)=111÷(111+81)×100%=58%
全体のインスペクション効率:IEを求めます。
IE=(730+729+1095)÷(122+859+939+1537)×100%=74%
または、
IE=インスペクションによる除去欠陥数÷全欠陥数×100%=(730+729+1095)÷3465×100%=74%
全体のテスト効率:TEを求めます。
TE=(332+387+111)÷(332+387+111+81)×100%=91%
プロセス全体の欠陥除去率:DREを求めます。
DRE=(1−81÷3465)×100%=97.7%
となります。
本日はここまでにします。次回も更にPM定量化の実践技術をご紹介します。ご期待ください。お疲れ様でした。
参考資料:「ソフトウェア品質工学の尺度とモデル、共立出版」