Bug (engineering)

Last updated

In engineering, a bug is a design defect in an engineered system that causes an undesired result.

Contents

Although used exclusively to describe a technical issue, bug is a non-technical term; applicable without technical understanding of the system.

The term bug applies exclusively to a system that is (human) designed; not to a natural system; and that the issue is within the influence of human control. For example, humans have faults but not bugs, and a server crash due to natural disaster is not a bug.

In addition to or instead of defect, some use: error, flaw or fault.

Engineered systems is a broad classification encompassing but not limited to: software, computer hardware, electronics, circuitry and machinery.

The undesirable result can be classified and described many ways including: intermittent, transient, glitch, crash or hang.

Since desirability is subjective, what is considered undesirable to one my be considered desirable to another; even a useful feature.

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 a defect has been engineering jargon since at least as far back as the 1870s long before electronic computers and computer software. 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]

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

Computer pioneer and rear admiral, Grace Hopper, popularized a story about a moth that caused a problem in an early electromechanical computer. [7] While Hopper was working on the Mark II and Mark III as Harvard faculty in about 1946, operators traced an error in the Mark II to a moth trapped in a relay. The moth was removed from the mechanism and taped in a log book with the note "First actual case of bug being found." [8] Reportedly, the operators, including William "Bill" Burke, later of the Naval Weapons Laboratory, Dahlgren, Virginia, [9] were familiar with the engineering term and probably making a joke by conflating the two meanings of bug (biological and defect). Although probably a joke, the story indicates that the term was commonly used in the computer field at that time. [10] [11] [12] [13] The log book, complete with moth, is part of the collection of the Smithsonian National Museum of American History. [12]

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"

Since bug implies undesirable behavior, calling a behavior a bug is subjective, so what some consider a bug, is not by others. In fact, the behavior might be considered a useful feature, hence a common phrase is "It's not a bug, it's a feature" (INABIAF). [15] This quip is recorded in The Jargon File dating to 1975 but dates to 1971 when PDP-8 programmer Sandra Lee Harris at Digital Equipment Corporation (DEC) made the distinction between issues to be fixed in the code for DEC's FOCAL interpreter and those to be documented or clarified in the user manual. [16]

Such behavior might be explicitly communicated to users or not as an undocumented feature.

Related Research Articles

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. She was a pioneer of computer programming. Hopper was the first to devise the theory of machine-independent programming languages, and used this theory to develop the FLOW-MATIC programming language and COBOL, an early high-level programming language still in use today. She was also one of the first programmers on the Harvard Mark I computer. She is credited with writing the first computer manual, “A Manual of Operation for the Automatic Sequence Controlled Calculator.”

<span class="mw-page-title-main">DECSYSTEM-20</span> Type of mainframe computer

The DECSYSTEM-20 was a family of 36-bit Digital Equipment Corporation PDP-10 mainframe computers running the TOPS-20 operating system and was introduced in 1977.

In computing, a segmentation fault or access violation is a fault, or failure condition, raised by hardware with memory protection, notifying an operating system (OS) the software has attempted to access a restricted area of memory. On standard x86 computers, this is a form of general protection fault. The operating system kernel will, in response, usually perform some corrective action, generally passing the fault on to the offending process by sending the process a signal. Processes can in some cases install a custom signal handler, allowing them to recover on their own, but otherwise the OS default signal handler is used, generally causing abnormal termination of the process, and sometimes a core dump.

TECO, short for Text Editor & Corrector, is both a character-oriented text editor and a programming language, that was developed in 1962 for use on Digital Equipment Corporation computers, and has since become available on PCs and Unix. Dan Murphy developed TECO while a student at the Massachusetts Institute of Technology (MIT).

A software bug is a bug in computer software.

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.

RT-11 is a discontinued small, low-end, single-user real-time operating system for the full line of Digital Equipment Corporation PDP-11 16-bit computers. RT-11 was first implemented in 1970. It was widely used for real-time computing systems, process control, and data acquisition across all PDP-11s. It was also used for low-cost general-use computing.

OS/8 is the primary operating system used on the Digital Equipment Corporation's PDP-8 minicomputer.

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">Dynamic debugging technique</span> Series of debugger programs

Dynamic Debugging Technique (DDT) is a series of debugger programs originally developed for Digital Equipment Corporation (DEC) hardware, initially known as DEC Debugging Tape because it was distributed on paper tape. The name is a pun on the insecticide DDT. The first version of DDT was developed at MIT for the PDP-1 computer in 1961, but newer versions on newer platforms continued to use the same name. After being ported to other vendor's platforms and changing media, the name was changed to the less DEC-centric version. Early versions of Digital Research's CP/M and CP/M-86 kept the DEC name DDT for their debugger, however, now meaning Dynamic Debugging Tool. The CP/M DDT was later superseded by the Symbolic Instruction Debugger in DR DOS and GEM.

In systems engineering, dependability is a measure of a system's availability, reliability, maintainability, and in some cases, other characteristics such as durability, safety and security. In real-time computing, dependability is the ability to provide services that can be trusted within a time-period. The service guarantees must hold even when the system is subject to attacks or natural failures.

<span class="mw-page-title-main">DECtape</span>

DECtape, originally called Microtape, is a magnetic tape data storage medium used with many Digital Equipment Corporation computers, including the PDP-6, PDP-8, LINC-8, PDP-9, PDP-10, PDP-11, PDP-12, and the PDP-15. On DEC's 32-bit systems, VAX/VMS support for it was implemented but did not become an official part of the product lineup.

FOCAL is an interactive interpreted programming language based on JOSS and mostly used on Digital Equipment Corporation (DEC) Programmed Data Processor (PDP) series machines.

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

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.

<span class="mw-page-title-main">Front panel</span>

A front panel was used on early electronic computers to display and allow the alteration of the state of the machine's internal registers and memory. The front panel usually consisted of arrays of indicator lamps, digit and symbol displays, toggle switches, dials, and push buttons mounted on a sheet metal face plate. In early machines, CRTs might also be present. Prior to the development of CRT system consoles, many computers such as the IBM 1620 had console typewriters.

A hardware bug is a bug in computer hardware.

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

In engineering, debugging is the process of finding the root cause of and workarounds and possible fixes for bugs.

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. IEEE Annals of the History of Computing, Vol 22 Issue 1, 2000
  10. James S. Huggins. "First Computer Bug". Jamesshuggins.com. Archived from the original on August 16, 2000. Retrieved September 24, 2012.
  11. "Bug Archived March 23, 2017, at the Wayback Machine ", The Jargon File, ver. 4.4.7. Retrieved June 3, 2010.
  12. 1 2 "Log Book With Computer Bug Archived March 23, 2017, at the Wayback Machine ", National Museum of American History, Smithsonian Institution.
  13. "The First "Computer Bug", Naval Historical Center. But note the Harvard Mark II computer was not complete until the summer of 1947.
  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.
  16. FOCAL Programming Manual for PDP-8, PDP-8/S, PDP-8/I, LAB-8, LINC-8 (PDF). Digital Equipment Corporation. 1968. DEC-08-AJAB-D.