Software verification
Encyclopedia
Software verification is a broader and more complex discipline of software engineering
whose goal is to assure that software fully satisfies all the expected requirements.
There are two fundamental approaches to verification:
phase.
Verification is a Review Process.
Depending on the scope of tests, we can categorize them in three families:
Software verification is often confused with software validation. The difference between verification and validation
:
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.
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.
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 AnalysisStatic code analysisStatic 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 TestSoftware 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 testUnit testIn 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 testStress testStress 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-patternAnti-patternIn 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 metricSoftware metricA 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 verificationFormal verificationIn 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.