Bugs, errors and causes from an 1975 paper
Discover the timeless relevance of a 1975 paper that sheds light on the causes of bugs and errors in system programs.
In this article, we delve into Albert Endres' findings and explore how understanding the problem, effective communication, and domain knowledge play crucial roles in reducing errors.
These principles remain highly relevant in current software development practices, where collaboration, clear communication, and comprehensive knowledge of the project's domain could be crucial for the success of the product.
About the paper
In 1975, Albert Endres published a paper called "An Analysis of Errors and their Causes in System Programs".
In this paper, they analyze the errors detected in an operating system DOS/VS developed by IBM Laboratories in Germany.
The system was released in 1973. The paper analyses:
- 500 modules, with an average of 360 lines per module and 480 lines of comments, resulting in 190K instructions and 60K comments.
- A total of 740 problems were found, of which 432 were classified as program errors.
Areas where errors where found
And here are some of the conclusions from this paper:
If we want to reduce the number of errors then we should focus not only on better programming techniques but also on the problem definition, and understanding domain knowledge:
And based on the paper here are the categories of causes for errors or bugs:
1. Technological = "definability of the problem, feasibility of solving it, available procedures and tools"
2. Organisational = "division of work load, available in- formation, communication, resources"
3. Historic = "history of the project, of the program, special situations, and external influences"
4. Group dynamic = "willingness to cooperate, distribution of roles inside the project group"
5. Individual = "experience, talent, and constitution of the individual programmer"
6. Other
Some conclusions:
When considering quality in a software product, we should consider all aspects, not only the tools and programming techniques we use.
When joining a product or team, it is important to understand the history of the product & team.
To become a better developer one has to learn more than coding/engineering techniques.
When we think about a possible future of using AI to augment programming, we should consider that if this study remains true it is not enough to reduce the number of errors. As half of them are not caused by code.
Enjoyed this article?
Join my Short Ruby News newsletter for weekly Ruby updates. For more Ruby learning resources, visit rubyandrails.info
Subscribe to my newsletter
Read articles from Lucian Ghinda directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Lucian Ghinda
Lucian Ghinda
Senior Product Engineer, working in Ruby and Rails. Passionate about idea generation, creativity, and programming. I curate the Short Ruby Newsletter.