Verification and validation, is the code doing its purpose?

When developing software, verification and validation serve the purpose of verifying if the software meets the specified requirements and if the software is fulfilling its purpose. Doing verification and validation can help us answer some key questions: “Was this software what we should have built? Assuming we build this software, will we be able to achieve our goal?”. There’s an IEEE Standard for Software Verification and Validation. This standard provides common frameworks when working with V&V processes.

Verification can be defined by “Are we building the product right?”. Verification is done before the implementation starts. Verification includes checking that the proposed system will solve the problem without bugs or errors. We are trying to see if the project aligns with the requirements before even starting it. During the verification phase, there are a couple of steps that are involved: inspections, reviews, walkthroughs and desk-checking.

Validation can be defined by “Are we building the right product?”. Validation is done after the implementation is done. Validation evaluates the project and determines if the project satisfies the requirements. It’s useful to ensure that the project meets the user’s needs, the project works as intended. Validation includes various activities, which are all types of testing: black box testing, white box testing, unit testing and integration testing. The phases in which verification and validation happen can be seen below, a V model is used.

Image source

One of the activities that is part of verification are walkthroughs. Walkthroughs includes reviewing documents with peers and managers, generally, everyone that participates in a walkthrough works in the same project. During the walkthrough, the author of the document is who guides others through the review. On the other hand, one of the activities that’s part of validation is unit testing. This type of testing involves taking parts or components of the code and testing them separately. These units may receive an input and return an output, as long as this output is correct, that unit is working properly. When working with an object-oriented language, a unit can be a method.

Validation and verification are really useful, they ensure that you don’t do a lot of work that you end up not needing. I have personally suffered a lot thanks to not doing this. There have been times where I start a project and need to start all over again because what I did was fundamentally wrong, the project didn’t really fulfill the requirements.

Leave a comment

Design a site like this with WordPress.com
Get started