メルマガ
バックナンバー

第159号:検証と妥当性確認の違い

2017年06月23日

  • 検証と妥当性確認の違い

    検証と妥当性確認の違いがよくわからないという声をたまに聞く。

    検証と妥当性確認は似ているが、異なる課題を扱う。どちらも、レビュー、インスペクション、テストを含む点では似ている。

    用語集には、次のようにある。
    ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
    検証(verification)
    作業成果物が明記された要件を適切に反映しているかどうかの確認。
    つまり、検証は、『正しく構築した』ことを確保する。

    妥当性確認(validation)
    提供された (または提供されるであろう) 成果物やサービスがその意図された用途を充足しているかどうかの確認。
    つまり、妥当性確認は、『正しいものを構築した』ことを確保する。
    ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥

    プラクティスもよく似ている。検証のSG2を除けば、これら二つのプロセス領域の違いは、検証は作業成果物を扱い、妥当性確認は成果物を扱っているところぐらいである。

    作業成果物と成果物の違いは、作業成果物は必ずしも最終成果物の一部ではないことである。成果物は、顧客または最終利用者への納入が意図された作業成果物である。

    では、作業成果物をレビューしたりテストしたりすれば検証で、成果物をレビューしたりテストしたりすれば妥当性確認かというとそうでもない。

    妥当性確認を遂行するために採用される手法は、成果物だけでなく作業成果物にも適用できる。

    単体テストと結合テストが検証であり、システムテストが妥当性確認であるという考え方もある。

    これが正しい場合もあれば、そうでない場合もあるであろう。どのようにテストを設計するのかに依存する。

    検証も妥当性確認も成果物開発ライフサイクル全般にわたって漸進的に実施される。

    検証と妥当性確認の両方の活動が同じ環境を使用し同時並行的に実行される場合もある。

    妥当性確認活動には、顧客や最終利用者が関与するという考え方もある。多くの場合、これは正しいであろう。しかし、顧客や最終利用者が関与しない妥当性確認もあり、顧客や最終利用者が関与しても、関与の形態によって妥当性確認ではない場合もある。

    妥当性確認は、意図された環境に設置された成果物を実証しなければならないかというとそうでもない。もちろん可能であれば意図された環境で稼働している成果物を使用して妥当性確認を遂行したほうがよいが。

    すこしややこしくなってしまったが、どのような課題を扱うかが検証と妥当性確認の主要な違いである。検証は作業成果物が指定された要件を適切に反映しているかどうかを確認する。妥当性確認は、成果物が提供されたときに、その意図された用途を充足するかどうかを確認する。

    検証は、作業成果物がそのインプットを適切に反映しているかを確認し、妥当性確認は、成果物が利用者の観点から意図された正しいものになっているか確認するのである。

    例えば、簡単に言うと、ユーザマニュアルのレビューといっても、間違ったことが書いてないか確認するのが検証で、最終利用者が理解でき正しく操作できるように書いてあるか確認するのが妥当性確認である。

    さて、最後にクイズを提示する。
    どれが検証で、どれが妥当性確認であろうか?

    1.顧客と共に、正式なデザインレビューを実施する。
    2.システムエンジニア、ソフトウェアエンジニアとQAがピアレビューを行う。
    3.フィードバックを得るために、顧客に対してプロトタイプの実演を行う。
    4.納入前に、成果物の正式なテストを行い、顧客とQAがテストに立ち会う。
    5.構成要素を統合し、システムをテストする。

    答えを確認したい方は、ぜひCMMI入門コースで議論して頂きたい。