Hello 888,
Based on this question (and others you have recently posted), I am
going to answer based on development of a large system, typically for
a government contract.
Let's start with a definition of terms:
Verification - evaluating the products of a given software development
activity to determine correctness and consistency with respect to the
products and standards input to that activity. This is taken from
DOD-STD-2167A
http://jcs.mil/htdocs/teinfo/directives/soft/ds2167a.html
In other documents (such as defined by the IEEE), verification of code
means that the code meets the specified software design (and the
specified software requirements)
Validation - evaluating software to determine compliance with
specified requirements. This is also take from DOD-STD-2167A (same
source).
The IEEE has a more straight forward definition that looks at the
requirements for the intended use are fullfilled. Other sites consider
this an "end to end" test.
To summarize
- verification looks at "was it built right"
- validation looks at "was the right product built".
If you disagree with these definitions - I suggest a clarification
request so I can address the issue.
With that background, let's look at how those terms apply to a system
and the software that runs within it.
Note that the last sentence helps point the way to the answer. First,
the system is what must be validated. The software without the right
hardware, procedures, and people will fail to meet the intended use.
You can validate software, but only in the context of the complete
system. So the focus of validation of software is to support the
validation of the total system. The software may implement over 80% of
the functions used by the end user, but without the rest of the
system, it cannot be validated.
To contrast that with verification, verification is done between
products developed during the software life cycle. For example, you
can verify
- software requirements with system requirements
- software design with software requirements, system design, and
interface design
- code ("the software") with software design
- test cases with the requirements and designs listed above
and so on. In a narrow sense, "software verification" is the third
step listed. In the broad sense it covers all of the steps listed. To
contrast software with a system - the system is verified against the
system requirements (but not the software requirements).
To summarize:
- system validation is done related to the intended use of the system
- software validation is done in the context of the full system, not
alone
- system verification is done against system requirements and design
- software verification is done against a variety of requirements and
design elements; system, software, and interface
There are a number of good resources available with search phrases
such as
software validation definiton verification
Some of the more readable sites include:
http://www.critech.com/vv.htm
http://members.aol.com/ehwco/software_validation.htm
http://www.nps.navy.mil/wings/acq_topics/synopsis/archives/Winter%2001/IV%20&%20V%2097.ppt
http://www.estec.esa.nl/conferences/isd2001/10.pdf
http://ipt.web.cern.ch/IPT/Papers/Sopron94/CSCproceedings_19.html
but note that not all of these sites agree with the definitions I
provided above.
--Maniac |