Michael Jablonski

April 27, 2021

Software Validation as Opposed to Software Verification

The difference between software validation and software verification is confusing because the words look and sound the same. They are not, however, synonymous.
 
Validation determines if the as-built software does what it is supposed to do, as specified by its requirements document.
 
Verification determines if a software product satisfies specific conditions imposed on it.  
 
Acceptance testing is a form of verification, for example, by writing and executing a detailed test plan, running one test case after another, to ensure program correctness.
 
Here is how the IEEEs’ Computer Society defines validation and verification:
 
Validation is an attempt to ensure that the right product is built—that is, the product fulfills its specific intended purpose.“
 
Verification is an attempt to ensure that the product is built correctly, in the sense that the output products of an activity meet the specifications imposed on them in previous activities.”
 
Another IEEE definition I found for verification, in an older IEEE publication, is “Formal proof of program correctness.”
 
I like the third definition as it conforms with my experience in writing and executing formal and written acceptance test plans on computer programs that I have worked on under contract. The paying customer accepts the program upon the successful execution of a written, and approved, test plan.
 
I have yet to produce a program, however, free of all errors. I wish.
 
References
 
SWEBOK  V3.0, “Guide to the Software Engineering Body of Knowledge,” Institute of Electrical and Electronics Engineers’ (IEEE) Computer Society. 2004