第三者インスペクションとは
第三者インスペクションの実施プロセス
インスペクションとは、日本語では単純に「検査」と訳されることが多いですが、一般的には仕様やプログラムコードの品質確認検査、特に複数人数での目視検査を中心とした品質レビュー活動を意味します。
外部音が遮断できる部屋に3~4人のエンジニアを集め、欠陥検出および除去方針まで決定する形態が最もポピュラーです。この際、モデレーターと呼ばれる会議の主催者や対象を読み上げるリーダー、読み上げられた対象を検査するバリデータといった、役割(ロール)を決定して検査を行います。
インスペクション、特にフォーマル・インスペクションと呼ばれる品質検査手法は、その欠陥検査精度は極めて高く、仕様書作成時点の上流フェーズから実施することで、欠陥除去効率を著しく向上させると言われています。
しかし、一般に普及しているこれらのインスペクションには、実は大きく3つの課題があります。
1つ目は「書かれていないものはインスペクションできない」こと、つまりコードの欠落に対して欠陥検出が行えないことです。読み上げる対象がないわけですから仕様欠落/漏れが検証できないのも当然です。
2つ目は、「客観性を欠く」ということです。これは仕様やコードを記述した本人がレビューを実施しても「仕様が正しいはずだ」という先入観が働くため欠陥検出率が低くなる場合があるというものです。
3つ目は、これが一番大きな問題ですが、「品質コストが極端にかかる」という点です。例えば、1000ページの設計書を全検査することを考えてみましょう。4人で検査するインスペクション速度を1ページ30分と仮定すると、1時間で2ページ、全検査に500時間です。これは20日/月勤務の8時間労働で3ヶ月以上に及びます。速度を優先し3チームで検査を行っても、すべての検証に1ヶ月かかります。もし本当にこの全検査を実施しようしても、どんなに強靱(きょうじん)な精神力を持った担当者でも、1ヶ月間同じ集中力と同じ欠陥検出精度を維持することなどまず不可能です。精神論に立脚した「長期のインスペクション」は品質を落とすとも言われています。
第三者インスペクションの検査効率と品質コスト
この検査効率と品質コストの問題については、今回のメーンテーマである第三者インスペクションが大きく貢献します。プロジェクトメンバー「以外」の外部の品質検査専門家にプロジェクト作成物の「品質検査を依頼すること」を第三者品質検証=外部インスペクションと呼びます。
この形態はIT産業に特有の形式ではなく、医療分野で、病院の検査部、検査技師の存在や、製造業の品質保証部の役割と同様のものです。
インスペクションの専門家は、プロジェクトから検体(検査対象となるコードや仕様書)の全量を受け取り、目視を中心とした品質検査、すなわちインスペクションを実施して、最終的に検出欠陥リストとその対策アクションをプロジェクトへ返します。
実施する目視検査方法はそれぞれの品質要求に応じて、フォーマルインスペクション(前述の会議形態)や、バディーチェックと呼ばれる二人一組の確認検査、および過去の欠陥事例や傾向との照合などを行うパターン検査法などを選択して実施します。
そもそも、インスペクションとは前述のように「読み上げる」ことで仕様伝達の理解相違を検出することを主な狙いとしてます。2者間の仕様伝達の齟齬(そご)という欠陥は最も検出が難しく、最も後フェーズでの除去が困難と言われており、これを組織や人をまたがって、プロジェクト外部に「伝達を試みる」ことそのものに意味があるのです。
次にこの第三者インスペクションの優位性やメリットについて考えて見ましょう。