This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
An Exploratory Study of How Developers Seek, Relate, and Collect Relevant Information during Software Maintenance Tasks
December 2006 (vol. 32 no. 12)
pp. 971-987
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] E.M. Altmann, “Near-Term Memory in Programming: A Simulation-Based Analysis,” Int'l J. Human-Computer Studies, vol. 54, pp.189-210, 2001.
[2] J.R. Anderson, “Problem Solving,” Cognitive Psychology and Its Implications, fifth ed., pp. 239-278. Worth, 2000.
[3] R.M. Baecker and A. Marcus, Human Factors and Typography for More Readable Programs. Addison-Wesley, 1990.
[4] E.L.A. Baniassad, G.C. Murphy, C. Schwanniger, and M. Kircher, “Managing Crosscutting Concerns during Software Evolution Tasks,” An Inquisitive Study, Aspect-Oriented Software Development, pp. 120-126, Enschede, 2002.
[5] L.M. Berlin, “Beyond Program Understanding,” A Look at Programming Expertise in Industry, Empirical Studies of Programmers, Fifth Workshop, pp. 6-25, 1993.
[6] B.W. Boehm, “Software Engineering,” IEEE Trans. Computers, vol. 25, no. 12, pp. 1226-1242, Dec. 1976.
[7] D.A. Boehm-Davis, J.E. Fox, and B.H. Philips, “Techniques for Exploring Program Comprehension,” Empirical Studies of Programmers Conf. Report, pp. 3-37, 1996.
[8] R. Brooks, “Towards a Theory of the Cognitive Processes in Computer Programming,” Int'l J. Human-Computer Studies, vol. 51, pp. 197-211, 1999.
[9] M. Chu-Carroll, J. Wright, and D. Shields, “Supporting Aggregation in Fine Grained Software Configuration Management,” Proc. ACM SIGSOFT Int'l Symp. Foundations of Software Eng., pp. 99-108, 2002.
[10] M. Coblenz, JASPER: Facilitating Software Maintenance Activities with Explicit Task Representations, Carnegie Mellon Univ., Pittsburgh, Penn., CMU-HCII-06-107, 2006.
[11] C.L. Corritore and S. Wiedenbeck, “Mental Representations of Expert Procedural and Object-Oriented Programmers in a Software Maintenance Task,” Int'l J. Human-Computer Studies, vol. 50, no. 1, pp. 61-83, 1999.
[12] C.L. Corritore and S. Wiedenbeck, “An Exploratory Study of Program Comprehension Strategies of Procedural and Object-Oriented Programmers,” Int'l J. Human-Computer Studies, vol. 54, pp. 1-23, 2001.
[13] D. Cubranic and G. Murphy, “Hipikat: Recommending Pertinent Software Development Artifacts,” Proc. Int'l Conf. Software Eng., pp. 408-418, 2000.
[14] B. Curtis, “Substantiating Programmer Variability,” Proc. IEEE, vol. 69, no. 7, p. 846, July 1981.
[15] S.P. Davies, “Models and Theories of Programming Strategy,” Int'l J. Man-Machine Studies, vol. 39, pp. 236-267, 1993.
[16] S.P. Davies, “Knowledge Restructuring and the Acquisition of Programming Expertise,” Int'l J. Human-Computer Studies, vol. 40, no. 4, pp. 703-726, 1994.
[17] C. Douce, “Long Term Comprehension of Software Systems: A Methodology for Study,” Proc. Psychology of Programming Interest Group, 2001.
[18] S.G. Eick, T.L. Graves, A.F. Karr, J.S. Marron, and A. Mockus, “Does Code Decay? Assessing the Evidence from Change Management Data,” IEEE Trans. Software Eng., vol. 27, no. 1, pp.1-12, Jan. 2001.
[19] J. Fogarty, A.J. Ko, H.H. Aung, E. Golden, K.P. Tang, and S.E. Hudson, “Examining Task Engagement in Sensor-Based Statistical Models of Human Interruptibility,” Proc. ACM Conf. Human Factors in Computing Systems, pp. 331-340, 2005.
[20] M.A. Francel and S. Rugaber, “The Value of Slicing while Debugging,” Science of Computer Programming, vol. 40, nos. 2-3, pp. 151-169, 2001.
[21] G.W. Furnas, T.K. Landauer, L.M. Gomez, and S.T. Dumais, “The Vocabulary Problem in Human-System Communication,” Comm. ACM, vol. 30, pp. 964-971, 1987.
[22] V.M. Gonzalez and G. Mark, “Constant, Constant, Multi-Tasking Craziness: Managing Multiple Working Spheres,” Proc. Conf. Human Factors in Computer Systems (CHI '04), pp. 113-120, 2004.
[23] T.R.G. Green and M. Petre, “Usability Analysis of Visual Programming Environments: A 'Cognitive Dimensions' Framework,” J. Visual Languages and Computing, vol. 7, pp. 131-174, 1996.
[24] A.J. Ko and B.A. Myers, “Designing the Whyline: A Debugging Interface for Asking Questions about Program Behavior,” Proc. Conf. Human Factors in Computing Systems, pp. 151-158, 2004.
[25] A.J. Ko, H. Aung, and B.A. Myers, “Design Requirements for More Flexible Structured Editors from a Study of Programmers' Text Editing,” Proc. ACM Conf. Human Factors in Computing Systems, pp. 1557-1560, 2005.
[26] A.J. Ko, H. Aung, and B.A. Myers, “Eliciting Design Requirements for Maintenance-Oriented IDEs: A Detailed Study of Corrective and Perfective Maintenance Tasks,” Proc. Int'l Conf. Software Eng., pp.126-135, 2005.
[27] A.J. Ko and B.A. Myers, “A Framework and Methodology for Studying the Causes of Software Errors in Programming Systems,” J. Visual Languages and Computing, vol. 16, no. 1-2, pp.41-84, 2005.
[28] S. Koch and G. Schneider, Results from Software Engineering Research into Open Source Development Projects Using Public Data, Wirtschaftsuniversität, p. 22, 2000.
[29] J. Koenemann and S.P. Robertson, “Expert Problem Solving Strategies for Program Comprehension,” Proc. Conf. Human Factors and Computing Systems, pp. 125-130, 1991.
[30] T. LaToza, G. Venolia, and R. DeLine, “Maintaining Mental Models: A Study of Developer Work Habits,” Proc. Int'l Conf. Software Eng., pp. 492-501, 2006.
[31] M.M. Lehman and L. Belady, Software Evolution—Processes of Software Change. Academic, 1985.
[32] D.C. Littman, J. Pinto, S. Letovsky, and E. Soloway, “Mental Models and Software Maintenance,” Proc. First Workshop Empirical Studies of Programmers, pp. 80-98, 1986.
[33] J.R. Miara, J.A. Musselman, J.A. Navarro, and B. Shneiderman, “Program Indentation and Comprehensibility,” Comm. ACM, vol. 26, no. 11, pp. 861-867, 1983.
[34] G.C. Murphy, M. Kersten, M.P. Robillard, and D. Cubranic, “The Emergent Structure of Development Tasks,” Proc. European Conf. Object-Oriented Programming, pp. 34-48, 2005.
[35] R. Navarro-Prieto and J.J. Canas, “Are Visual Programming Languages Better? The Role of Imagery in Program Comprehension,” Int'l J. Human-Computer Studies, vol. 54, pp. 799-829, 2001.
[36] E.C. Nistor and A. van der Hoek, “Concern Highlight: A Tool for Concern Exploration and Visualization,” Proc. Workshop Linking Aspect Technology and Evolution, 2006.
[37] N. Pennington, “Stimulus Structures and Mental Representations in Expert Comprehension of Computer Programs,” Cognitive Psychology, vol. 19, pp. 295-341, 1987.
[38] L. Perlow, “The Time Famine: Toward a Sociology of Work Time,” Administrative Science Quarterly, vol. 44, pp. 57-81, 1999.
[39] M. Petre and A.F. Blackwell, “A Glimpse of Expert Programmers' Mental Imagery,” Proc. Seventh Workshop Empirical Studies of Programmers, pp. 109-128, 1997.
[40] P. Pirolli and S.K. Card, “Information Foraging,” Psychological Rev., vol. 106, no. 4, pp. 643-675, 1999.
[41] S.P. Reiss, “The Design of the Desert Software Development Environment,” Proc. Int'l Conf. Software Eng., pp. 398-407, 1996.
[42] M.P. Robillard and G.C. Murphy, “Concern Graphs: Finding and Describing Concerns Using Structural Program Dependencies,” Proc. Int'l Conf. Software Eng., pp. 406-416, 2002.
[43] M.P. Robillard, “Representing Concerns in Source Code,” PhD thesis, Dept. of Computer Science, Univ. of British Columbia 2003.
[44] M.P. Robillard and G.C. Murphy, “Automatically Inferring Concern Code from Program Investigation Activities,” Int'l Conf. Automated Software Eng., pp. 225-234, 2003.
[45] M.P. Robillard, W. Coelho, and G.C. Murphy, “How Effective Developers Investigate Source Code: An Exploratory Study,” IEEE Trans. Software Eng., vol. 30, no. 12, pp. 889-903, Dec. 2004.
[46] M.P. Robillard, “Automatic Generation of Suggestions for Program Investigation,” Proc. ACM SIGSOFT Symp. Foundations of Software Eng., pp. 11-20, 2005.
[47] J. Singer, T. Lethbridge, N. Vinson, and N. Anquetil, “An Examination of Software Engineering Work Practices,” Proc. Conf. Centre for Advanced Studies in Collaborative Research, pp. 209-223, 1997.
[48] B.E. Teasley, “The Effects of Naming Style and Expertise on Program Comprehension,” Int'l J. Human-Computer Studies, vol. 40, pp. 757-770, 1994.
[49] A. Vans and A. von Mayrhauser, “Program Understanding Behavior during Corrective Maintenance of Large-Scale Software,” Int'l J. Human-Computer Studies, vol. 51, no. 1, pp. 31-70, 1999.
[50] M. Weiser, “Programmers Use Slices When Debugging,” Comm. ACM, vol. 26, pp. 446-452, 1982.
[51] S. Wiedenbeck, V. Fix, and J. Scholtz, “Characteristics of the Mental Representations of Novice and Expert Programmers: An Empirical Study,” Int'l J. Man-Machine Studies, vol. 39, pp. 793-812, 1993.

Index Terms:
Program investigation, program understanding, program comprehension, empirical software engineering, information foraging, information scent.
Citation:
Andrew J. Ko, Brad A. Myers, Michael J. Coblenz, Htet Htet Aung, "An Exploratory Study of How Developers Seek, Relate, and Collect Relevant Information during Software Maintenance Tasks," IEEE Transactions on Software Engineering, vol. 32, no. 12, pp. 971-987, Dec. 2006, doi:10.1109/TSE.2006.116
Usage of this product signifies your acceptance of the Terms of Use.