Software verification
Encyclopedia
Software verification is a broader and more complex discipline of software engineering
Software engineering
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...

 whose goal is to assure that software fully satisfies all the expected requirements.

There are two fundamental approaches to verification:
  • Dynamic verification, also known as Test or Experimentation - This is good for finding bugs
  • Static verification, also known as Analysis
    Static code analysis
    Static program analysis is the analysis of computer software that is performed without actually executing programs built from that software In most cases the analysis is performed on some version of the source code and in the other cases some form of the object code...

     - This is useful for proving correctness of a program although it may result in false positives

Dynamic verification (Test, experimentation)

Dynamic verification is performed during the execution of software, and dynamically checks its behaviour; it is commonly known as the Test
Software testing
Software testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test. Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software...

 phase.
Verification is a Review Process.
Depending on the scope of tests, we can categorize them in three families:
  • Test in the small: a test that checks a single function or class (Unit test
    Unit test
    In computer programming, unit testing is a method by which individual units of source code are tested to determine if they are fit for use.A unit is the smallest testable part of an application. In procedural programming a unit could be an entire module but is more commonly an individual function...

    )
  • Test in the large: a test that checks 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
      Stress test
      Stress test may refer to:*Stress Test , an episode of Brandy and Mr Whiskers*Stress testing, a form of testing that is used to determine the stability of a given system or entity*Stress testing , determines the robustness of software...

      )


Software verification is often confused with software validation. The difference between verification and validation
Verification and Validation
In software project management, software testing, and software engineering, verification and validation is the process of checking that a software system meets specifications and that it fulfills its intended purpose...

:
  • 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.

The aim of software verification is to find the errors introduced by an activity, i.e. check if the product of the activity is as correct as it was at the beginning of the activity.

Static verification (Analysis)

Static verification is the process of checking that software meets requirements by doing a physical inspection of it. For example:
  • Code conventions verification
  • Bad practices (anti-pattern
    Anti-pattern
    In software engineering, an anti-pattern is a pattern that may be commonly used but is ineffective and/or counterproductive in practice.The term was coined in 1995 by Andrew Koenig,...

    ) detection
  • Software metric
    Software metric
    A software metric is a measure of some property of a piece of software or its specifications. Since quantitative measurements are essential in all sciences, there is a continuous effort by computer science practitioners and theoreticians to bring similar approaches to software development...

    s calculation
  • Formal verification
    Formal verification
    In the context of hardware and software systems, formal verification is the act of proving or disproving the correctness of intended algorithms underlying a system with respect to a certain formal specification or property, using formal methods of mathematics .- Usage :Formal verification can be...



Verification by Analysis - The analysis verification method applies to verification by investigation, mathematical calculations, logical evaluation, and calculations using classical textbook methods or accepted general use computer methods. Analysis includes sampling and correlating measured data and observed test results with calculated expected values to establish conformance with requirements.
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK