What is the difference between “Verification” and “Validation”?

Verification answers the question “Am I building the product correctly?” i.e. Does the product do what the requirements said that it should do. Verification is a low-level activity, done by testers and developers mostly, and performed during development on key artifacts, like walkthroughs, reviews and inspections, mentor feedback, training, checklists and standards. It is a Demonstration of consistency, completeness, and correctness of the software at each stage and between each stage of the development life cycle.

According to the Capability Maturity Model(CMMI-SW v1.1) we can also define verification as the process of evaluating software to determine whether the products of a given development phase satisfy the conditions imposed at the start of that phase. [IEEE-STD-610].

Validation answers the question “Ami I building the right product?” i.e. Does the product being built actually fulfill its intended purpose and meet the client’s needs? Validation is done at the end of the development process and takes place after verifications are completed. It is a High level activity, performed after a work product is produced against established criteria ensuring that the product integrates correctly into the environment.

According to the Capability Maturity Model(CMMI-SW v1.1) we can also define validation as The process of evaluating software during or at the end of the development process to determine whether it satisfies specified requirements. [IEEE-STD-610].