@David Hammenの答えは非常によく書かれていますが、私が言ったこととまったく同じではありません。ベリフィケーションが「これを正しく作成しましたか?」と回答することに同意します。プロセスによって生成されたものはすべて検証できます。製造には、生産されているものが正しく生産されていることの継続的な検証が含まれます。
次に彼は、検証は異なると同意し、「正しいものを構築したか」と定義します。検証は反対の方向に進み、設計が正確に正しく機能していることを徹底的に確認します。「ソリューションが正しく設計されていることを客観的に示す」のようなものです。適切な等級のボルト、適切なサイズの内部変数。作品は仕事次第です。
デビッドの検証、「私たちは正しいものを構築しましたか?」高レベルの質問です。これは、毎日のビルドに対して高く評価したり低く評価したりすることはできません。要件と、それよりは少ないがデザインの判断。画面のテキストボックスやAPIのパラメーターに向けられた賢明な質問ではありません。要件を正確にするための1語の名前がわからない、おそらく要件の検証。要件がエンドユーザーのニーズに対応していることを徹底的に証明します。
対照的に、私の検証の定義は、設計の正確さの証明であり、選択された部分を示す客観的テストが効果を発揮します。Ariane IVには限られた範囲の角度レート変更があったため、Ariane Vに適さなかったAriane IVソフトウェアはここでは失敗します。コードはこの限られた範囲に合わせて最適化されており、Ariane Vはより広い範囲の角速度に対応でき、オーバーフローが発生しました。両方のオンボードコンピューターがオーバーフローでクラッシュし、自動再起動後に再度クラッシュすると、破壊システムがトリガーされました。
ディクストラが言ったように、「時期尚早の最適化はすべての悪の根源です」。
私の定義では、要件は正しく、受け入れられ、要件テストによって検証されていると想定されています。設計またはコード検証は、設計、おそらく実装の一部が正しいことを証明します。それでも正しく実行する必要がありますが、それが検証であることを確認し、承認された要件と承認された設計に基づいてテストします。
これは、開発のウォーターフォールモデルに痛烈に近づいていることに注意してください。それでもなお、要件は設計とは異なり、コードは完全に3番目のものです。ウォーターフォールの要素は有用な説明ですが、「完全」は誤解を招くので、偶然性と可変性を示唆する「承認済み」に変更しました。