Software bug

From Citizendium
Revision as of 15:26, 10 May 2007 by imported>Robert W King (Summary of folklore.)
Jump to navigation Jump to search

A software bug is an error in a computer program. The term comes from hardware engineering, where a design flaw in a circuit or other product was called a "bug".

Etymology

The popular notion of a "bug" in a system is derived from Grace Murray Hopper's account of removing a moth that caused a system failure to occur in Harvard's Mark I computer in the 1940s.[1]. While the actual moth that caused the problem is exhibited at the Naval Museum in Dahlgren, VA, Shapiro notes that the Oxford English Dictionary notes the appearance of the word bug as eary as 1889.

In that year, the Pall Mall Gazette (March 11) reported that "Mr. Edison...had been up the two previous nights discovering a 'bug' in his phonograph--an expression for solving a difficulty, and implying that some imaginary insect has secreted itself inside and is causing all the trouble."

On November 18, 1878, Edison wrote to Theodore Puskas, "It has been just so in all my inventions. The first step is an intuition--and comes with a burst, then difficulties arise. This thing gives out and then that--"Bugs"--as such little faults and difficulties are called--show themselves and mo nths of anxious watching, study and labor are requisite before commercial success--or failure--is certainly reached" (Matthew Josephson, Edison: A Biography, John Wiley & Sons, 1992, page 198).

Effects of Bugs

When undetected, software bugs can wreak havoc or just be mildly annoying. The most common bugs deal with memory allocation or pointer arithmetic. The program will place or look for information in the wrong location. This is the hardest type of error to detect, and is common in C and C++ programs. Java is not susceptible to this type of error, as all memory operations are handled and checked by the virtual machine.

The typical annoying software bug causes a program to "hang" (stop working or responding) or causes the entire computer to "freeze". Recent versions of Windows have become able to detect unresponsive programs and allow the user to terminate them; previous versions required the user to reboot the system, which usually involved a loss of unsaved work.

Some of the worst software errors include a faulty conversion of linear measurement which caused a Mars probe to crash into the planet (kilometers were confused with miles), and the Ariadne rocket which self-destructed because a test routine meant to run only when the rocket was stationary was permitted to run while the rocket was in flight.

Programmers are divided on whether design flaws should be classed with coding errors as "bugs", but customers consider them to be software defects. One such flaw permitted an airline pilot to pick the wrong airport code from a menu, whereupon the plane flew itself into the side of mountain. The flaw was in the total logic of the system, which should have alerted the pilot to his unwise choice or simply rejected it.

See also

  1. Shapiro, Fred. (April 1994). The First Bug. Byte Magazine. Retrieved on 2007-05-10.