Software verification

From Free net encyclopedia

Revision as of 13:11, 30 March 2006; view current revision
←Older revision | Newer revision→

Software verification is a broad and complex discipline of software engineering whose goal is to assure that a software fully satisfies all the expected requirements.

There are two fundamental approaches to verification:

Contents

Dynamic verification (Test, Experimentation)

Dynamic verification is performed during the execution of a software, and dynamically checks its behaviour; it is commonly known as Test phase. Depending on the scope of tests, we can categorize them in three families:

  • Test in the small: a test that check a single function or class (Unit test)
  • Test in the large: a test that check a group of classes, such as
    • Module test (a single module)
    • Integration test (more than one module)
    • System test (the entire system)
  • Acceptance test: a formal test defined to check acceptance criteria for a software
    • Functional test
    • Non functional test (performance, stress test)

Software verification is often confused with software validation. The difference between 'verification and validation:

  • Software verification asks the question, "Are we building the product right?"; that is, does the software conform to its specification.
  • Software validation asks the question, "Are we building the right product?"; that is, is the software doing what the user really requires.

Static verification (Analysis)

Static verification is a process to check some requirements of a software doing a physical inspection of it. For example:

References

See also