Bugs vs Faults
When the car doesn’t start because of a dead battery, figuring out the problem uses debugging skills … but it is not technically debugging, but rather “fault identification”
- When the error is a failing component of a correct design, it is a fault … when the battery is fixed the car runs
- When the error is a failure of the design, it is a bug
With complex IT the chances are overwhelming that the error is a bug, since you’ve likely made a reasoning error
In “mature” systems it could be either one since the error could be a fault or a latent logical error
It is impossible to say that a program is perfectly correct