Introduction
ソフトウェア開発において、verificationとvalidationを耳にする機会があるかもしれません。しかし、似たような単語のため、それぞれが何を意味するのか明確に理解していない方も多いでしょう。verificationとvalidationの2つの視点を用いた品質保証は、高品質な開発を行ううえで欠かせません。
この記事では、verificationとvalidationの違いと、ソフトウェア開発における意味・定義を解説します。
目次
「verification」と「validation」という単語の意味・違いは?
はじめに、もともとの「verification」と「validation」の意味について調べてみましょう。ソフトウェア開発とは関係なく、辞書で説明されている単語の意味を解説します。
verificationの意味
verificationとは、(真実であることの)確認、立証、検証、証明という意味です。たとえば、スマホ操作で使用する認証コードのことを「verification code」といいます。
validationの意味
validationとは、(作業結果などが規定の条件や仕様に適合しているかどうかの)検証、証明、妥当性確認 という意味です。データ検証のことを「data validation」といいます。
ソフトウェア開発における「verification」と「validation」の違いとは?
もともとの単語の意味を理解したところで、ソフトウェア開発における単語の意味も理解していきましょう。ここでは「verification」と「validation」の2つの単語それぞれを、各認証機関がどのように定義しているかを解説します。
verificationの意味は「検証」
ソフトウェア開発業界において、verificationの意味は検証として用いられています。以下3つの認証機関の定義を解説します。
ISO 9000:2015(JIS Q 9000:2015)での定義
ISO 9000:2015(JIS Q 9000:2015)でのverificationの定義は、独立行政法人情報処理推進機構(IPA)の『つながる世界の品質確保に向けた手引き』によると、以下のとおりです。
verification
客観的証拠を提示することによって、規定要求事項が満たされていることを確認すること
SWEBOK Ver 3.0[SWEBOK 2013]での定義
SWEBOK Ver 3.0[SWEBOK 2013]でのverificationの定義は、宇宙航空研究開発機構(JAXA)の『IV&Vガイドブック導入編』によると、以下のとおりです。
verification
評価対象ソフトウェアのライフサイクルを通し、上流プロセスの成果物から下流プロセスの成果物への要求トレースが可能であり、それらが内容を含め整合していることを検証すること
IEEE 1012:2012での定義
IEEE 1012:2012でのverificationの定義は「各開発工程の成果物が前工程で意図した要求事項あるいは条件を満たしているかどうかを決定するプロセス 」と和訳されています。
validationの意味は「妥当性確認」
つづいて、validationは、ソフトウェア開発業界でどのように用いられているかを見ていきましょう。簡単にまとめると、validationの意味は妥当性確認です。以下3つの認証機関の定義を解説します。
ISO 9000:2015(JIS Q 9000:2015)での定義
ISO 9000:2015(JIS Q 9000:2015)でのvalidationの定義は、独立行政法人情報処理推進機構(IPA)の『つながる世界の品質確保に向けた手引き』によると、以下のとおりです。
validation
客観的証拠を提示することによって、特定の意図された用途又は適用に関する要求事項が満たされていることを確認すること
SWEBOK Ver 3.0[SWEBOK 2013]での定義
SWEBOK Ver 3.0[SWEBOK 2013]でのvalidationの定義は、宇宙航空研究開発機構(JAXA)の『IV&Vガイドブック導入編』によると、以下のとおりです。
validation
評価対象ソフトウェアが最上位要求であるミッション要求、安全要求、運用要求から求められる機能、性質及び品質を満足していることを確認すること
IEEE 1012:2012での定義
IEEE 1012:2012でのvalidationの定義は「それぞれの開発工程の成果物が最終のシステムあるいはコンポーネントに対する利用者のニーズや意図された利用法などの要求事項を満たしているかどうかを決定するプロセス 」と和訳されています。
verificationとvalidationをあわせて「V&V」とも呼ばれる
verificationとvalidationは、2つあわせて「V&V」と呼ばれることもあります。V&Vは、検証と妥当性確認を意味します。V&Vは、製品やサービス、システムなどの品質保証に対する基本的な考え方です。製品開発における各プロセスが正しく行われ、成果物も正しくつくられていることを2つの視点から評価するものです。
英語では、この2つの違いを「正しく製品をつくる」と「正しい製品をつくる」と表現することがあります。つまり、製品開発段階で行うのがverification、成果物の確認を行うのがvalidationと理解できます。
V&Vをソフトウェア開発のV字モデルにあてはめると?
V&Vのうち、verificationはインプットが正しくアウトプットに変換されていることを確認するプロセスです。ソフトウェアでは多くの場合、開発中の検証作業にあてはまります。
前工程の成果物をインプットとして、その工程でつくられた成果物をレビューやテストによって確認します。また、予定の成果物が揃っているかや、レビューにかける時間、テストの密度など、必要なWBSが実行されたかを確認します。
よくある例としては以下があげられるでしょう。
・インプットとアウトプットのトレーサビリティレビュー
・仕様を基にした単体テストや統合テスト
・レビューやテストの十分性の評価
V&Vのうち、validationは最終成果物が顧客の期待にあっているかを確認するプロセスです。ソフトウェアでは多くの場合、受け入れテストや運用開始後の評価となります。
もちろん、要求分析や要件定義のアウトプットの品質確認も重要です。開発中でもさまざまな場面でvalidationを実施することが望まれます。
よくある例としては以下があげられるでしょう。
・要求分析や要件定義の業務を踏まえたレビュー
・開発中でのユーザビリティ確認テスト
・業務利用や運用を含めた受け入れテスト
ソフトウェア開発における「verification」と「validation」の例
ソフトウェア開発において「verification」と「validation」の2つの視点から品質保証を行うことは重要です。ISOの認証審査においても、V&Vの視点が含まれています。
ソフトウェア開発では前述のように、verificationは開発中の品質確保プロセス、validationは顧客視点の品質確認プロセスとなりますが、これ以外にも、さまざまな場面でV&Vプロセスを検討する必要があります。
ここでは、それぞれの具体的な事例をご紹介します。
verification(検証)の例
ISO9001(JIS Q9001:2015)の8.3.4設計・開発の管理C項によると「設計・開発からのアウトプットが、インプットの要求事項を満たすことを確実にするために、検証活動を行う」ことが求められています。この定義を踏まえ、以下のような検証を行えます。
・検討した技術で仕様が実現できるかを確認する試作評価
・設定した要件が満足できるかを確認する性能評価
validation(妥当性確認)の例
ISO9001(JIS Q9001:2015)の8.3.4設計・開発の管理D項によると「結果として得られる製品及びサービスが、指定された用途又は意図された用途に応じた要求事項を満たすことを確実にするために、妥当性確認活動を行う」ことが求められています。この定義を踏まえ、以下のような検証を行えます。
・アプリケーションソフトα版による顧客評価
・利用者アンケートやモニターによる評価
まとめ
この記事では、verificationとvalidationの違いと、ソフトウェア開発における意味・定義を解説しました。
verificationとvalidationは、それぞれ検証と妥当性確認という意味です。ソフトウェア開発においては、ソフトウェアが仕様を満たしていることと、顧客要求を満たしていることをそれぞれ確認する作業とも定義できます。
SHIFTでは、最上流工程から行う抜本的品質保証で組織・プロジェクト全体の品質を底あげする、品質コンサルティングを行っております。開発製品の品質向上についてご検討中でしたら、ぜひお気軽にお問い合わせください。
監修
永井 敏隆
大手IT会社にて、17年間ソフトウェア製品の開発に従事し、ソフトウェアエンジニアリングを深耕。SE支援部門に移り、システム開発の標準化を担当し、IPAのITスペシャリスト委員として活動。また100を超えるお客様の現場の支援を通して、品質向上活動の様々な側面を経験。その後、人材育成に従事し、4年に渡り開発者を技術とマインドの両面から指導。2019年、ヒンシツ大学の講師としてSHIFTに参画。
担当講座
・コンポーネントテスト講座
・テスト自動化実践講座
・DevOpsテスト入門講座
・テスト戦略講座
・設計品質ワークショップ
など多数
――――――――――
ヒンシツ大学とは、ソフトウェアの品質保証サービスを主力事業とする株式会社SHIFTが展開する教育専門機関です。
SHIFTが事業運営において培ったノウハウを言語化・体系化し、講座として提供しており、品質に対する意識の向上、さらには実践的な方法論の習得など、講座を通して、お客様の品質課題の解決を支援しています。
https://service.shiftinc.jp/softwaretest/hinshitsu-univ/
https://www.hinshitsu-univ.jp/
――――――――――