Software Verification and Software Validation – What’s the Difference?

What is Software Validation?

Validation can be described as verifying that you are building what the customer wants. Software validation is the process of ensuring that your application meets functional and non-functional requirements before coding and during development. In general, validation is verifying that the customer wants a bike before you put together a car. In software, validation is verifying that the customer wants accounting software before building a data management tool. In short, validation is finding out what the customer wants before you start coding. Software validation takes place primarily during the system requirements analysis and design phase. Software validation should be done before you start writing code.

What is Software Verification?

Verification if verifying that the product is being assembled correctly, after you have determined what you are supposed to build. You are building a bike. The verification is checking that you have all of the parts of the correct sizes to build it, from the right length frame to the correctly sized seat. Software verification of an accounting tool would involve ensuring that the accounting register and check generation works per customer requirements before considering the coding complete. Software verification takes place during the implementation, integration and testing phases. Software verification should be completed before software release.

Here’s The Difference

Software validation is determining whether or not an interface with a website or another software application is necessary. Software verification is ensuring that the interface works appropriately after it is “built”. When software requirements creep or expand beyond their original scope, a new requirement for software interface is added. After the new software interface is built, it must be verified to ensure that information flows between the two applications without errors.

Common Causes of Confusion

Scope creep of a project, such as the addition of new requirements after the scope was decided, essentially moves the software validation phase into the software verification phase. Adding new software requirements adds cost and time to the software development process.

How to Avoid the Confusion
1. Include all stakeholders in the requirements definition phase.
2. Have a strict definition of the requirements definition phase. Refuse to let new requirements creep in once coding begins, even if someone promises that it is a minor change.
3. Determine where the data must come from and go as part of the typical use of the tool. If the data interface is frequently used, include the ability to transfer the data between those applications or databases a requirement and include the testing of these data transfers in software validation.
4. Focus software validation efforts on core functions over optional enhancements if crunched for time. Make sure the critical functions work, over the new features you can decide not to go forward with if you don’t have enough time to test it.
5. Recognize that functional applications are a requirement, not an enhancement. Prioritize testing of functional requirements over cosmetic ones; a report with awkward to read headers is an annoyance, but data imports and accurate reports are essential.