Verifying and validating software requirements and design specifications
Verification includes all the activities associated with the producing high quality software: testing, inspection, design analysis, specification analysis, and so on.It is a relatively objective process, in that if the various products and documents are expressed precisely enough, no subjective judgements should be needed in order to verify software.(from Software Verification and Validation: Its Role in Computer Assurance and Its Relationship with Software Project Management Standards, by Dolores R. Fujii, NIST Special Publication 500-165) Having thus carefully distinguished the two terms, my advice to V&V practitioners was then to forget about the distinction, and think instead about V&V as a toolbox, which provides a wide range of tools for asking different kinds of questions about software.
An appropriate toolbox for climate modeling looks a little different from my picture above, because some of these tools are more appropriate for real-time control systems, applications software, etc, and there are some missing from the above picture that are particular for simulation software.
It assumes that the customer’s requirements can be captured completely at the start of a project, and that those requirements will not change while the software is being developed.
In practice, the requirements change throughout a project, partly in reaction to the project itself: the development of new software makes new things possible.
The terms ‘Verification‘ and ‘Validation‘ are frequently used in the software testing world but the meaning of these terms are mostly vague and debatable.
You will encounter (or have encountered) all kinds of usage and interpretations of those terms, and it is our humble attempt here to distinguish between them as clearly as possible.
Toward this end, this work presents a taxonomy of requirements defects and the causes of their occurrences.