第三者インスペクションとは
開発プロジェクトに応じた実施方法
1回の重たいレビューより、軽く複数実施した方がより多くのメリットを享受できます。現実のプロジェクトでは、欠陥検出率よりも「欠陥がすり抜ける率」を低減できることと、一時点での負荷が軽くすることで、こまめに検査を行う習慣をメンバー全体に身につけさせることがあらゆるプロジェクトの共通のコツになります。
インスペクションの回数/負担減については、プロジェクト規模に依存します。サイズが大きい場合には、品質検査コストも膨れる場合が多く、インスペクション実施コストは指数曲線を描くと言われています。長期戦の大規模システム開発においては、全作成物検査(フルバリデーション)も必要ですが、対象を作成するハジから検査/確認を行うことで、欠陥の混入時間を最小にするという考え方が極めて重要です。
以下にインスペクションのコスト効果を高めるコツを示します。それは「プロジェクトフェーズの終盤ギリギリにすべての作成物が出そろう事態を避ける」というものです。理由は期日間際に完成した(と思っている)作成物を検査することはできても検出欠陥を「修正する時間がない」という事態によく陥るからです。この事態を予防するには、以下のように、3段階で第三者インスペクションを組み込むとよいでしょう。
1:フェーズ初期の段階で品質面での検査基準をあらかじめ開発メンバーに伝えて基準を満たすように作成させる
2:フェーズ中盤では、各人の作成物の開発状況を確認し、ばらつきや標準違反などを早期段階から指摘/検査する
3:フェーズ終盤では、全量検査(フルバリデーション)を行う
特に3段階目の効果的な実現のために、こまめに第三者が1および2を実施しておくことが最大の欠陥予防効果を生み出し、3で検出される欠陥数を低減できるのです。これは俗に「品質は何よりも優先する」といったコスト効果/期間短縮効果そのものを意味しており、品質に注力することで開発効率を高めるよい事例と言えるでしょう。
逆に小規模短期開発やアジャイルのプロジェクトなどでは、品質エンジニアとしての参画や第三者インスペクション活動を通じて、毎日の作成物の開発状況をモニターし、都度欠陥検出を行うのがよいでしょう。
アジャイルの世界では、毎日開発した分をその日にビルドリリースして目に見える進ちょくをお客さまに伝えるための「デイリービルド」という考え方があります。開発者側が行うデイリービルドに対して、品質エンジニア側は「デイリーインスペクション」を行ってはどうでしょうか。はじめは生産性があがらず苦しむかもしれませんが、根気よく続けてみると必ず効果が得られます。このデイリーインスペクションやAgile Reviewという考え方は一部では「Agileの弱点を補う手法」として研究がなされいるのも特筆に値します。
では、最近主流になっているのアセット開発やパッケージ開発への適用ではどうでしょうか。
パッケージ開発やアセット開発では、適用範囲の広さ=汎用性と、どの程度信頼できるかといった信頼性・安定性について特に重点的に検査が必要になります。前者の汎用性は広いドメイン知識、広範囲なテクノロジーの両方をバランスよく有する技術者でなくてはならず、前述したように「経験数」がモノを言う世界です。さらにプロジェクトメンバーによる内部検査と、第三者インスペクションの併用が有効でしょう。
本記事のまとめ
一般的に産業が成熟する過程では、中核となる「開発/製造/サービス」に対して一定の時期までは技術が順調に成長した後、測定と検査技術の確立によって次の成長段階を迎える場合が多いと言われています。
問題は、国内の市場において「テスト」技術の潮流や、要求品質への注目などさまざまな試みがなされていますが、多くの場合「部分最適」に陥りがちであることに注意しなくてはいけません。特にプロジェクト内部での専業/分化の進む現代のシステム開発の形態では、先進技法を振りかざした結果「木を見て森を見ず」な開発に陥りやすいという特徴を示していると言い換えることができます。
この状況下において、今回ご紹介した第三者品質インスペクションは、まさに「全体を見渡す目」と言えるのではないでしょうか。
欧米では独立系の品質コンサルタントエンジニアリング会社の地位が既に確立しています。国内でも、プロジェクトの開発メンバーたちが、個々の作業に没頭できる環境作りが進めば進むほど必要となる領域であり、また「欠陥の専門家」という新しい職能の認知が進むことにより、国内市場でも「品質エンジニア」の重要性が叫ばれるようになると筆者は考えます。