This Article 
 Bibliographic References 
 Add to: 
How Effective Developers Investigate Source Code: An Exploratory Study
December 2004 (vol. 30 no. 12)
pp. 889-903
Prior to performing a software change task, developers must discover and understand the subset of the system relevant to the task. Since the behavior exhibited by individual developers when investigating a software system is influenced by intuition, experience, and skill, there is often significant variability in developer effectiveness. To understand the factors that contribute to effective program investigation behavior, we conducted a study of five developers performing a change task on a medium-size open source system. We isolated the factors related to effective program investigation behavior by performing a detailed qualitative analysis of the program investigation behavior of successful and unsuccessful developers. We report on these factors as a set of detailed observations, such as evidence of the phenomenon of inattention blindness by developers skimming source code. In general, our results support the intuitive notion that a methodical and structured approach to program investigation is the most effective.

[1] V.R. Basili, R.W. Selby, and D.H. Hutchens, “Experimentation in Software Engineering,” IEEE Trans. Software Eng., vol. 12, no. 7, pp. 733-743, July 1986.
[2] B.W. Boehm, “Software Engineering,” IEEE Trans. Computers, vol. 12, no. 25, pp. 1226-1242, Dec. 1976.
[3] L. Bratthall and M. Jørgensen, “Can You Trust a Single Data Source Exploratory Software Engineering Case Study?” Empirical Software Eng., vol. 7, no. 1, pp. 9-26, Mar. 2002.
[4] Y.-F. Chen, M.Y. Nishimoto, and C.V. Ramamoorthy, “The C Information Abstraction System,” IEEE Trans. Software Eng., vol. 16, no. 3, pp. 325-334, Mar. 1990.
[5] C.L. Corritore and S. Wiedenbeck, “Mental Representation 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, Jan. 1999.
[6] C.L. Corritore and S. Wiedenbeck, “Direction and Scope of Comprehension-Related Activities by Procedural and Object-Oriented Programmers: An Empirical Study,” Proc. Eighth Int'l Workshop Program Comprehension, pp. 139-148, June 2000.
[7] 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, no. 1, pp. 1-23, Jan. 2001.
[8] B. Curtis, “Substantiating Programmer Variability,” Proc. IEEE, vol. 69, no. 7, pp. 846, July 1981.
[9] T. DeMarco and T. Lister, “Programmer Performance and the Effects of the Workplace,” Proc. Eighth Int'l Conf. Software Eng., pp. 268-272, 1985.
[10] 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, 2001.
[11] A. Engebretson and S. Wiedenbeck, “Novice Comprehension of Program Using Task-Specific and Nontask-Specific Constructs,” Proc. IEEE 2002 Symp. Human Centric Computing Languages and Environments, pp. 11-18, Sept. 2002.
[12] A. Goldberg, Smalltalk-80: The Interactive Programming Environment. Addison-Wesley, 1984.
[13] B.M. Lange and T.G. Moher, “Some Strategies of Reuse in an Object-Oriented Programming Environment,” Proc. SIGCHI Conf. Human Factors in Computing Systems, pp. 69-73, 1989.
[14] M.M. Lehman and L.A. Belady, “Program Evolution: Processes of Software Change,” APIC Studies in Data Processing, vol. 27, 1985.
[15] M. Lejter, S. Meyers, and S.P. Reiss, “Support for Maintaining Object-Oriented Programs,” IEEE Trans. Software Eng., vol. 18, no. 12, pp. 1045-1052, Dec. 1992.
[16] S. Letovsky and E. Soloway, “Delocalized Plans and Program Comprehension,” IEEE Software, vol. 3, no. 3, pp. 41-49, May 1986.
[17] A. Mack and I. Rock, Inattentional Blindness. MIT Press, 1998.
[18] R. Mosemann and S. Wiedenbeck, “Navigation and Comprehension of Programs by Novice Programmers,” Proc. Ninth Int'l Workshop Program Comprehension, pp. 79-88, May 2001.
[19] Object Technology International, Inc., “Eclipse Platform Technical Overview,” white paper, July 2001.
[20] P.D. O'Brien, D.C. Halbert, and M.F. Kilian, “The Trellis Programming Environment,” Proc. Conf. Object-Oriented Programming, Systems, and Applications, pp. 91-102, Oct. 1987.
[21] D.L. Parnas, “Sofware Aging,” Proc. 16th Int'l Conf. Software Eng., pp. 279-287, May 1994.
[22] S.L. Pfleeger, “Experimental Design and Analysis in Software Engineering— Part 3: Types of Experimental Design,” Software Eng. Notes, vol. 20, no. 2, pp. 14-16, Apr. 1995.
[23] D.F. Redmiles, “Reducing the Variability of Programmers' Performance Through Explained Examples,” Proc. Conf. Human Factors in Computing Systems, pp. 67-73, 1993.
[24] H. Sackman, W.J. Erikson, and E.E. Grant, “Exploratory Experimental Studies Comparing Online and Offline Programming Performance,” Comm. ACM, vol. 11, no. 1, pp. 3-11, 1968.
[25] M. Sanella, The Interlisp-D Reference Manual. Xerox Corporation, Palo Alto, Calif., 1983.
[26] C.B. Seaman, “Qualitative Methods in Empirical Studies of Software Engineering,” IEEE Trans. Software Eng., vol. 25, no. 4, pp. 557-572, July/Aug. 1999.
[27] J. Singer, T. Lethbridge, N. Vinson, and N. Anquetil, “An Examination of Software Engineering Work Practices,” Proc. 1997 Conf. Centre for Advanced Studies on Collaborative Research, pp. 209-223, 1997.
[28] E. Soloway, J. Pinto, S. Letovsky, D. Littman, and R. Lampert, “Designing Documentation to Compensate for Delocalized Plans,” Comm. ACM, vol. 31, no. 11, pp. 1259-1267, Nov. 1988.
[29] B. Teasley, L.M. Leventhal, K. Instone, and D.S. Rohlman, “Longitudinal Studies of the Relation of Programmer Expertise and Role-Expressiveness to Program Comprehension,” Proc. NATO Advanced Research Workshop User-Centred Requirements for Software Eng. Environments, NATO Advanced Science Institutes Series-Computer and Systems Science, vol. 123, pp. 143-163, Sept. 1991.
[30] W. Teitelman and L. Masinter, “The Interlisp Programming Environment,” Computer, vol. 14, no. 4, pp. 25-33, Apr. 1981.
[31] A.M. Vans, A. von Mayrhauser, and G. Somlo, “Program Understanding Behavior during Corrective Maintenance of Large-Scale Software,” Int'l J. Human-Computer Studies, vol. 51, no. 1, pp. 31-70, July 1999.
[32] A. von Mayrhauser and A.M. Vans, “Identification of Dynamic Comprehension Processes during Large Scale Maintenance,” IEEE Trans. Software Eng., vol. 22, no. 6, pp. 424-437, 1996.
[33] A. von Mayrhauser, A.M. Vans, and A.E. Howe, “Program Understanding Behaviour during Enhancement of Large-Scale Software,” J. Software Maintenance: Research and Practice, vol. 9, no. 5, pp. 299-327, Sept./Oct. 1997.
[34] 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.
[35] R.K. Yin, “Case Study Research: Design and Methods,” Applied Social Research Methods Series, vol. 5, second ed. 1989.

Index Terms:
Software evolution, empirical software engineering, program investigation, program understanding.
Martin P. Robillard, Wesley Coelho, Gail C. Murphy, "How Effective Developers Investigate Source Code: An Exploratory Study," IEEE Transactions on Software Engineering, vol. 30, no. 12, pp. 889-903, Dec. 2004, doi:10.1109/TSE.2004.101
Usage of this product signifies your acceptance of the Terms of Use.