Software bug






To report a MediaWiki error on Wikipedia, see विकिपीडिया:Bug reports.

The software bug is a common term used to describe a fault, fault, fault, failure or a loss of a computer program or system that gives incorrect and unexpected results or its unexpected way. Causes to behave. Most bugs arise due to the mistakes made by people in the source code of any program or errors in their designs and some are caused due to the compiler making the wrong code. A program that contains large numbers of bugs and / or bugs that badly interferes with its functionality are called bugs. The report detailing a bug in a program is usually known by bug reports, fault reports, problem reports, trouble reports, change requests, and so on.

effect मुख्य लेख : List of software bugs

Bug, Type I and Type II errors, which in turn can create widespread type of wave effect, which can cause the user of the program to face various levels of inconvenience. Some bugs put a slight impact on the functionality of the program, and thus they do not know for a long time. Critical bugs can be programmed to crash or freeze, which can stop the service. Other bugs are considered as security bugs, for example, in order to obtain unauthorized privileges, a malicious user can be able to access access control.

The results of the bug can be extremely serious. In the 1980s, bugs present in code controlling Thirac-25 radiation therapy machines were directly responsible for the death of many patients. In 1996, the European Space Agency's $ 1 billion prototype Arian-5 rocket was destroyed in less than a minute after the launch of the on-board guidance computer program due to the presence of the bug. In June 1994, a Royal Air Force Chinook crashed in Mal's Kentire, in which 29 people were killed. Initially, it was dismissed as a pilot's mistake, but an investigation by Computer Weekly revealed enough evidence that managed to convince an inquiry of the House of Lords to control such a plane's engine. A software bug in the computer may have been caused by a bug.

In 2002, a study conducted by the U.S. Department of Commerce's National Institute of Standards and Technology concluded that software bugs or errors are so widespread and harmful that the US economy is estimated to have an annual value of $ 59 billion or a gross domestic Lose about 0.6 percent of the product. Etymology

The concept is that software can have errors. It was years ago in 1843 with the comments of Aida Byron on analytical engine in which he talks of difficulty in making programs for Charles Babbage's analytical engine.

To describe inexplicable defects, the word "bug" has been a part of engineering jargon for several decades and before the advent of computer and computer software; It was originally used originally to explain mechanical maladies in hardware engineering. For example, Thomas Edison wrote the following words in a letter to one of his colleagues in 1878:

During World War II, problems related to radar electronics were called bugs (and glitch) and there is additional evidence that it was being used long ago. In 1931, the first mechanical pinball game, Baff Ball, was advertised as "Bug-free." Possibly the picture of the actual bug found in a computer.

Grace Hooper is often told to search for the word "bug" who had promoted the cause of the malfunction in an initial electromechanical computer. A symbolic version of this story is given here by this quote:

In fact, Hooper was not the woman who had found the insect, just as he had accepted. The date given in the log book was 9 September 1947, although it was erroneously stated several times in 1945. William "Bill" Burke, who later joined the Naval Weepons Laboratory, Dalgren, Virginia, along with the operators who found it, were familiar and happy with the engineering term, they found the insect "real before the bug was found. Case "as it was. Hooper liked to remember this story. This log book has been kept in display in the Smithsonian National Museum of American History completely with pests.

While it is certain that the operators of the Harvard Mark II did not invent the word "bug", it is suggested that they composed the word debug about it. "Even its probability is not even Because of the meaning of the Oxford English Dictionary for "debug", an experiment of debugging in relation to the engine's engine in 1945. See: debugging. Rescue

Bug programming is a result of the nature of human aspects in the process. They arise from default or misunderstanding by a software team during specification, design, coding, data entry and documentation. For example: In order to create a relatively simple program to decorate a list of words in alphabetical order, one design can fail to explain what should be done in the case of a hyphen in a word. While converting imaginary design into the language of selected programming, a person can inadvertently create an off-by-one error and thus can fail to decorate the last word in the list. In the end, while typing in the resulting program into a computer, it was mistakenly replaced by a '& lt;' You can do that where a '& gt;' The result of which may possibly appear in the form of decorating words in opposite alphabetical order. Much more complex bugs can arise from spontaneous contact between different parts of a computer program. This is often because computer programs can be complicated - in some cases there may be hundreds of millions of lines - which can often be programmed by many people in a long time, so such programmers mentally Unable to detect every possible way, which parts can contact. Another category bug called Race Condition comes either at a time when a process is running simultaneously in more than one thread or in two or more processes and when the exact sequence of execution of important sequences of code is correct By the way it is not synchronized.

