A Software bug is an errors in computer software. These are errors which are introduced accidentally while writing or altering code.
Levels of severity
There are levels of bugs:
- Crashes the operating system - you lose all your unsaved work in all programs
- Crashes the program - you lose your unsaved work in that program
- Feature stops working or works wrong
- Feature is hard to find ("Can't get there from here") - feature exists, but poorly documented, so you can't find it.
Other ways to classify bugs
- Some computer programmers distinguish between coding errors and design flaws, often using the half-joking justification, "That's not a bug. It's a feature!"
- Often the distinction between a coding error, a design flaw and a feature request is disregarded. Indeed, Sun Microsystems maintains a bug parade for their Java platform which lets everyone in the world vote for a bug fix or feature request.
The need for vigilance
- The general lesson that I take away from this bug is humility: It is hard to write even the smallest piece of code correctly, and our whole world runs on big, complex pieces of code. We programmers need all the help we can get, and we should never assume otherwise. Careful design is great. Testing is great. Formal methods are great. Code reviews are great. Static analysis is great. But none of these things alone are sufficient to eliminate bugs: They will always be with us. A bug can exist for half a century despite our best efforts to exterminate it. We must program carefully, defensively, and remain ever vigilant.