Bug (engineering)

Last updated

In engineering, a bug is a defect in the design, manufacture or operation of machinery, circuitry, electronics, hardware, or software that produces undesired results or impedes operation. It is contrasted with a glitch which may only be transient. Sometimes what might be seen as unintended or defective operation can be seen as a feature.

Contents

History

The Middle English word bugge is the basis for the terms "bugbear" and "bugaboo" as terms used for a monster. [1]

The term "bug" to describe defects has been a part of engineering jargon since the 1870s and predates electronic computers and computer software; it may have originally been used in hardware engineering to describe mechanical malfunctions. For instance, Thomas Edison wrote the following words in a letter to an associate in 1878:

It has been just so in all of my inventions. The first step is an intuition, and comes with a burst, then difficulties arise—this thing gives out and [it is] then that "Bugs"—as such little faults and difficulties are called—show themselves and months of intense watching, study and labor are requisite before commercial success or failure is certainly reached. [2]

This shows that using the word bugs was already widespread by 1870s.

In a comic strip printed in a 1924 telephone industry journal, a naive character hears that a man has a job as a "bug hunter" and gives a gift of a backscratcher. The man replies "don't you know that a 'bug hunter' is just a nickname for a repairman?" [3]

Baffle Ball, the first mechanical pinball game, was advertised as being "free of bugs" in 1931. [4] Problems with military gear during World War II were referred to as bugs (or glitches). [5] In the 1940 film, Flight Command , a defect in a piece of direction-finding gear is called a "bug".[ citation needed ] In a book published in 1942, Louise Dickinson Rich, speaking of a powered ice cutting machine, said, "Ice sawing was suspended until the creator could be brought in to take the bugs out of his darling." [6]

Isaac Asimov used the term "bug" to relate to issues with a robot in his short story "Catch That Rabbit", published in 1944.

A page from the Harvard Mark II electromechanical computer's log, featuring a dead moth that was removed from the device. First Computer Bug, 1945.jpg
A page from the Harvard Mark II electromechanical computer's log, featuring a dead moth that was removed from the device.

The term "bug" was used in an account by computer pioneer Grace Hopper, who publicized the cause of a malfunction in an early electromechanical computer. [7] A typical version of the story is:

In 1946, when Hopper was released from active duty, she joined the Harvard Faculty at the Computation Laboratory where she continued her work on the Mark II and Mark III. Operators traced an error in the Mark II to a moth trapped in a relay, coining the term bug. This bug was carefully removed and taped to the log book. Stemming from the first bug, today we call errors or glitches in a program a bug. [8]

Hopper did not find the bug, as she readily acknowledged. The date in the log book was September 9, 1947. [9] [10] [11] The operators who found it, including William "Bill" Burke, later of the Naval Weapons Laboratory, Dahlgren, Virginia, [12] were familiar with the engineering term and amusedly kept the insect with the notation "First actual case of bug being found." Hopper loved to recount the story. [13] This log book, complete with attached moth, is part of the collection of the Smithsonian National Museum of American History. [10]

The related term "debug" also appears to predate its usage in computing: the Oxford English Dictionary 's etymology of the word contains an attestation from 1945, in the context of aircraft engines. [14]

"It's not a bug, it's a feature"

Some user bugs work as the designer intended, reflecting a mismatch between the specifications and user expectations. Sometimes the behavior in question is written in user documentation or is billed as an undocumented feature, which is captured by the catchphrase "It's not a bug, it's a feature" (INABIAF). [15] This quip is recorded in The Jargon File dating to 1975 and may predate that. This reflects the programmer's humor to some extent.

Types

See also

Related Research Articles

<span class="mw-page-title-main">Software</span> Non-tangible executable component of a computer

Software is a collection of programs and data that tell a computer how to perform specific tasks. Software often includes associated software documentation. This is in contrast to hardware, from which the system is built and which actually performs the work.

Computer programming or coding is the composition of sequences of instructions, called programs, that computers can follow to perform tasks. It involves designing and implementing algorithms, step-by-step specifications of procedures, by writing code in one or more programming languages. Programmers typically use high-level programming languages that are more easily intelligible to humans than machine code, which is directly executed by the central processing unit. Proficient programming usually requires expertise in several different subjects, including knowledge of the application domain, details of programming languages and generic code libraries, specialized algorithms, and formal logic.

