An Exploratory Study of How Developers Seek, Relate, and Collect Relevant Information during Software Maintenance Tasks

Much of software developers' time is spent understanding unfamiliar code. To better understand how developers gain this understanding and how software development environments might be involved, a study was performed in which developers were given an unfamiliar program and asked to work on two debugging tasks and three enhancement tasks for 70 minutes. The study found that developers interleaved three activities. They began by searching for relevant code both manually and using search tools; however, they based their searches on limited and misrepresentative cues in the code, environment, and executing program, often leading to failed searches. When developers found relevant code, they followed its incoming and outgoing dependencies, often returning to it and navigating its other dependencies; while doing so, however, Eclipse's navigational tools caused significant overhead. Developers collected code and other information that they believed would be necessary to edit, duplicate, or otherwise refer to later by encoding it in the interactive state of Eclipse's package explorer, file tabs, and scroll bars. However, developers lost track of relevant code as these interfaces were used for other tasks, and developers were forced to find it again. These issues caused developers to spend, on average, 35 percent of their time performing the mechanics of navigation within and between source files. These observations suggest a new model of program understanding grounded in theories of information foraging and suggest ideas for tools that help developers seek, relate, and collect information in a more effective and explicit manner

[1]  Spencer Rugaber,et al.  The value of slicing while debugging , 2001, Sci. Comput. Program..

[2]  Jean Scholtz,et al.  Characteristics of the Mental Representations of Novice and Expert Programmers: An Empirical Study , 1993, Int. J. Man Mach. Stud..

[3]  André van der Hoek,et al.  Concern Highlight: A Tool for Concern Exploration and Visualization , 2006 .

[4]  B. Curtis,et al.  Substantiating programmer variability , 1981, Proceedings of the IEEE.

[5]  Scott P. Robertson,et al.  Expert problem solving strategies for program comprehension , 1991, CHI.

[6]  Aaron Marcus,et al.  Human factors and typography for more readable programs , 1990 .

[7]  Michael J. Coblenz Maintenance Activities With Explicit Task Representations , 2006 .

[8]  Chris R. Douce Long Term Comprehension of Software Systems: A Methodology for Study , 2001, PPIG.

[9]  Thomas D. LaToza,et al.  Maintaining mental models: a study of developer work habits , 2006, ICSE.

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

[11]  Brad A. Myers,et al.  Designing the whyline: a debugging interface for asking questions about program behavior , 2004, CHI.

[12]  Martin P. Robillard,et al.  The Emergent Structure of Development Tasks , 2005, ECOOP.

[13]  Susan Wiedenbeck,et al.  Mental representations of expert procedural and object-oriented programmers in a software maintenance task , 1999, Int. J. Hum. Comput. Stud..

[14]  Simon P. Davies,et al.  Knowledge restructuring and the acquisition of programming expertise , 1994, Int. J. Hum. Comput. Stud..

[15]  M. Scheerer,et al.  Problem Solving , 1967, Nature.

[16]  Mark Chu-Carroll,et al.  Supporting aggregation in fine grained software configuration management , 2002, SIGSOFT '02/FSE-10.

[17]  Martin P. Robillard,et al.  Automatically inferring concern code from program investigation activities , 2003, 18th IEEE International Conference on Automated Software Engineering, 2003. Proceedings..

[18]  Ben Shneiderman,et al.  Program indentation and comprehensibility , 1983, CACM.

[19]  Susan T. Dumais,et al.  The vocabulary problem in human-system communication , 1987, CACM.

[20]  Audris Mockus,et al.  Does Code Decay? Assessing the Evidence from Change Management Data , 2001, IEEE Trans. Software Eng..

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

[22]  Víctor M. González,et al.  "Constant, constant, multi-tasking craziness": managing multiple working spheres , 2004, CHI.

[23]  Mark Weiser,et al.  Programmers use slices when debugging , 1982, CACM.

[24]  Marian Petre,et al.  Usability Analysis of Visual Programming Environments: A 'Cognitive Dimensions' Framework , 1996, J. Vis. Lang. Comput..

[25]  Brad A. Myers,et al.  A framework and methodology for studying the causes of software errors in programming systems , 2005, J. Vis. Lang. Comput..

[26]  Elliot Soloway,et al.  Mental models and software maintenance , 1986, J. Syst. Softw..

[27]  Lucy M. Berlin,et al.  Beyond Program Understanding: A Look at Programming Expertise in Industry , 2001 .

[28]  Brad A. Myers,et al.  Design requirements for more flexible structured editors from a study of programmers' text editing , 2005, CHI Extended Abstracts.

[29]  José J. Cañas,et al.  Are visual programming languages better? The role of imagery in program comprehension , 2001, Int. J. Hum. Comput. Stud..

[30]  Steven P. Reiss,et al.  Simplifying data integration: the design of the Desert software development environment , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[31]  Susan Wiedenbeck,et al.  An exploratory study of program comprehension strategies of procedural and object-oriented programmers , 2001, Int. J. Hum. Comput. Stud..

[32]  Erik M. Altmann,et al.  Near-term memory in programming: a simulation-based analysis , 2001, Int. J. Hum. Comput. Stud..

[33]  Janice Singer,et al.  An examination of software engineering work practices , 1997, CASCON.

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

[35]  Alan F. Blackwell,et al.  A glimpse of expert programmers' mental imagery , 1997, ESP '97.

[36]  Amy J. Ko,et al.  Eliciting design requirements for maintenance-oriented IDEs: a detailed study of corrective and perfective maintenance tasks , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[37]  N. Pennington Stimulus structures and mental representations in expert comprehension of computer programs , 1987, Cognitive Psychology.

[38]  Barbee Teasley,et al.  The effects of naming style and expertise on program comprehension , 1994, Int. J. Hum. Comput. Stud..

[39]  Stefan Koch,et al.  Results from software engineering research into open source development projects using public data , 2000 .

[40]  James Fogarty,et al.  Examining task engagement in sensor-based statistical models of human interruptibility , 2005, CHI.

[41]  Gail C. Murphy,et al.  Managing crosscutting concerns during software evolution tasks: an inquisitive study , 2002, AOSD '02.

[42]  S. Ian Robertson,et al.  Problem-solving , 2001, Human Thinking.

[43]  Martin P. Robillard,et al.  Representing concerns in source code , 2007, TSEM.

[44]  L. Perlow The Time Famine: Toward a Sociology of Work Time , 1999 .

[45]  Gail C. Murphy,et al.  Hipikat: recommending pertinent software development artifacts , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[46]  Simon P. Davies,et al.  Models and Theories of Programming Strategy , 1993, Int. J. Man Mach. Stud..

[47]  Martin P. Robillard,et al.  Concern graphs: finding and describing concerns using structural program dependencies , 2002, Proceedings of the 24th International Conference on Software Engineering. ICSE 2002.

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