検証(けんしょう)情報システム用語辞典

verification / 独立検証 / 正当性検証

» 2011年11月07日 00時00分 公開

 生産プロセスやプロジェクトなどの個別工程において、インプット(要求や仕様、指示)どおりにアウトプット(注1)が得られているかを確認すること。作業やプロセスの1つ1つが要求や仕様に対して正しいかどうか確証を得て、評価する活動である。

 検証作業は、生産活動などの物理活動を持つプロセスでは作業手順などを定め、実施記録や作業測定を実施して論拠を示す形で行われる。物理的に作業が見えにくいソフトウェア開発では工程成果物に対してテストレビューを実施して検証とする場合が多い。

 システム工学の世界には妥当性確認(validation)と対にしたV&Vの概念がある。ソフトウェア開発ではVモデルで表現されるが、下部に見える「設計−結合テスト」「コーディング−単体テスト」などの対応を確認する活動が検証に当たる。「プログラム検証」「システム検証」といった言い方もある。

ALT Vモデルを表すベームのVチャート

 バリー・ベーム(Barry W. Boehm)はVモデルを示した論文「Guidelines for Verifying and Validating Software Requirements and Design Specifications」(1979年)で、検証のことを「Are we building the product right?=正しくプロダクトを作っているか?」と説明している。

 ソフトウェア開発における検証は、ソフトウェアプロセスの各工程で作られるモデル(概念モデル、数理モデル、論理モデル)がそれぞれ正しく変換されているかを確かめる作業だといえる。ソフトウェア開発自体、対象とする事象(ビジネス業務や機械の挙動など)を論理や計算などからなる抽象モデルに置き換える作業だが、この作業は通常、事象から直接実行コードを作成するのではなく、ユーザー要求から業務モデルなどの中間モデルを生成し、それをさらに別のモデルに変換するといった形で進められる。この“伝言ゲーム”の各ステップに間違いがないかどうかを確認する作業が検証である。

 IEEE Std 610.12(用語集)では「それぞれの開発工程の成果物がその工程の開始時に与えられた条件を満たしているかどうかを決定するためにシステム/コンポーネントを評価するプロセス」、CMMIでは「作業成果物が明記された要件を適切に反映しているかどうか確認すること。すなわち、検証とは“正しく構築した”ことを確実にすること」と定義している。

 また、ISO 9000では、検証を「観察・測定・試験などの手段による客観的証拠を提示することで、慣習や義務として要求されているニーズ・期待などの規定要求事項が満たされていることを確認すること」と定義している。

 なお、論理学における検証(実証ともいう)は命題の真偽を判定する方法の1つ(※)である。これは命題を肯定するためのもので、全称命題を検証するには対象範囲のすべての証拠が必要となる。例えば、「カラスは黒い」という命題を肯定するには、地球上の(過去に存在したものも含めて)すべてのカラスが黒いことを確かめればよい。

※ もう1つの方法として反証がある。これは命題が偽であることを示すもので、「カラスは黒い」という命題の否定するには、黒くないカラスを発見すればよい

(注1)作業成果物


参考文献

▼『ソフトウェアテスト見積りガイドブック――品質要件に応じた見積りとは』 情報処理推進機構ソフトウェア・エンジニアリング・センター=編/オーム社/2008年9月

▼『課題・仕様・設計――不幸なシステム開発を救うシンプルな法則』 酒匂寛=著/インプレスネットビジネスカンパニー/2003年12月


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