Software requirements validation and verification are both complementary processes related to the concepts of quality assurance. Often abbreviated as V&V, the combined process of validation and verification is used in software project management, engineering, and testing to ensure that all specifications are met and the product fulfils its purpose.
They are complementary to each other because software requirements validation cannot catch certain errors that software requirements verification can, and vice versa. When used together, they allow developers to create robust software solutions that meet the requirements of their clients as well as modern usability principles and expectations.
Software Requirements Verification
The architectural foundation of anything from a modest internal piece of software to a large enterprise-grade solution is a set of requirements and specifications. Using software requirements verification methods, we can check whether these requirements have been met.
Verification should happen periodically during the development. It typically includes style checkers, static analysis, source code verification, gap analysis, proofs of correctness, robustness analysis, consistency checking, and other Quality Assurance (QA) methods.
Because we are, ideally, working with exact requirements, software requirements verification is an objective process which ensures that the software has been built right, to put it simply.
Software Requirements Validation
On the other hand, software requirements validation is a dynamic testing process concerned, first and foremost, with usability and customers’ needs. To do so, we apply subjective assessments and testing methods, including prototyping, modelling, goal analysis, model checking, and model inspection.
We need software requirements validation because specifications alone do not always produce the right solution for the job. It is one thing to build the product in the right way and it is something else to build the right product.
Summarizing the Main Differences
Perhaps the most succinct description of the difference between software requirements verification and validation comes from Barry W. Boehm, an American software engineer and distinguished professor of computer science, industrial and systems engineering at the University of Southern California.
Boehm said that we need to ask ourselves two fundamental questions for validation and verification respectively: “Are we building the right product?” and “Are we building the product right?”
While the clear-cut distinction between software requirements validation and verification is concise and easy to remember, the Agile development process requires both testing processes to occur closer together than ever before—ideally at the same time. Steve Easterbrook recommends that practitioners should “ignore the distinction, and think instead about V&V as a toolbox, which provides a wide range of tools for asking different kinds of questions about software.”
Image courtesy of David Castillo Dominici at FreeDigitalPhotos.net