The software industry, while writing software, has made a lot of effort to find ways to save the programmers by inadvertently adding the bug. These include: Programming style Although incorrect typing in the program code is often caught by the complainants, the bug usually appears when the programmers make a logical error. Various new ways have been designed in programming style and defensive programming to reduce or easily detect the possibilities of these bugs. In some programming languages, so-called mis-typing, especially signaling or logical / mathematical operators, which actually represent logical errors, because incorrectly typed compositions are accepted by the compiler in a different way than that for which the programmer She had prepared it. Programming technology Bugs often create discrepancies in the internal data of an active program. Programs can be prepared that can check the inconsistencies of their own internal data in case of active. If any discrepancy is found then the program can be stopped immediately, so that the bug can be detected and removed. Alternatively, the program can directly inform the user to continue further to try to overcome anomaly. Methods of development There are several plans for managing programmer activity so that at least the bugs can be created. Many of these come under the subject of software engineering (which also focus on software design issues). For example, formal program specifications are used to tell the exact behavior of programs so that design bugs can be erased. Unfortunately, formal specification is impractical or impossible for any program other than the smallest programs, due to which there are configurable explosions and uncertainty problems. Programming language support Programming languages ​​often include features that help programmers to prevent bugs like non-recurring type systems, limited name spaces and modular programming, as well as other bugs. For example, when a programmer writes (SUDOKOD) in this way - LET REAL_VALUE PI = "THREE AND A BIT", although it may be correct according to the syntax, but it fails to check the code type. Depending on the language and implementation it can be caught by the compiler or at the time of execution. Apart from this, in many of the recently discovered languages, those features have been deliberately excluded from the need for code to slow down the requirement, which can easily cause a bug: the general principle is that Moore's Due to the rule, the computers get faster and engineers go slow; Therefore, it is almost always better to write simple, slow code than writing "mysterious" code, especially considering that the cost of maintenance is very high. For example, the language of Java programming does not support index arithmetic; In the implementation of languages ​​of some languages ​​such as Pascal and Scripting, at least debugging build often involves runtime bonds checking of arrays. Code analysis The tools of code analysis help the developers while examining the program tests beyond the capabilities of the compilers in finding potential problems. Although generally the problem of finding all programming errors of a given specification is not removable (see Holting Problem), these devices take advantage of the fact that human programmers make the same types of mistakes while writing software . Instrumentation Devices that monitor the functionality of the software in an active position can be explicitly embedded in the code to find problems like bottleneck or assure to work properly (possibly printed in PRINT " I AM HERE "as a simple statement) or can be provided in the form of devices. It is often surprising to find out where most of the time a code is taken, and needing to rewrite the code to remove these estimates. Debugging General History of the Bug (GNU Classpath Project Data) A new bug was presented by the user, whose name is unconfirmed. Once it was reconstructed by a developer, it is confirmed as a real bug. Bugs confirmed are corrected later. Bugs related to other categories (which can not be repaired, can not be cured, etc.) are greatly reduced मुख्य लेख : Debugging

Detecting bugs and removing it or "debugging" is often an important part of computer programming. Maurice Wilkes, an early computer expert, had mentioned in one of his experiences in the 1940s that the majority of his life will pass into finding out the mistakes of his own programs. As computer programs become more complex, bugs become more common and difficult to be removed. Often programmers spend more time in detecting and removing bugs than trying to write new code and make more effort. Software testers are such professional people whose main task is to find bugs or to write codes to support the test. In some projects, more resources can be spent on processing than comparing programs.

Usually the most difficult part of debugging is to find the bug in the source code. Once it is detected, it is usually relatively easy to fix it. Programs known as debugger are also present which help programmers to identify bugs by implementing a one-line tax code, monitoring variable values ​​and other features that understand the behavior of the program. To detect the implementation of the program without a debugger or to show the values, the code can be added in such a way that messages or values ​​are included in a console (for example C in the programming language of printf) or Can be written in a window or in a log file.

However, finding a bug with the help of a debugger is somewhat an art. It is not uncommon for a bug in a section of a program to cause failure in a completely second section, due to which it is detected in a clearly unrelated part of the system (for example, an error in a graphics rendering routine Due to failure of a file I / O routine) becomes particularly difficult.

Occasionally the bug is not a separate flaw, but it represents an error of thinking or planning on behalf of the programmer. For such logical errors, that portion of the program requires complete repairs or re-writing. As part of the code review, if it can be shown that there are some flawed logic in its implementation, these errors can often be detected without using a special type of code to generate such a bug again.

But more specifically, the first step in locating a bug is to reproduce it in a reliable way. Once the bug is reproduced, the programmer can use a debugger or any other device to monitor the implementation of the program in the faulty area and locate the location in which the program wanders for its purpose Has been.

