ナレッジNEW

VerificationとValidationとは?両者の違いを意味や目的から解説

VerificationとValidationとは?両者の違いを意味や目的から解説

この記事では、用語として密に関連しているverificationとvalidationの違いを、意味や目的とその役割およびソフトウェア開発における定義から解説していきます。

VerificationとValidationの意味の違い

まず、言葉としての意味の違いを英語辞典で調べた結果を示してみます。なお、日本語訳は筆者が行いました。

Verificationとは

VerificationはVerifyの名詞であり、

  1. 何かが正しいか、または真実であるかどうかを知る(Discover)こと
  2. 何かを真に確認(Confirm)したことを述べる(State)こと

1.の例文として

“A computer program verifies that the system is working.”

とあります。Verificationの訳に『検証』を当てて翻訳すると、「システムが動作していることを通してコンピュータプログラムを検証する」となります。

Validationとは

ValidationはValidateの名詞であり、

  1. 何かが正しいか、または真実であるかどうか、文書や公式な合意と法的に受け入れ可能な確認により、形式的(Formaly)に証明(Prove)すること
  2. 考えや気持ちが尊重され、真剣に考慮されていると感じさせること

1.の例文(Validationではなく動詞のValidateを用いていますが)として

“Many scientists plan to wait until the results of the study are validated by future research.”

とあります。

Validateの訳に『妥当性を確認する』を当てて翻訳すると、「多くの科学的な計画は研究結果が将来の調査により、その妥当性が確認されることを待つ」となります。

上記から、VerificationよりValidationの方がさらに厳密な意味を持つことが分かります。

EvaluationやQualificationとの違いは?

検証や妥当性確認のように、ソフトウェア開発でよく使われていて似たような(時に混乱をもたらす)用語として、Evaluation(評価)やQualification(認定)があります。

こちらも、英語辞典で調べてみました。

Evaluationは「何かがどれほど優れているか、どれだけ有用であるか、または成功しているかについての判断(Judgment)」となっています。

判断指標は定性的にも定量的にも示されることが多く、ソフトウェアテストにおいても、単に合格、不合格を示すというよりは、どれだけ品質目標をテスト対象が満たしているかという判断する行為であると考えられます。

Qualificationは「人やチームが必要な基準(Standard)に達したとき」となっています。

ソフトウェア開発における用例としては、準拠すべき国際標準を満たす活動ができていることを認定する、といった文脈で使用されることもあります。

VerificationとValidationの目的とその役割

ソフトウェア工学分野において、VerificationとValidationをセットにしてV&Vと表現されることがあります。また、Independent V&V(略してIV&V)のように活動を指す表現として使われることもあります。公的機関のIV&Vの例としては、JAXA IV&Vが挙げられます。

V&Vを計画するためのガイドを示した標準IEEE Std 1059-1993 によると、V&Vとは、「製品ライフサイクル全体を通じてソフトウェア製品を評価(Assessing)するための規律あるアプローチ」とされています。(以後、標準の日本語訳は筆者が行いました)

V&Vの目的は「欠陥(Defect)を発見し、必要な機能および属性がソフトウェアシステムに組み込まれているかどうかを判断すること」とされています。

V&Vの主な活動

では、V&Vの目的を満たすために、どのような取り組みが必要となるのでしょうか。

引き続き、先のIEEE-1059によると、V&V の取り組みは「ソフトウェアに品質が組み込まれ、ソフトウェアがユーザーの要求を満たしていることを保証するもの」とされています。

そのための具体的なV&Vとして、ソフトウェア開発の成果物に対して行われる活動は、次のようなものであると示しています。

a)各ソフトウェアライフサイクル・フェーズにおける成果物の検証(Verification)

 1)前のライフサイクルのフェーズにおける要求事項とプロダクトの特性(正確性、完全性、一貫性、正確性など)に適合して(Comply)いること

 2)当該フェーズに適用する標準や慣行、規約類を満たして(Satisfy)いること

 3)次のライフサイクルのフェーズの活動を開始するための適切な基盤を確立していること

b)完成した最終プロダクトが、確立されたソフトウェアおよびシステム要件に適合(Comply)していることへの妥当性確認(Validation)

