Verification

Validation

It is the process of checking the work-products of a phase of software development to  figure out whether these work-products meet the said requirements for that particular phase.It is applied to the work-products and not to the final product. It is the process that is applied to the software at the end of the development process or during the development process to check if the software meets the business requirements.
The objective of verification is to make sure that the product that is being built is as per the design specifications. In other words, it ensures that the specified requirements are being met in the work-products. It first of all checks whether the specifications are correct. It ensures that the user’s needs are met in the product.
It answers the question that is the product being built rightly? It caters to the question that is the product which is being built is the right product?
This is a static process. This is a dynamic process.
It involves verification of design, code and documents. It involves validating the product that is being built actually.
Execution of code is not required during the process of verification. Execution of code is always an integral part of the validation process.
The process of verification is largely human based. Verification of documents and files involves human checking. Since it involves execution of code, it is computer based.
Methods included in the process of verification are Reviews, Walkthroughs, Inspections and Desk-checking. Methods included in the process of validation are black-box testing (functional), white-box testing (structural) and gray box testing.
It is an exercise at low-level. Hence, it can find those errors which cannot be found in validation. It is an exercise at high-level. It can catch errors which are overlooked by verification.
Since verification is done from the start of the process, it makes the understanding of the product in a more appropriate way. In case some specification has been misinterpreted during the verification stage, it can be understood during validation by looking at the difference between the expected and the actual result.
In the process of verification, it is observed whether the output is coming correctly according to the input. In the process of validation, it is observed whether the customer will accept the product or not.
This process is conducted before the process of validation. This process is conducted once the verification process gets over.
The chances of failure get reduced in the later stages of development. If any defects get failed to be recognized during verification, the can be intercepted as failures during this process.
The cost and overhead identified during verification are lower than errors identified in the process of validation. This is due to early recognition of the errors. The cost and overhead identified during validation are higher than errors identified in the process of verification. This is due to late recognition of the errors.
The following aspects are verified during this phase:

  • Plans
  • Requirement specifications
  • Design specifications
  • Code
  • Test Cases etc.
The following aspects are evaluated during this phase:

  • Actual (complete) product
  • Software under test.
Verification ensures whether the data being accessed is being accessed in the correct manner i.e. in the right place. It determines whether the correct data is accessed or not. It checks if the data which is suited to the requirement is being accessed or not.
The Capability Maturity Model(CMMI-SW v1.1) explains verification as a process of determining whether the end product of a particular development phase are in agreement to the conditions introduced at the beginning of the phase. The Capability Maturity Model(CMMI-SW v1.1) explains validation as a process of determining whether the end developed product meets themposed requirements.