Industry-accepted definitions exist for software errors and defects (faults), found in the ANSI/IEEE,
Glossary of Software Engineering Terminology, are
listed in Table A1.
Table A1 - IEEE Software Engineering Terminology [#!ieee!#]
|Error||The difference between a computed, observed, or measured value or condition and the true, specified, or theoretically correct value or condition.|
|Fault||An incorrect step, process, or data definition in a computer program.|
|Debug||To detect, locate, and correct faults in a computer program.|
|Failure||The inability of a system or component to perform its required functions within specified performance requirements. It is manifested as a fault.|
|Testing||The process of analyzing a software item to detect the differences between existing and required conditions (that is, bugs) and to evaluate the features of the software items.|
|Static analysis||The process of evaluating a system or component based on its form, structure, content, or documentation.|
|Dynamic analysis||The process of evaluating a system or component based on its behavior during execution.|
|Correctness|| The degree to which a system or component is free from faults in its
specification, design, and implementation.
The degree to which software, documentation, or other items meet specified requirements.
The degree to which software, documentation, or other items meet user needs and expectations, whether specified or not.
|Verification|| The process of evaluating a system or component to determine whether the
products of a given development phase satisfy the conditions imposed at
the start of that phase.
Formal proof of program correctness.
|Validation||The process of evaluating a system or component during or at the end of the development process to determine whether it satisfies specified requirements.|