書評「ソフトウェアの欠陥予防 ― テストより確実な品質改善法」

書評「ソフトウェアの欠陥予防 ― テストより確実な品質改善法」

Marc McDonald (著), Robert Musson (著), Ross Smith (著), 宗 雅彦 (監修), 溝口 真理子 (翻訳), 依田 光江 (翻訳) , 日経BP社

カテゴリ:マネジメント

概要

ソフトウェアの品質を向上させ、顧客満足を得る効率の良い方法は、欠陥を予防することである。そうすれば、修正の必要はなくなり、組織の時間とリソースとお金も節約することができる。本書はMicrosoftの欠陥予防チームのメンバーである著者が、実務で培ったそのノウハウを「欠陥の検出」「欠陥の分析」「欠陥の予防」の3つの段階に分けて、品質改善に取り組む技術者、マネージャが現場で使えるようにわかりやすく説明する。

本書の使い方

第1部は欠陥予防という考え方の全体像と、その有効性、組織に欠陥予防を導入するメリットを学ぶことができる。すべての対象者に一読を勧める。
第2~4部は、通読が望ましいが、読者の興味関心のある部分から読むこともできる。
第2部は製品の欠陥を検出し、品質を向上させるうえで有効なテクニックを学ぶことができる。
第3部は欠陥が検出された後で、それらを分析する際のテクニックを学ぶことができる。
第4部は長期的な展望で欠陥を予防するテクニックを学ぶことができる。

何を学べるか

【第1部 欠陥予防の考え方】
欠陥予防という考え方の全体像と、その有効性を説明し、組織に欠陥予防を導入するメリットを解説する。

第1章 欠陥予防とは
欠陥予防という考え方の概要を解説する。ソフトウェアの欠陥とは何か、欠陥が発生するのはなぜか、欠陥を予防するメリットと、そのためには何ができるかを説明する。「検出」「分析」「予防」の3つのテクニックの考え方と使い方、組織として欠陥予防に取り組む際の戦略の考え方などを示す。

第2章 欠陥予防のフレームワーク
プロセス改善を行うためにはフレームワークが必要であることを説明し、主要なフレームワークの例としてCMMや、ボールドリッジのフレームワーク、ISOモデルなどを紹介する。

第3章 欠陥予防の経済学
プロセス改善や欠陥予防を行うことにより、財政上の観点から見てどれだけの投資効果があるのかを解説する。

【第2部 欠陥検出テクニック】
製品の欠陥を検出し、品質を向上させるうえで有効なテクニックを紹介する

第4章 品質と開発プロセス
ソフトウェアにとっての品質とは何かを考察する。完全なテストには限界があることを述べたうえで、開発プロセスでは、フェーズを辿るごとに設計からコードへの「変換」の作業を行うものであり、フェーズ毎に不具合が混入する可能性があることを事例を挙げて説明する。そのためプロセスにレビューやテストの検証ステップを組み込んでおく必要があることを解説する。

第5章 生産性ゲームを使った欠陥予防
欠陥予防は長期的な作業であるため、チームの自主的なモチベーションを維持・向上する工夫が必要である。本章では、ゲーム的要素を取り入れることで欠陥予防活動の効果を挙げる実践的な手法を紹介する。

第6章 テストしやすいソフトウェア
テスト容易性を考慮してソフトウェアを設計することにより、テストの効率が上がり、欠陥が見つけやすくなる。本章ではテストの容易性を測るSOCKモデルを提示するとともに、テスト容易性を高めるための実用的なガイドラインを紹介する。

【第3部 欠陥分析テクニック】
欠陥が検出された後で、それらを分析する際のテクニックを紹介する。

第7章 ソフトウェア測定とメトリクス
ビジネスに合ったゴールと、それに対応する適切なメトリクスを設定し計測することで、はじめて計測は品質向上の役に立つ。本章では適切なメトリクスを設定するにあたっての戦略の立て方、ゴールの特定とメトリクスの設定方法、チームへの展開のポイントなどを、手順を追って具体的に説明する。

第8章 リスク分析
ソフトウェア開発においてリスクとはどのようなものであるかを考察し、リスク分析の考え方をステップに分けて解説する。またソフトウェアへの変更が行われた際のリスクを分析する上で有効な方法として、「特性」「量」「インパクト」「理由」「オーナーシップ(誰が変更したか)の各項目に注目してリスク分析を行うCAIROモデルを紹介する。

第9章 組織改革のためのシミュレーションとモデリング
過去のデータからプロセス改善の効果を測定・分析し、次なるプロセス改善の計画を立てる際に有効な統計テクニックを紹介する。
統計的モデリングと、そのモデルを使って未来予測のシミュレーションを行う手法の概要と考え方を説明し、実際に分析する際の方法を図表を交えて詳しく解説する。CMMIのレベル4(定量的プロセス管理)を実践している企業にとって有効なテクニックである。

第10章 欠陥分類法
欠陥の分類法をうまく設定することは、様々なエラーを分析しやすくなるため、プロセス改善や再発防止に役立つ。また問題の兆候を事前に知るうえでも有効である。本章では欠陥の分類法を構築するにあたって、考慮しておくべき、ソフトウェアの欠陥に関するいくつかの前提を解説する。そのうえで、ソフトウェアの欠陥を「出現」「原因形成」「変更」「検出」「低減」の5つのステージに分類したサンプルを提示し、各項目ごとに詳細な説明を加える。

第11章 根本原因の分析
ソフトウェアとそれをめぐる環境が複雑になるにつれ、付随して発生する問題も複雑化し、分析と対処が困難になってきている。こうした問題を除去するためには、どのような是正処置をとれば良いのか。本章では、問題の因果関係を分析し、対策を立てる上で有効な、欠陥予防テクニックである「根本原因分析(RCA:Root Cause Analisys)」を紹介する。RCAの考え方、調査の進め方、メリットとリスクについて説明する。

【第4部 欠陥予防テクニック】
長期的な展望で欠陥を予防するテクニックを紹介する。

第12章 プロセスの導入
既存の開発プロセスを変更し、更なる改善を行う際に、参考となるいくつかのプロセスモデルを紹介する。アジャイルプロセスの概要を説明したうえで、「スクラム」「パーソナルソフトウェアプロセス(PSP)」「チームソフトウェアプロセス(TSP)」の考え方を紹介する。

第13章 FMEA、FTA、故障モデリング
ソフトウェア開発サイクルの早い時期に利用することで、設計ステージでの欠陥を効果的に防止するテクニックとして、故障モード影響分析(FMEA)、フォールトツリー解析(FTA)を紹介する。
FMEAとFTAの考え方と、使い方を、具体例を挙げて説明する。またFMEAとFTAを結合させた「故障モデリング」の考え方も紹介する。

第14章 予防タブ
「予防タブ」とは、データベースの機能の一種である。欠陥が検出されたり、修復された際に、リアルタイムでその欠陥に対して、欠陥が属するエリアに関する情報や、有効な欠陥予防テクニックを関連付けるツールである。本章ではこの予防タブの概要、実装の仕方、予防タブを使用することのメリットとリスクを紹介する。