<span class="mw-page-title-main">Grace Hopper</span> American computer scientist, mathematician, and US Navy admiral (1906–1992)

Grace Brewster Hopper was an American computer scientist, mathematician, and United States Navy rear admiral. One of the first programmers of the Harvard Mark I computer, she was a pioneer of computer programming. Hopper was the first to devise the theory of machine-independent programming languages, and the FLOW-MATIC programming language she created using this theory was later extended by others to create COBOL, an early high-level programming language still in use today.

A software bug is an error, flaw or fault in the design, development, or operation of computer software that causes it to produce an incorrect or unexpected result, or to behave in unintended ways. The process of finding and correcting bugs is termed "debugging" and often uses formal techniques or tools to pinpoint bugs. Since the 1950s, some computer systems have been designed to detect or auto-correct various software errors during operations.

An undocumented feature is an unintended or undocumented hardware operation, for example an undocumented instruction, or software feature found in computer hardware and software that is considered beneficial or useful. Sometimes the documentation is omitted through oversight, but undocumented features are sometimes not intended for use by end users, but left available for use by the vendor for software support and development. Also, some unintended operation of hardware or software that ends up being of utility to users is simply a bug, flaw or quirk.

<span class="mw-page-title-main">Embedded system</span> Computer system with a dedicated function

An embedded system is a computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electronic system. It is embedded as part of a complete device often including electrical or electronic hardware and mechanical parts. Because an embedded system typically controls physical operations of the machine that it is embedded within, it often has real-time computing constraints. Embedded systems control many devices in common use. In 2009, it was estimated that ninety-eight percent of all microprocessors manufactured were used in embedded systems.

<span class="mw-page-title-main">Debugger</span> Computer program used to test and debug other programs

A debugger or debugging tool is a computer program used to test and debug other programs. The main use of a debugger is to run the target program under controlled conditions that permit the programmer to track its execution and monitor changes in computer resources that may indicate malfunctioning code. Typical debugging facilities include the ability to run or halt the target program at specific points, display the contents of memory, CPU registers or storage devices, and modify memory or register contents in order to enter selected test data that might be a cause of faulty program execution.

<span class="mw-page-title-main">Crash (computing)</span> When a computer program stops functioning properly and self-terminates

In computing, a crash, or system crash, occurs when a computer program such as a software application or an operating system stops functioning properly and exits. On some operating systems or individual applications, a crash reporting service will report the crash and any details relating to it, usually to the developer(s) of the application. If the program is a critical part of the operating system, the entire system may crash or hang, often resulting in a kernel panic or fatal system error.

Incompatible Timesharing System (ITS) is a time-sharing operating system developed principally by the MIT Artificial Intelligence Laboratory, with help from Project MAC. The name is the jocular complement of the MIT Compatible Time-Sharing System (CTSS).

<span class="mw-page-title-main">Glitch</span> Short-lived fault in a computer system

A glitch is a short-lived fault in a system, such as a transient fault that corrects itself, making it difficult to troubleshoot. The term is particularly common in the computing and electronics industries, in circuit bending, as well as among players of video games. More generally, all types of systems including human organizations and nature experience glitches.

<span class="mw-page-title-main">Out-of-box experience</span> Experience an end-user has when taking a product after unboxing

An out-of-box experience is the experience an end-user has when taking a product after unboxing, or for digital distribution, runs the installer, and is preparing to first use it, as opposed to the point-of-sale experience or the interaction experience of an expert user. In computing, this includes the initial configuration of a piece of hardware or software on a computer. The out-of-box experience is typically the first impression a product creates, such as the ease with which a buyer can begin using the product. For hardware products, a positive OOBE can be created with logical easy-to-follow instructions and good quality of manufacturing.

<span class="mw-page-title-main">Integer overflow</span> Computer arithmetic error

In computer programming, an integer overflow occurs when an arithmetic operation attempts to create a numeric value that is outside of the range that can be represented with a given number of digits – either higher than the maximum or lower than the minimum representable value.

The Harvard Mark II, also known as the Aiken Relay Calculator, was an electromechanical computer built under the direction of Howard Aiken at Harvard University, completed in 1947. It was financed by the United States Navy and used for ballistic calculations at Naval Proving Ground Dahlgren. Computer pioneers Edmund Berkeley and Grace Hopper worked together under Aiken to build and program the Mark II

