Software bug: Difference between revisions

Content deleted Content added
No edit summary
CYD (talk | contribs)
* cleanup
Line 1:
A '''computer bug''' is aan error in a [[computer program]] that prevents it from doing what it was intended to do. The term derives from hardware engineering, wherein designwhich hardware errors are calledalso referred to as bugs.
 
Typically, bugs arise from mistakes in the [[source code]] of a computer program. However, they can also arise from either faulty software design. Almost all computer programs contain bugs of some kind.
Some writers call software design errors bugs, while others restrict the term to a flawed implementation of the program's design.
 
Bugs have widely varying effects on computer programs. Some bugs do not prevent the program from working, and may therefore lie undetected for a long time. Other bugs may cause the program to [[crash]] or [[freeze (computing)|freeze]]. In some [[operating system|operating systems]], such as [[Microsoft Windows]], crashing or freezing programs may render the computer unusable until it is [[boot (computing)|rebooted]]; see [[Blue Screen of Death]].
Either way, such errors are very common, and the effects are familiar to most computer users (see [[GPF]], [[crash]], [[freeze (computing)]]).
 
SoftwareThe cost of bugs canmay be very expensiveconsiderable. [[Steve McConnell]] recounts several bugs that cost over $100 million. The most spectacular case was Europe's [[[Ariane 5]] rocket, that self-destructed due to a computer bugwhich cost over $1 billion. It was destroyed shortly after launch, because of a bug in the on-board guidance computer.
 
It became obvious veryclear early on in the history of digital computers that bug-finding and fixing bugs would be a major componentpart of programmercomputer activityprogramming. [[Maurice Wilkes]], an early computing pioneer, describeddescribes his realisationrealization in the late 1940's[[1940s]] that much of the rest of his life would be spent finding mistakes in his own programs. He was proven correct,; as the complexity of computer programs grew bugsmore grewcomplex, everbugs become more common and difficult to fix. Often, [[computer programmer|computer programmers]] spend more time and effort finding and fixing bugs than writing new code.
Due to their commonality and the potentially severe consequences of such bugs, much of the time and effort of programmers is spent reviewing and testing code before it goes into production use, and finding and fixing bugs located by such reviews and tests. This effort can often greater than that expended actually writing the program in the first place.
 
The proliferation of bugs is a natural consequence of the nature of the programming task. Computer programs often are very complex systems, and it is impossible for programmers to mentally keep every detailtrack of oneevery in their headsdetail. One very common type of error occurs when the input to a section of a program violates the assumptions (be they explicit or implicit) of the implementer or designer of that section. Much effort has gone into design and programming techniques to reduce the frequency of this error type.
It became obvious very early on in the history of digital computers that bug-finding and fixing would be a major component of programmer activity. [[Maurice Wilkes]], an early pioneer, described his realisation in the late 1940's that much of the rest of his life would be spent finding mistakes in his own programs. He was proven correct, as the complexity of computer programs grew bugs grew ever more common and difficult to fix.
 
The proliferation of bugs is a natural consequence of the nature of the programming task. Computer programs are very complex systems, and it is impossible for programmers to keep every detail of one in their heads. One very common type of error occurs when the input to a section of a program violates the assumptions (be they explicit or implicit) of the implementer or designer of that section. Much effort has gone into design and programming techniques to reduce the frequency of this error type.
 
The academic discipline of [[software engineering]] has evolved as a response to the challenge of improving software quality, which in part means dealing with computer bugs and reducing their associated costs. (Software engineering also deals with more fundamental software <i>design</i> issues, which, as mentioned above, are not generally categorized as "bugs".) Modern computer languages, programming environments, common programming techniques and development methodologies include many of the lessons learned.