Publication | Closed Access
An Exploratory Study of Computer Program Debugging
136
Citations
13
References
1974
Year
Software MaintenanceEngineeringSoftware SystemsSoftware EngineeringSource Code AnalysisSoftware AnalysisCompilersComputer Program DebuggingProgramming LanguagesDebugging StrategiesProgramming ProcessComputer ScienceDebuggerStatic Program AnalysisSoftware DesignProgram AnalysisSoftware TestingProgram ComprehensionSystem SoftwareSoftware Debugging
The study introduces a novel laboratory approach to investigate the psychology of programming, demonstrating feasibility and proposing a hierarchical description of debugging with preliminary principles. Thirty experienced FORTRAN programmers debugged twelve one-page listings containing a single non‑syntactic bug, with bugs classified into array, iteration, and assignment types, and were grouped into five debugging‑aid conditions. Debugging was rapid (median 6 min), with no speed advantage from debugging aids; programmers tended to infer the intended state first, found assignment bugs hardest, and performed twice as efficiently on a second debugging run.
This experiment represents a new approach to the study of the psychology of programming, and demonstrates the feasibility of studying an isolated part of the programming process in the laboratory. Thirty experienced FORTRAN programmers debugged 12 one-page FORTRAN listings, each of which was syntactically correct but contained one non-syntactic error (bug). Three classes of bugs (Array bugs, Iteration bugs, and bugs in Assignment Statements) in each of four different programs were debugged. The programmers were divided into five groups, based upon the information, or debugging “aids”, given them. Key results were that debug times were short (median = 6 min.). The aids groups did not debug faster than the control group; programmers adopted their debugging strategies based upon the information available to them. The results suggest that programmers often identify the intended state of a program before they find the bug. Assignment bugs were more difficult to find than Array and Iteration bugs, probably because the latter could be detected from a high-level understanding of the programming language itself. Debugging was at least twice as efficient the second time programmers debugged a program (though with a different bug in it). A simple hierarchical description of debugging was suggested, and some possible “principles” of debugging were identified.
| Year | Citations | |
|---|---|---|
Page 1
Page 1