VerificationとValidationのソフトウェア開発における定義

ここまで、Verification(検証)とValidation(妥当性確認)の、そもそもの言葉自体の違いや、ソフトウェア開発における目的や主な活動を説明しました。

次に、ソフトウェア工学分野での定義などから、より詳細にその違いをひも解きます。

V字モデルで見えてくるVerificationとValidationの違い

V字モデルを論文にて最初に表したことでも有名なバリー・ベーム氏によれば、Verificationとは"Are we building the product right?"「プロダクトを正しく作っているか?」であり、Validationとは"Are we building the right product?"「正しいプロダクトを作っているか?」を問うことだと説明しています。

用語の説明として、両者は似ているのですが、微妙に異なっていることが分かります。

V字モデルでは、Verificationは開発工程が連なる縦の関係性を、Validationはある開発工程と妥当性確認を行う工程とをつなぐ横の関係性を表していると言えます(図表1)。

前項で説明した、IEEE-1059におけるV&Vの主な活動を踏まえると、V&Vそれぞれの役割の理解がより深まります。

図表1:基本的なV字モデル【IPA ソフトウェアテスト見積ガイドブック】より引用
図表1:基本的なV字モデル【IPA ソフトウェアテスト見積ガイドブック】より引用

VerificationとValidation ソフトウェア開発における位置付け

では、更にソフトウェア工学分野の文献や国際標準での定義を見ていきましょう。本記事では、ソフトウェア工学全般のガイドであるSWEBOK V4.0 とソフトウェアテストの国際標準であるISO_IEC_IEEE 29119における定義を、VerificationとValidationに分けて示します。(日本語訳は筆者が行いました)

なお、29119についての解説は、以下の記事をご参照ください。

SWEBOK V4.0

6.5. 検証、妥当性確認、および認証(Certification)

・検証:設計で定めた要件(Requirements)を満たしていることを確認(Confirm)すること。

・妥当性確認:設計によりシステムが利害関係者(顧客、ユーザー、運用者、保守者など)の期待に応えられることを確立(Establish)させること。

・認証:設計が全体的な仕様および意図された用途に適合していることを第三者が証明すること。

ISO_IEC_IEEE 29119-1:2013(最新版は2022ですが、手元にある2013年版を参照しました)

第1部:概念および定義

5.1.1 検証および妥当性確認におけるテストの役割

この規格は、検証および妥当性確認活動の一部のみを対象とする。具体的には、

検証および妥当性確認の主要な活動であるソフトウェアテストを対象としている。他の規格、例えば、ISO/IEC 12207 (システム及びソフトウェア工学-ソフトウェアライフサイクルプロセス)や IEEE 1012 (システム、ソフトウェアおよびハードウェアへの検証と妥当性確認)では、他の検証または妥当性確認の活動を取り扱っている。この規格はテストを取り扱うものであり、妥当性確認および検証の他の活動(例えば、V&V 分析、形式手法)については、簡単に触れる場合を除いて取り扱わない。プロダクトについて完全な妥当性確認および検証を行うためには、組織はこの規格を他の規格と併せて、包括的なエンジニアリングプログラムの一環として使用する必要がある。

まとめ

SWEBOKやISO_IEC_IEEE 29119に書かれていることを通して、VerificationとValidationに対する理解が深まったでしょうか。

本記事が、読者の皆さまが実施される検証や妥当性確認を行う上で参考になれば幸いです。



■参考資料■

「SWEBOK V4.0:Guide to the Software Engineering Body of Knowledge v4.0」IEEE Computer Society

「ISO_IEC_IEEE 29119-1:2013 Software and systems engineering —Software testing —Part 1: Concepts and definitions」ISO,IEC,IEEE

「IEEE Std 1059-1993 IEEE Guide for Software Verification and Validation Plans」IEEE

SNSシェア

この記事は面白かったですか?

今後の改善の参考にさせていただきます!

Search Articles By The Cast出演者/執筆者から記事を探す

Search Articless By The Categoryカテゴリから記事を探す

Ranking

ランキング

もっと見る