目次
1.はじめに
2.目的
3.そもそもの単語の意味
4.ソフトウェア業界における定義
5.正しい開発・正しい成果物を抽象的に考える
6.ソフトウェア開発では?
7.まとめ
8.参考サイト
はじめに
トレーサビリティに関する論文を読んでいてVarificationとValidation2つの単語が出てきたので違いを調べてみました。
目的
ソフトウェア開発において2つの単語の違いをなんとなくでも理解すること。
そもそもの単語の意味
- Verification:確認、立証、検証
- Validation:【作業結果などが既定の条件や仕様に適合しているかどうかの】検証、証明、妥当性確認
単語だけ調べると似たような言葉が出てくる。
ソフトウェア業界における定義
IEEE 1012:2016
IEEE 1012:2016[1]より
-
Verification(検証)
ライフサイクルの各プロセスにおけるすべての活動において、要求事項(正確性、完全性、一貫性、正確性など)に適合していること。
各ライフサイクル活動が完了し、次のライフサイクル活動を開始するための基準をすべて満たしている(製品が正しく作られている)。 -
Validation(妥当性確認)
各ライフサイクル活動の終了時に製品に割り当てられた要件を満たしている。
意図された用途とユーザーニーズを満たす(正しい製品が構築される)。
バリー・ベーム(Barry W. Boehm)
ソフトウェア界隈では超有名人、バリー・ベーム(Barry W. Boehm)さんはVモデルを示した論文[2]において
- Verification:Am I building the product right?
- Validation:Am I building the product right product?
正しく開発を行っているか 正しい成果物を作っているかと説明しています。
間違っていたら申し訳ございません。
正しい開発・正しい成果物を抽象的に考える
設計や開発などを通して出力されたものが正しいかどうかを確認する作業において2種類の正しいがあると解釈しました。
ソフトウェア開発では?
ウォーターフォールモデル開発がメインとして当てはまりそうな下のような流れ。
- 要求を入力として設計成果物を作る
- 設計成果物を入力としソースコードができる
Varification(検証):左から右に工程が流れるときに正しく詳細化できたのかを確認する
Validation(妥当性確認):作った成果物が作りたいものなのかを確認する
という自分の中の解釈に落ち着きました
まとめ
作られた成果物を何と検証するか、ターゲットの違いがあるんだという解釈。
この記事を書くまではWebアプリケーションなどでValidation(入力内容の検証など)を聞いたことがあったが開発工程全体を通しても意味があるんだと勉強になった。
優劣をつけるものではないと思いますが、個人的な意見として要求と比較している分Validationの方が重要なのかなとも思いました。
参考
以下の論文・記事を参考にさせていただきましたありがとうございます。
[1] 2017. IEEE Standard for System, Software, and Hardware Verification and Validation. IEEE Std 1012-2016(Revision of IEEE Std 1012-2012/ Incorporates IEEE Std 1012-2016/Cor1-2017) (2017), 1–260.
[2] B. W. Boehm. 1979. Guidelines for Verifying and Validating Software Requirements and Design Specifications. In Euro IFIP 79, P. A. Samet (Ed.). North Holland,711–719.
- V&V(Verification & Validation:検証と妥当性確認)とは (Access.2022-07-11)