Bugs vs Faults
v 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”
o When the error is a failing component of a correct design, it
is a fault … when the battery is fixed the car runs
o When the error is a failure of the design, it is a bug
v While programming the chances are overwhelming
that the error is a bug, since you’ve likely made a
reasoning error
v In “mature” systems it could be either one, since the
error could be a fault or a latent logical error