Re-presenting the bug is often not easy. Some bugs are generated by the inputs of the program which can be difficult for the programmer to regenerate. One reason for the deaths caused by the Thirac-25 radiation machine was a bug (especially a race condition) which was generated only when the machine operator made the entry of a treatment plan much faster; Many days had to be practiced to be able to do this work, so the bug was not produced during the trial or when the manufacturer tried to duplicate it. Other bugs may have disappeared from running a program through a debugger; These are hygenbugs (funnyly named after the theory of Heisenberg's uncertainty).

Debugging is still a boring task that requires considerable effort. Since the 1990s, especially after the Ariane 5 Flight 501 accident, interest in renewing interest in developing effective automated collaboration has increased. For example, methods of variable code analysis through hypothetical interpretation have already made significant achievements, although still the rest of the work is in progress.

As with any creative work, sometimes a glow of inspiration also shows a solution, but it is rare and according to definition, this can not be trusted.

Classes are also organized for bugs that do not mean anything to the code itself. For example, if one is dependent on a faulty documentation or hardware, the code can be written in the right way exactly as the documentation says, but the bug actually stays in documentation or hardware, not in the code. However, changing the code instead of other parts of the system is common, because time and cost generally change in its replacement. In embedded systems, hardware bugs often have workarounds because preparing a new version of ROM is much cheaper than hardware reconstruction, especially if they are commodity items. Bug management

The release of software with such known bugs is a common practice which is considered to be non-critical, meaning that with the product most users do not affect the main experience. Because of the definition, any number of unknown bugs may exist in the software products, an estimate of the number of probable bugs can be obtained during the test; The longer the product is tested or developed becomes more reliable ("If we had 200 bugs last week, then this week we have 100 bugs). Most of the big software projects have a" known bug " There are two lists - the one about which the software team knows and the other is told about the users. This is not to hide the facts bulk Users do not care about the inner workings of the product. The second list is users not provide information about the bugs that are off course or in the current release and may also be offered a workaround.

There are several reasons why bugs are not removed:

Given the above, writing a completely bug-free software with no real complexity is often considered impossible. Thus, bugs are classified on the basis of their severity and low-intensity non-critical bugs are tolerated because they do not affect the proper operation of the system for most users. NASA's SATC had succeeded in reducing the number of errors by reducing the number of codes per 1000 lines (SLOC) to less than 0.1, but it was not considered possible for any real-world project.

The severity of a bug is not equal to the importance of fixing it, and both should be measured and managed separately. The blue screen of death on a Microsoft Windows system is relatively serious, but if it is only in extreme conditions, especially if it is well-cured and avoidable, compared to the fact that an icon does not accurately refine its function It can be less important to improve it, though it is fully related to beauty, but it is used every day thousands of users May be misleading. This balance depends on many factors; Expert users have different expectations from novices, a high quality market is different from a general consumer market and other similar markets. Some software developers use a formal bug triage process (for medical terminology) to achieve a better balance in which each new bug is given a priority based on its severity, frequency, risk and other pre-determined factors. .

Eric S. An ideology promoted by Raymond as Lineus Law states that there is more chance of having less or no bugs in popular open-source software compared to other software because "more attention is given, all bugs are lightweight". This claim has been termed disputed, however: Computer security expert Elias Levy has written that "it is easier to hide vulnerabilities in complex, less clear and undocumented source code" because "even if people review the code It does not mean that they are qualified to do so. " Like any other part of engineering management, bug management should be done carefully and wisely because "the measurement is done only" and purely by counting bugs, management can give unexpected results. For example, if developers are rewarded on the basis of the number of bugs rectified by them, then they are naturally - the most difficult and most risky and most important bugs, leaving the easiest bugs for the last possible moments ("I have only one bug in my list but it talks about" grow the sun from the west "). If the trend of management is half of the corrected bugs But to get rewarded, some developers know that they can fix these bugs later and can be rewarded for it, can quickly write careless code while careful, possibly "slow" Is never rewarded for those who were never present there. Security vulnerabilities

Malicious software may try to exploit known vulnerabilities in a system - which may or may not be a bug. Viruses are not bugs in their own right - they are usually programs that do precisely what they have been designed for. However, viruses are sometimes referred to in the popular press as such. Common types of computer bugs Arithmetic bug Logical bug (logic bug) Syntax bug Resource Bugs Multi-Threading Programming Bug Teamworking bug Bug in popular culture Also see them Comments Further reading External episodes

wiki




Comments

Popular posts from this blog

Asiatic Lion

S. D. Burman

The first ten sector