How Programmers Debug, Revisited: An Information Foraging Theory Perspective

Many theories of human debugging rely on complex mental constructs that offer little practical advice to builders of software engineering tools. Although hypotheses are important in debugging, a theory of navigation adds more practical value to our understanding of how programmers debug. Therefore, in this paper, we reconsider how people go about debugging in large collections of source code using a modern programming environment. We present an information foraging theory of debugging that treats programmer navigation during debugging as being analogous to a predator following scent to find prey in the wild. The theory proposes that constructs of scent and topology provide enough information to describe and predict programmer navigation during debugging, without reference to mental states such as hypotheses. We investigate the scope of our theory through an empirical study of 10 professional programmers debugging a real-world open source program. We found that the programmers' verbalizations far more often concerned scent-following than hypotheses. To evaluate the predictiveness of our theory, we created an executable model that predicted programmer navigation behavior more accurately than comparable models that did not consider information scent. Finally, we discuss the implications of our results for enhancing software engineering tools.

[1]  Ruven E. Brooks Towards a theory of the cognitive processes in computer programming , 1999, Int. J. Hum. Comput. Stud..

[2]  Peter Fritzson,et al.  Generalized algorithmic debugging and testing , 1991, LOPL.

[3]  Mik Kersten,et al.  Mylar: a degree-of-interest model for IDEs , 2005, AOSD '05.

[4]  Tore Dybå,et al.  Building Theories in Software Engineering , 2008, Guide to Advanced Empirical Software Engineering.

[5]  Fabio Crestani,et al.  Application of Spreading Activation Techniques in Information Retrieval , 1997, Artificial Intelligence Review.

[6]  Brad A. Myers,et al.  An Exploratory Study of How Developers Seek, Relate, and Collect Relevant Information during Software Maintenance Tasks , 2006, IEEE Transactions on Software Engineering.

[7]  Martin P. Robillard,et al.  Automatic generation of suggestions for program investigation , 2005, ESEC/FSE-13.

[8]  Janice Singer,et al.  Hipikat: a project memory for software development , 2005, IEEE Transactions on Software Engineering.

[9]  Julie Chen,et al.  The bloodhound project: automating discovery of web usability issues using the InfoScentπ simulator , 2003, CHI '03.

[11]  Yang Cai,et al.  Api hyperlinking via structural overlap , 2009, ESEC/SIGSOFT FSE.

[12]  N. Hoffart Basics of Qualitative Research: Techniques and Procedures for Developing Grounded Theory , 2000 .

[13]  James D. Hollan,et al.  Distributed cognition: toward a new foundation for human-computer interaction research , 2000, TCHI.

[14]  Emily Hill,et al.  Exploring the neighborhood with dora to expedite software maintenance , 2007, ASE '07.

[15]  Thomas M. Cover,et al.  Elements of Information Theory , 2005 .

[16]  Stanley Letovsky,et al.  Cognitive processes in program comprehension , 1986, J. Syst. Softw..

[17]  Ruven E. Brooks,et al.  Towards a Theory of the Comprehension of Computer Programs , 1983, Int. J. Man Mach. Stud..

[18]  Rachel K. E. Bellamy,et al.  Scents in Programs:Does Information Foraging Theory Apply to Program Maintenance? , 2007, IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC 2007).

[19]  Ed H. Chi,et al.  Using information scent to model user information needs and actions and the Web , 2001, CHI.

[20]  Jonathan L. Herlocker,et al.  Evaluating collaborative filtering recommender systems , 2004, TOIS.

[21]  Lucy Suchman Plans and situated actions: the problem of human-machine communication , 1987 .

[22]  David J. Gilmore,et al.  Models of Debugging , 1991, PPIG.

[23]  Rachel K. E. Bellamy,et al.  Using information scent to model the dynamic foraging behavior of programmers in maintenance tasks , 2008, CHI.

[24]  Brad A. Myers,et al.  Eliciting design requirements for maintenance-oriented IDEs: a detailed study of corrective and perfective maintenance tasks , 2005, ICSE.

[25]  Aaas News,et al.  Book Reviews , 1893, Buffalo Medical and Surgical Journal.

