Verification and Validation of Scientific Software

On his blog, Jon Pipitone recently commented on the validity and soundness of scientific software. Jon found it curious that the terms verification and validation are not in more common use. Jon also mentions that there does not seem to be a standard term or adjective that is applied to software that been verified or validated.

I commented that:
In the nuclear safety software area you will often encounter the term "qualified software." The adjective refers to software that has been subjected to a defined level of verification and validation appropriate to the software's level of usage. This is called "qualification" of the software. Qualification is a part of overall software risk management and helps to ensure the "quality" (e.g., "soundness", "validity", "reliability", "security", etc.) of the software.

I would like to expand on my comment here. The scope and emphasis of software risk management processes (of which software verification and validation are subprocesses) depend on the nature and use of the software. What may be adequate for one type of software may not be adequate for another. However, much scientific software as well as much engineering design and analysis software are similar in nature and use. They model some physical process, system, structure, or component about which information is needed. Thus, a uniform software verification and validation approach may be appropriate.

The goal of software verification and validation is to ensure the quality of the software. For scientific and engineering programs this often means ensuring the accuracy and precision of the output.

The above figure is from the Wikipedia article on accuracy and precision. Although all models of nature or engineered systems are simplified abstractions, they must be relevant. That is, the abstractions must be inherently able to provide adequate accuracy and precision for the intended use. The process that ensures this required applicability is validation.

Additionally, the software code must faithfully embody these simplified abstractions. That is, the code must be adequately bug free. The process that ensures this required reliability is verification.

1 comment:

  1. In the DoD we use the term 'Accreditation' to refer to the official process of certifying that a code is verified and validated for a specific purpose. So you'd have an "accredited code".

    The jargon is VV&A for 'Verification, Validation and Accreditation'.