Learning Resources
 

Defects and failures

software Defects are caused by coding errors. One common source of expensive defects is caused by requirement gaps, e.g., unrecognized requirements, that result in errors of omission by the program designer.A common source of requirements gaps is non-functional requirements such as testability, scalability, maintainability, usability, performance, and security.

Software Faults occur through the following processes. A programmer makes an error (mistake), which results in a defect in the software source code. If this defect is executed, in certain situations the system will produce wrong results, causing a failure.Not all defects will necessarily result in failures. For example, defects in dead code will never result in failures. A defect can turn into a failure when the environment is changed. Examples of these changes in environment include the software being run on a new hardware platform, alterations in source data or interacting with different software. A single defect may result in a wide range of failure symptoms.

What is the difference between a bug, a defect, and an error?

According to the British norm BS 7925-1: bug--generic term for fault, failure, error, human action that produces an incorrect result.
Robert Vanderwall offers these formal definitions from IEEE 610.1. The sub-points are his own.

mistake (an error): A human action that produces an incorrect result.
- mistake made in translation or interpretation.
- lots of taxonomies exist to describe errors.


fault: An incorrect step, process or data definition.
- manifestation of the error in implementation
- this is really nebulous, hard to pin down the 'location'


failure: An incorrect result.
bug: An informal word describing any of the above. (Not IEEE)