Why does software have bugs


- Errors of Requirements: Gap between “what an application should do” and “what it actually does”. Thanks to one or more of the many possible reasons – deficiency in the specifications or the communication or understanding.
- Errors of Design: Not a well-engineered application. Deficient / defective design.
- Programming / coding errors

- Software Complexity: A non-trivial application has an inherent complexity
- Errors are difficult to detect

- The domain of possible inputs is too large to test. There are too many possible paths through the program to test. Test design is not a simple affair. Minimal tests with maximum coverage is not an easier task.
- Insufficient time to test

- Deficiency in Documentation: Incomplete, incorrect, inadequate, vague, missing documentation – leading to differing interpretations and messing up of construction or maintenance. It is tough to maintain and modify code that is badly written or poorly documented and risky too. Lack of resources, time pressures and bad practices may mean poor documentation
- Changing Requirements: The customer may not understand the effect of changes. Improperly controlled changes may play havoc with the application
- Time Pressures: Software time estimates are after all just that estimates which involves a lot of guess work and assumptions. When deadlines loom and the crunch comes, mistakes will be made
- Software helps automate. But, software to automate software construction does not exist – there are tools to only partially assist
- Software construction is predominantly a manual process. Software is written by people. People make mistakes. Software reflects those mistakes
- Defect Masking: A defect may have remained hidden/masked on account of another defect. Only when the defect, masking the defect, is removed, the masked defect get exposed

No comments:

Post a Comment