A software bug is an error, defect, error, omission or error in a computer program that prevents it from behaving as intended (for example, produce an unexpected result or incorrect). Most bugs, errors arise and mistakes made by people in a program, either source code or its design, and a few are caused by compilers producing incorrect code. A program that contains a large number of bu 20gs and / or bugs that might seriously impair its functionality, is said to be buggy. Detailed reports on the bugs in a program commonly known as bug reports, fault reports, problem reports, trouble reports, change requests, and so forth.

These software failures can cost lives, waste money and time, frustrate customers, disrupt businesses for minutes, hours or days, cause entire businesses to fail, deprive people of their livelihoods or simply provoke them into a technophobic rage. Modern life depends on application and application fails – often enough to make it an obvious problem.

Bugs that cause software to fail are inherent in the nature of software construction. The most intuitive explanation is that application is created by people, and people make mistakes. Although computer systems sometimes – rarely – fail because of hardware faults, software should be written to avoid catastrophe when hardware breaks down. Therefore, human fallibility is the root cause of computer failures.

Individual programmers make a variety of mistakes ranging from misunderstanding requirements and specifications to punctuation errors in a computer programming language. Even if a developer has a perfect understanding of the requirements and a complete mastery of the programming language, the complexity of a program’s logic and data soon exceeds an individual’26s short-term memory capacity (around seven items at any moment) and mistakes are made.

Beyond the individual programmer, software development processes– Even the best ones – admit further errors. These can include incorrect capture of the user’s requirements, inaccuracies in translating requirements to specifications, wrong definitions of interfaces to surrounding software and the underlying infrastructure, uncontrolled change of specification and requirements, and mismanaged configuration of components.

Combine the inevitability of a programmer introducing faults with the imperfect processes used in software engineering – if it can be called that – and it becomes certain that a new software system will contain bugs that will one day cause it to fail.

FREE eBook Gift for Signing Up
Get Your FREE eBook

Subscribe to Robert's mailing list and get a FREE eBook offer.