Software verification and validation
As software engineers, we should all already know that we must always test our programs before delivering. The two main questions you should always ask yourself before even considering showing your client a product are:
- Is it verified?
- Is it validated?
While these two might sound similar and they both refer to what the client wants to build, they refer to two completely different things, and should never be confused when making sure that your code is ready to be delivered.
Verification
This is the process of evaluating our code to make sure that the products of any given development phase are satisfying the conditions that were determined at the very beginning of said phase. This means that while it doesn’t evaluate the final product, it makes sure that we are on the right track. When verifying our code, we decide whether or not our software satisfies the specified requirements of said phase.
Are we building the product right?
In this step, you should always keep the question “are we building the product right?” in your head. This way, you know that you’re checking whether or not the program works as intended.
Validation
This refers to the process of evaluating our code to make sure if it satisfies the business requirements of our project. It makes sure that by the end of the project, our software does exactly what the client needs, and this is directly related to the specifications that were specified at the beginning of the project. This also means that we are assuming that we got the specs right from the very beginning. If not, this whole step is useless, since the software will never be validated if we’re not checking all the real requirements set by the customer.
Are we building the right product?
There are two main ways to perform software validation, but they both focus on the question “are we building the right product?”
If the validation is done internally, we assume that the goals that we set from the very beginning were correctly interpreted, and if the project meets the expectations set in the requirements, we say that it is internally validated.
If the validation is done externally, it’s the client, partners and stakeholders who decide whether or not the product meets their needs. Since they are the ones in charge of the project, you could say this is the real verification, since they’re the ones who really know how they want their program to behave.