It started out as a silly idea: to publish a programming book. It took me some time to figure out what to write about, until: Systems Debugging. In hindsight, it’s rather obvious, debugging is to me the funnest part of software engineering, it’s a joy compared to good ol’ boring feature development, or sluggish infra work. And I do think I can add one or two things to the field.
But, this is only the end goal, the process, oh the process, is the real deal, the cherry on top. And so I write this to lay down how I see it unfolding in the next few months.
First things first
In order to write a technical book, you really ought to have a pretty good grasp on the current state of things. And so, the first logical step was to read a bunch of books and papers on the subject at hand, Systems Debugging, but also some related ones, like Software Engineering methodologies and practices, and bugs in general, like the taxonomy of bugs.
I’ve started out by searching for any papers on Systems Debugging, went through a few of those and further searched for their references and then again one level deeper. You can see the complete list of papers I’ve gathered further below.
But, if one must read a big corpus, why not synthetize their contents in some way other than the final, and distant, book? It might be helpful to others. That brings us to
Systems Debugging: a review
A review paper, of all things. I’ve decided to make this the first (big) step towards the book, reading the list I defined above, to then summarize, connect, review and compile them into a single paper of my own authoring.
That brought one extra layer to the table: there are actual methodologies for one to gather the appropriate corpus of papers to be reviewed. A colleague recommended one paper on the subject, and one example, so before going through the papers, I’ll start with:
Guidelines for performing Systematic Literature Reviews in Software Engineering and
Systematic literature reviews in software engineering – A tertiary study. Hopefully, that’ll point me in the right direction, towards the most important papers to be reviewed.
Full Reading List (so far)
- “My Hairiest Bug” War Stories
- A case history analysis of software error cause-effect relationships
- A comparison of software defects in database management systems and operating systems
- An analysis of errors and their causes in system programs
- An empirical study of operating systems errors
- An empirical study of software interface faults
- Application of Dynamic Slicing in Program Debugging
- Automatic Debugging Approaches: A Literature Review
- Common trends in software fault and failure data
- Debugging Scandal: The Next Generation
- Debugging and the the Experience of Immediacy
- Designing the Whyline: A debugging interface for asking questions about program behavior
- Emulation of software faults: a field data study and a practical approach
- Fostering Debugging Communities on the Web
- Generalized Algorithmic Debugging and Testing
- Have things changed now?: an empirical study of bug characteristics in modern open source software
- How do you feel, developer? An explanatory theory of the impact of affects on programming performance
- Interprocedural Slicing Using Dependence Graphs
- Introduction to the Special Issue on the Debugging Scandal
- Not All Bugs Are the Same:Understanding, Characterizing, and Classifying Bug Types
- Performance Debugging for Distributed Systems of Black Boxes
- Programmers Use Slices When Debugging
- Programmers Should Still Use Slices When Debugging
- Programming on an Already Full Brain
- Quantitative analysis of faults and failures in a complex software system
- Research Issues in Software Fault Categorization
- Scalable Omniscient Debugging
- Software Defects and Their Impact on System Availability A Study of Field Failures in Operating Systems
- Software Visualization for Debugging
- Software debugging, testing, and verification
- Software errors and complexity. An empirical investigation
- Software faults in evolving a large, real-time system: a case study
- Techniques for Debugging an Application (US 8,966,448 B2 patent)
- The Errors of TEX
- The secret life of bugs: Going past the errors and omissions in software repositories
- Thrown from Kansas into Oz: Collaborative Debugging when a Shared World Breaks
- Towards a Theory of Software Development Expertise
- Using Program Slicing In Software Maintenance
- What Makes A Great Software Engineer?
- Who should fix this bug?
- Yesterday, My Program Worked. Today, It Does Not. Why?
In parallel, I’ve created a Twitter account where I’ll post opinionated summaries of Computer Science papers, with a certain regularity, check it out @paper_takeaways.