← New search

Other meanings of Verification and validation

Software engineering

Software verification and validation

In software testing, verification and validation (V&V) are independent procedures used together to check that a software product meets its requirements and fulfills its intended purpose. Verification confirms that the software is built correctly, while validation confirms that the correct software was built.

2
primary activities
verification and validation
IEEE 1012
standard for V&V
IEEE Standard for System, Software, and Hardware Verification and Validation
1979
year of first IEEE V&V standard
IEEE Std 1012-1979
1

Definitions and distinction

Verification and validation are distinct but complementary activities. Verification evaluates whether the software conforms to its specified requirements at each stage of the development lifecycle, often through reviews, inspections, and static analysis. Validation evaluates the final product to ensure it meets the user's needs and expectations, typically through dynamic testing. The classic distinction is often summarized as: verification answers "are we building the product right?" while validation answers "are we building the right product?"

In practice, verification is a quality control process that checks artifacts like requirements documents, design specifications, and code against predefined standards. Validation is a quality assurance process that exercises the software in a realistic environment to uncover defects and assess usability. Both are essential for delivering reliable software, and they are often performed iteratively throughout the development lifecycle.

2

Methods and techniques

Verification techniques include static analysis, code reviews, walkthroughs, and formal methods such as model checking and theorem proving. These methods do not execute the code but analyze its structure and logic to detect errors early. Validation techniques include dynamic testing, such as unit testing, integration testing, system testing, and acceptance testing, which execute the software and compare its behavior against expected outcomes.

Automated tools support both activities: static analyzers like SonarQube and linters check code for potential defects, while test frameworks like JUnit and Selenium automate dynamic tests. In safety-critical domains, formal verification is used to mathematically prove that software meets its specification, as required by standards like DO-178C for avionics and IEC 61508 for functional safety.

3

Standards and frameworks

Several standards define V&V processes and requirements. The IEEE 1012 standard provides a comprehensive framework for system, software, and hardware V&V, covering planning, execution, and documentation. ISO/IEC/IEEE 12207 establishes a common framework for software life cycle processes, including V&V activities. In the medical device industry, IEC 62304 mandates V&V for software as a medical device, while DO-178C is the primary guidance for airborne systems.1

These standards emphasize the importance of independence: V&V should be performed by individuals or teams separate from the development team to ensure objectivity. They also require traceability between requirements, design, code, and tests, enabling auditors to verify that all requirements are addressed and that tests cover the specified functionality.

4

Challenges and best practices

One of the main challenges in V&V is the cost and time involved, especially for large, complex systems. To mitigate this, organizations adopt risk-based testing, prioritizing V&V efforts on the most critical components. Another challenge is maintaining traceability as requirements evolve, which requires disciplined change management. Best practices include early and continuous V&V, integrating it into the development process rather than treating it as a final phase, and using automated tools to increase efficiency and coverage.

In agile environments, V&V is embedded in each sprint, with continuous integration and automated testing providing rapid feedback. However, formal verification may be impractical for large systems due to state-space explosion, so it is often reserved for critical components. Effective communication between developers, testers, and stakeholders is crucial to ensure that V&V activities align with user expectations and business goals.

5

Lesser-known aspects

Beyond the standard definitions, V&V has subtle nuances. For instance, the concept of "verification" in formal methods refers to proving that a program satisfies a specification, which is a mathematical activity distinct from the informal checks in software engineering. The term "validation" is also used in the context of data validation, but in software V&V it specifically concerns the final product's fitness for use.

Historically, the distinction was popularized by Barry Boehm in his 1979 paper, but earlier practitioners like W. Edwards Deming emphasized the importance of process quality. In safety-critical systems, V&V is often mandated by regulatory bodies, and failures can have catastrophic consequences, such as the Therac-25 radiation therapy machine incidents, which were partly attributed to inadequate software V&V. Additionally, V&V is not limited to code: it applies to hardware, systems, and even documentation, as highlighted by IEEE 1012's scope.

Glossary

Verification
The process of evaluating a system or component to determine whether the products of a given development phase satisfy the conditions imposed at the start of that phase.
Validation
The process of evaluating a system or component during or at the end of the development process to determine whether it satisfies specified requirements.
Static analysis
Analysis of software without executing it, often using automated tools to detect potential defects.
Dynamic testing
Testing that involves executing the software and observing its behavior.
Traceability
The ability to link requirements, design, code, and tests to ensure completeness and consistency.

This article focuses on software verification and validation, a discipline that ensures software quality and safety.