[26]  Till Schümmer,et al.  Lost and Found in Software Space , 2001, HICSS.

[27]  Chupoo Alafonté,et al.  Yesterday , 2023, Calabash. A journal of Caribbean arts and letters.

[28]  Peter Pirolli,et al.  Information Foraging , 2009, Encyclopedia of Database Systems.

[30]  M. Eisenstadt Tales of Debugging from The Front Lines , 1993 .

[31]  Mary Czerwinski,et al.  Easing program comprehension by sharing navigation data , 2005, 2005 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC'05).

[32]  Claes Wohlin,et al.  Experimentation in Software Engineering , 2012, Springer Berlin Heidelberg.

[33]  Stan Matwin,et al.  Mining the maintenance history of a legacy software system , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[34]  Premkumar T. Devanbu,et al.  Recommending random walks , 2007, ESEC-FSE '07.

[35]  John R. Anderson A Spreading Activation Theory of Memory , 1988 .

[36]  Juliet M. Corbin,et al.  Basics of Qualitative Research (3rd ed.): Techniques and Procedures for Developing Grounded Theory , 2008 .

[37]  Martin P. Robillard,et al.  How effective developers investigate source code: an exploratory study , 2004, IEEE Transactions on Software Engineering.

[38]  J. Nielsen Information foraging : Why google makes people leave your site faster , 2003 .

[39]  Curtis R. Cook,et al.  An analysis of the on-line debugging process , 1987 .

[40]  A. N. Leont’ev,et al.  Activity, consciousness, and personality , 1978 .

[41]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[42]  Janice Singer,et al.  NavTracks: supporting navigation in software maintenance , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[43]  P ? ? ? ? ? ? ? % ? ? ? ? , 1991 .

[44]  Luce Grosjean,et al.  Murphy , 2015 .

[45]  Peter Pirolli,et al.  Computational models of information scent-following in a very large browsable text collection , 1997, CHI.

[46]  Carl Gutwin,et al.  Mining a Software Developer's Local Interaction History , 2004, MSR.

[47]  Andreas Zeller,et al.  Mining version histories to guide software changes , 2005, Proceedings. 26th International Conference on Software Engineering.

[48]  W. Marsden I and J , 2012 .

[49]  Pablo Romero,et al.  Debugging strategies and tactics in a multi-representation software environment , 2007, Int. J. Hum. Comput. Stud..

[50]  John R. Anderson,et al.  The Adaptive Character of Thought , 1990 .

[51]  K. A. Ericsson,et al.  Protocol Analysis: Verbal Reports as Data , 1984 .

[52]  Martin P. Robillard,et al.  Topology analysis of software dependencies , 2008, TSEM.

[53]  Susan Elliott Sim,et al.  The ramp-up problem in software projects: a case study of how software immigrants naturalize , 1998, Proceedings of the 20th International Conference on Software Engineering.

[54]  Rachel K. E. Bellamy,et al.  Can information foraging pick the fix? A field study , 2008, 2008 IEEE Symposium on Visual Languages and Human-Centric Computing.

[55]  Anneliese Amschler Andrews,et al.  Program understanding behavior during corrective maintenance of large-scale software , 1999, Int. J. Hum. Comput. Stud..

[56]  M. Glickman,et al.  CarD , 2011 .

[57]  Susan T. Dumais,et al.  The latent semantic analysis theory of knowledge , 1997 .

[58]  Elizabeth Schroeder Activity , 2005 .

[59]  Anselm L. Strauss,et al.  Basics of qualitative research : techniques and procedures for developing grounded theory , 1998 .

[60]  David Klahr,et al.  Instructionless Learning about a Complex Device: The Paradigm and Observations , 1986, Int. J. Man Mach. Stud..

[61]  Andreas Zeller,et al.  Yesterday, my program worked. Today, it does not. Why? , 1999, ESEC/FSE-7.

[62]  John R. Anderson,et al.  Debugging: An Analysis of Bug-Location Strategies , 1987, Hum. Comput. Interact..

[63]  Gail C. Murphy,et al.  Predicting source code changes by mining change history , 2004, IEEE Transactions on Software Engineering.