A user error is an error made by the human user of a complex system, usually a computer system, in interacting with it. Although the term is sometimes used by human–computer interaction practitioners, the more formal human error term is used in the context of human reliability.

Game testing, also called quality assurance (QA) testing within the video game industry, is a software testing process for quality control of video games. The primary function of game testing is the discovery and documentation of software defects. Interactive entertainment software testing is a highly technical field requiring computing expertise, analytic competence, critical evaluation skills, and endurance. In recent years the field of game testing has come under fire for being extremely strenuous and unrewarding, both financially and emotionally.

In computer programming jargon, a heisenbug is a software bug that seems to disappear or alter its behavior when one attempts to study it. The term is a pun on the name of Werner Heisenberg, the physicist who first asserted the observer effect of quantum mechanics, which states that the act of observing a system inevitably alters its state. In electronics, the traditional term is probe effect, where attaching a test probe to a device changes its behavior.

A hardware bug is a defect in the design, manufacture, or operation of computer hardware that causes incorrect operation. It is the counterpart of software bugs which refer to flaws in the code which operates computers, and is the original context in which "bug" was used to refer to such flaws. Intermediate between hardware and software are microcode and firmware which may also have such defects. In common usage, a bug is subtly different from a "glitch" which may be more transient than fundamental, and somewhat different from a "quirk" which may be considered useful or intrinsic. Errata may be published by the manufacturer to reflect such unintended operation, and "errata" is sometimes used as a term for the flaws themselves.

A metaphorical extension is the "extension of meaning in a new direction" through the popular adoption of an original metaphorical comparison.

In computer programming and software development, debugging is the process of finding and resolving bugs within computer programs, software, or systems.

<span class="mw-page-title-main">History of software</span>

Software is a set of programmed instructions stored in the memory of stored-program digital computers for execution by the processor. Software is a recent development in human history and is fundamental to the Information Age.

References

  1. Computerworld staff (September 3, 2011). "Moth in the machine: Debugging the origins of 'bug'". Computerworld. Archived from the original on August 25, 2015.
  2. Edison to Puskas, 13 November 1878, Edison papers, Edison National Laboratory, U.S. National Park Service, West Orange, N.J., cited in Hughes, Thomas Parke (1989). American Genesis: A Century of Invention and Technological Enthusiasm, 1870-1970. Penguin Books. p. 75. ISBN   978-0-14-009741-2.
  3. Cy Meyn, Hattie the Hello Girl, The Mountain States Monitor Vol. XIX, No. 1 (Jan, 1924), Mountain States Telephone and Telegraph Co.; page 34, bottom.
  4. "Baffle Ball". Internet Pinball Database. (See image of advertisement in reference entry)
  5. "Modern Aircraft Carriers are Result of 20 Years of Smart Experimentation". Life. June 29, 1942. p. 25. Archived from the original on June 4, 2013. Retrieved November 17, 2011.
  6. Dickinson Rich, Louise (1942), We Took to the Woods, JB Lippincott Co, p. 93, LCCN   42024308, OCLC   405243, archived from the original on March 16, 2017.
  7. FCAT NRT Test, Harcourt, March 18, 2008
  8. "Danis, Sharron Ann: "Rear Admiral Grace Murray Hopper"". ei.cs.vt.edu. February 16, 1997. Retrieved January 31, 2010.
  9. "Bug Archived March 23, 2017, at the Wayback Machine ", The Jargon File, ver. 4.4.7. Retrieved June 3, 2010.
  10. 1 2 "Log Book With Computer Bug Archived March 23, 2017, at the Wayback Machine ", National Museum of American History, Smithsonian Institution.
  11. "The First "Computer Bug", Naval Historical Center. But note the Harvard Mark II computer was not complete until the summer of 1947.
  12. IEEE Annals of the History of Computing, Vol 22 Issue 1, 2000
  13. James S. Huggins. "First Computer Bug". Jamesshuggins.com. Archived from the original on August 16, 2000. Retrieved September 24, 2012.
  14. Journal of the Royal Aeronautical Society. 49, 183/2, 1945 "It ranged ... through the stage of type test and flight test and 'debugging' ..."
  15. Nicholas Carr. "'IT'S NOT A BUG, IT'S A FEATURE.' TRITE—OR JUST RIGHT?". Wired.