skip to main content
research-article

On the Comprehension of Program Comprehension

Published:05 September 2014Publication History
Skip Abstract Section

Abstract

Research in program comprehension has evolved considerably over the past decades. However, only little is known about how developers practice program comprehension in their daily work. This article reports on qualitative and quantitative research to comprehend the strategies, tools, and knowledge used for program comprehension. We observed 28 professional developers, focusing on their comprehension behavior, strategies followed, and tools used. In an online survey with 1,477 respondents, we analyzed the importance of certain types of knowledge for comprehension and where developers typically access and share this knowledge.

We found that developers follow pragmatic comprehension strategies depending on context. They try to avoid comprehension whenever possible and often put themselves in the role of users by inspecting graphical interfaces. Participants confirmed that standards, experience, and personal communication facilitate comprehension. The team size, its distribution, and open-source experience influence their knowledge sharing and access behavior. While face-to-face communication is preferred for accessing knowledge, knowledge is frequently shared in informal comments.

Our results reveal a gap between research and practice, as we did not observe any use of comprehension tools and developers seem to be unaware of them. Overall, our findings call for reconsidering the research agendas towards context-aware tool support.

References

  1. Mark Ackerman, Volkmar Pipek, and Volker Wulf. 2003. Sharing Expertise Beyond Knowledge Management. The MIT Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. B. Adelson and E. Soloway. 1985. The role of domain expenence in software design. IEEE Trans. Softw. Eng. 11, 11 (1985), 1351--1360. DOI: http://dx.doi.org/10.1109/TSE.1985.231883 Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. T. Anderson and H. Kanuka. 2003. e-RESEARCH Methods, Strategies, and Issues. Pearson Education.Google ScholarGoogle Scholar
  4. F. O. Bjørnson and T. Dingsøyr. 2008. Knowledge management in software engineering: A systematic review of studied concepts, findings and research methods used. Inf. Softw. Technol. 50, 11 (2008), 1055--1068. DOI: http://dx.doi.org/10.1016/j.infsof.2008.03.006 Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. B. W. Boehm. 1976. Software engineering. IEEE Trans. Comput. C-25, 12 (1976), 1226--1241. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. J. Brandt, M. Dontcheva, M. Weskamp, and S. R. Klemmer. 2010. Example-centric programming: Integrating Web search into the development environment. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems (CHI'10). ACM, New York, NY, 513--522. DOI: http://dx.doi.org/10.1145/1753326.1753402 Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. J. Brandt, Ph. J. Guo, J. Lewenstein, M. Dontcheva, and S. R. Klemmer. 2009. Two studies of opportunistic programming: Interleaving Web foraging, learning, and writing code. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems (CHI'09). ACM, New York, NY, 1589--1598. DOI: http://dx.doi.org/10.1145/1518701.1518944 Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. S. Breu, R. Premraj, J. Sillito, and Th. Zimmermann. 2010. Information needs in bug reports: Improving cooperation between developers and users. In Proceedings of the ACM Conference on Computer Supported Cooperative Work (CSCW'10). ACM, New York, NY, 301--310. DOI: http://dx.doi.org/10.1145/1718918.1718973 Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. R. E. Brooks. 1983. Towards a theory of the comprehension of computer programs. Int. J. Man-Machine Stud. 18, 6 (1983), 543--554.Google ScholarGoogle ScholarCross RefCross Ref
  10. A. Cabrera and E. F. Cabrera. 2002. Knowledge-sharing dilemmas. Org. Stud. 23 (2002), 687--710.Google ScholarGoogle ScholarCross RefCross Ref
  11. J. Carroll. 1998. Minimalism beyond the Nurnberg Funnel. MIT Press.Google ScholarGoogle Scholar
  12. M. Cataldo and J. D. Herbsleb. 2008. Communication networks in geographically distributed software development. In Proceedings of the ACM Conference on Computer Supported Cooperative Work (CSCW'08). ACM, New York, NY, 579--588. DOI: http://dx.doi.org/10.1145/1460563.1460654 Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. J. W. Creswell. 2009. Research Design: Qualitative, Quantitative, and Mixed Methods Approaches. Sage Publications, Inc.Google ScholarGoogle Scholar
  14. B. Dagenais and M. P. Robillard. 2010. Creating and evolving developer documentation: Understanding the decisions of open source contributors. In Proceedings of the 18th ACM SIGSOFT International Symposium on the Foundations of Software Engineering. 127--136. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. R. DeLine, A. Khella, M. Czerwinski, and G. Robertson. 2005. Towards understanding programs through wear-based filtering. In Proceedings of the ACM Symposium on Software Visualization (SoftVis'05). ACM, 183--192. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Kevin C. Desouza. 2003. Barriers to effective use of knowledge management systems in software engineering. Commun. ACM 46, 1 (2003), 99--101. DOI: http://dx.doi.org/10.1145/602421.602458 Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Francoise Detienne. 2002. Software Design -- Cognitive Aspect. Springer. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. K. A. Ericsson and H. A. Simon. 1993. Protocol Analysis: Verbal Reports as Data. Massachusetts Institute of Technology.Google ScholarGoogle ScholarCross RefCross Ref
  19. R. K. Fjeldstad and W. T. Hamlen. 1979. Application program maintenance study: Report to our respondents. In Proceedings of GUIDE 48. PA.Google ScholarGoogle Scholar
  20. A. Forward and T. C. Lethbridge. 2002. The relevance of software documentation, tools and technologies: A survey. In Proceedings of the ACM Symposium on Document Engineering. ACM, 26--33. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Th. Fritz and G. C. Murphy. 2010. Using information fragments to answer the questions developers ask. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering (ICSE'10). ACM, New York, NY, 175--184. DOI: http://dx.doi.org/10.1145/1806799.1806828 Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. G. Gilder. 2013. Knowledge and Power: The Information Theory of Capitalism and How it is Revolutionizing our World. Regnery Publishing.Google ScholarGoogle Scholar
  23. A. M. Grubb and A. Begel. 2012. On the perceived interdependence and information sharing inhibitions of enterprise software engineers. In Proceedings of the ACM Conference on Computer Supported Cooperative Work (CSCW'12). ACM, New York, NY, 1337--1346. DOI: http://dx.doi.org/10.1145/2145204.2145403 Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. J. D. Herbsleb and A. Mockus. 2003. An empirical study of speed and communication in globally-distributed software development. IEEE Trans. Softw. Eng. 29, 6 (2003), 481--494. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. R. Hoffmann, J. Fogarty, and D. S. Weld. 2007. Assieme: Finding and leveraging implicit references in a Web search interface for programmers. In Proceedings of the 20th Annual ACM Symposium on User Interface Software and Technology (UIST'07). ACM, New York, NY, 13--22. DOI: http://dx.doi.org/10.1145/1294211.1294216 Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. R. Holmes and R. J. Walker. 2013. Systematizing pragmatic software reuse. ACM Trans. Softw. Eng. Methodol. 21, 4, Article 20 (2013). DOI: http://dx.doi.org/10.1145/2377656.2377657 Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Miryung Kim, L. Bergman, T. Lau, and D. Notkin. 2004. An ethnographic study of copy and paste programming practices in OOPL. In Proceedings of the International Symposium on Empirical Software Engineering (ISESE'04). 83--92. DOI: http://dx.doi.org/10.1109/ISESE.2004.1334896 Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. A. J. Ko, R. DeLine, and G. Venolia. 2007. Information needs in collocated software development teams. In Proceedings of the 29th International Conference on Software Engineering (ICSE'07). IEEE Computer Society, 344--353. DOI: http://dx.doi.org/10.1109/ICSE.2007.45 Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. A. J. Ko and B. A. Myers. 2004. Designing the whyline: A debugging interface for asking questions about program behavior. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems (CHI'04). ACM, 151--158. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. A. J. Ko and B. A. Myers. 2008. Debugging reinvented: Asking and answering why and why not questions about program behavior. In Proceedings of the 30th International Conference on Software Engineering (ICSE'08). ACM, New York, NY, 301--310. DOI: http://dx.doi.org/10.1145/1368088.1368130 Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. A. J. Ko, B. A. Myers, M. J. Coblenz, and H. H. Aung. 2006. An exploratory study of how developers seek, relate, and collect relevant information during software maintenance tasks. IEEE Trans. Softw. Eng. 32, 12 (2006), 971--987. DOI: http://dx.doi.org/10.1109/TSE.2006.116 Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Th. D. LaToza, D. Garlan, J. D. Herbsleb, and B. A. Myers. 2007. Program comprehension as fact finding. In Proceedings of the 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC-FSE'07). ACM, New York, NY, 361--370. DOI: http://dx.doi.org/10.1145/1287624.1287675 Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Th. D. LaToza, G. Venolia, and R. DeLine. 2006. Maintaining mental models: A study of developer work habits. In Proceeding of the 28th International Conference on Software Engineering (ICSE'06). ACM, New York, NY, 492--501. DOI: http://dx.doi.org/10.1145/1134285.1134355 Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. T. C. Lethbridge, J. Singer, and A. Forward. 2003. How software engineers use documentation: The state of the practice. IEEE Softw. 20, 6 (2003), 35--39. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. S. Letovsky and E. Soloway. 1986. Delocalized plans and program comprehension. IEEE Softw. 3, 3 (1986), 41--49. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. D. C. Littman, J. Pinto, S. Letovsky, and E. Soloway. 1987. Mental models and software maintenance. J. Syst. Softw. 7, 4 (1987), 341--355. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. W. Maalej. 2009. Task-first or context-first? Tool integration revisited. In Proceedings of the IEEE/ACM International Conference on Automated Software Engineering (ASE'09). IEEE Computer Society, 344--355. DOI: http://dx.doi.org/10.1109/ASE.2009.36 Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Walid Maalej, Thomas Fritz, and Romain Robbes. 2014. Collecting and processing interaction data for recommendation systems. In Recommendation Systems in Software Engineering, Martin P. Robillard, Walid Maalej, Robert J. Walker, and Thomas Zimmermann (Eds.), Springer, Berlin, 173--197. DOI: http://dx.doi.org/10.1007/978-3-642-45135-5_7Google ScholarGoogle Scholar
  39. W. Maalej and H.-J. Happel. 2010. Can development work describe itself?. In Proceedings of the 7th IEEE International Working Conference on Mining Software Repositories (MSR'10). IEEE, 191--200.Google ScholarGoogle Scholar
  40. Walid Maalej and Martin P. Robillard. 2013. Patterns of knowledge in API reference documentation. IEEE Trans. Softw. Eng. 39, 9 (2013), 1264--1282. DOI: http://dx.doi.org/10.1109/TSE.2013.12 Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. A. E. Milewski, M. Tremaine, R. Egan, S. Zhang, F. Kobler, and P. O'Sullivan. 2008. Guidelines for effective bridging in global software engineering. In Proceedings of the IEEE International Conference on Global Software Engineering. IEEE Computer Society, 23--32. DOI: http://dx.doi.org/10.1109/ICGSE.2008.16 Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. A. Mockus and J. D. Herbsleb. 2002. Expertise browser: A quantitative approach to identifying expertise. In Proceedings of the 24th International Conference on Software Engineering (ICSE'02). ACM, New York, NY, 503--512. DOI: http://dx.doi.org/10.1145/581339.581401 Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. G. C. Murphy, M. Kersten, and L. Findlater. 2006. How are Java software developers using the Eclipse IDE? IEEE Softw. 23, 4 (2006), 76--83. DOI: http://dx.doi.org/10.1109/MS.2006.105 Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. E. Murphy-Hill. 2014. The future of social learning in software engineering. Computer 47, 1 (2014), 48--54. DOI: http://dx.doi.org/10.1109/MC.2013.406 Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. E. Murphy-Hill, R. Jiresal, and G. C. Murphy. 2012a. Improving software developers' fluency by recommending development environment commands. In Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering (FSE'12). ACM, New York, NY, Article 42, 11 pages. DOI: http://dx.doi.org/10.1145/2393596.2393645 Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. E. Murphy-Hill and G. C. Murphy. 2011. Peer Interaction effectively yet infrequently, enables programmers to discover new tools. In Proceedings of the ACM Conference on Computer Supported Cooperative Work (CSCW'11). ACM, New York, NY, 405--414. DOI: http://dx.doi.org/10.1145/1958824.1958888 Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. E. Murphy-Hill, C. Parnin, and A. P. Black. 2012b. How we refactor, and how we know it. IEEE Trans. Softw. Eng. 38, 1 (2012), 5--18. DOI: http://dx.doi.org/10.1109/TSE.2011.41 Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Ch. Parnin and S. Rugaber. 2009. Resumption strategies for interrupted programming tasks. In Proceedings of the IEEE 17th International Conference on Program Comprehension (ICPC). IEEE.Google ScholarGoogle Scholar
  49. F. Rahman, Ch. Bird, and P. Devanbu. 2012. Clones: What is that smell? Empirical Softw. Eng. 17, 4--5 (2012), 503--530. DOI: http://dx.doi.org/10.1007/s10664-011-9195-3 Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. V. Rajlich and N. Wilde. 2002. The role of concepts in program comprehension. In Proceedings of the 10th International Workshop on Program Comprehension. 271--278. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. T. Reichling, M. Veith, and V. Wulf. 2007. Expert recommender: Designing for a Network Organization. Comput. Supported Coop. Work 16, 4--5 (2007), 431--465. DOI: http://dx.doi.org/10.1007/s10606-007-9055-2 Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. M. Robillard, W. Coelho, and G. Murphy. 2004. How effective developers investigate source code: An exploratory Study. IEEE Trans. Softw. Eng. 30, 12 (2004), 889--903. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. M. Robillard and R. DeLine. 2010. A field study of API learning obstacles. Empirical Softw. Eng. (2010), 1--30. DOI: http://dx.doi.org/10.1007/s10664-010-9150-8 Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Martin P. Robillard. 2009. What makes APIs hard to learn? Answers from developers. IEEE Softw. 26, 6 (2009), 27--34. DOI: http://dx.doi.org/10.1109/MS.2009.193 Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. T. Roehm and W. Maalej. 2012. Automatically detecting developer activities and problems in software development work: NIER track. In Proceedings of the 34th International Conference on Software Engineering, (ICSE'12). Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. T. Roehm, R. Tiarks, R. Koschke, and W. Maalej. 2012. How do professional developers comprehend software? In Proceedings of the International Conference on Software Engineering (ICSE'12). IEEE Press, 255--265. http://dl.acm.org/citation.cfm?id=2337223.2337254. Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. R. L. Rosnow and R. Rosenthal. 2007. Beginning Behavioral Research: A Conceptual Primer (6th. Ed.). Pearson.Google ScholarGoogle Scholar
  58. J. Sillito, K. de Voider, B. Fisher, and G. Murphy. 2005. Managing software change tasks: An exploratory study. In Proceedings of the International Symposium on Empirical Software Engineering (ISESE'05). DOI: http://dx.doi.org/10.1109/ISESE.2005.1541811Google ScholarGoogle Scholar
  59. J. Sillito, G. C. Murphy, and K. de Volder. 2008. Asking and answering questions during a programming change task. Trans. Softw. Eng. 34 (2008), 434--451. Issue 4. DOI: http://dx.doi.org/10.1109/TSE.2008.26. Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. J. Singer, T. Lethbridge, N. Vinson, and N. Anquetil. 1997. An examination of software engineering work practices. In Proceedings of the Conference of the Centre for Advanced Studies on Collaborative Research (CASCO). IBM Press, 21. Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. L.-G. Singer. 2013. Improving the Adoption of Software Engineering Practices through Persuasive Interventions. lulu.com.Google ScholarGoogle Scholar
  62. D. K. Sjøberg, B. Anda, E. Arisholm, T. Dybå, M. Jørgensen, A. Karahasanović, and M. Vokáč. 2003. Challenges and recommendations when increasing the realism of controlled software engineering experiments. In Empirical Methods and Studies in Software Engineering, Reidar Conradi and AlfInge Wang (Eds.), Lecture Notes in Computer Science, vol. 2765, Springer, Berlin, 24--38. DOI: http://dx.doi.org/10.1007/978-3-540-45143-3_3.Google ScholarGoogle Scholar
  63. E. Soloway and K. Ehrlich. 1984. Empirical studies of programming knowledge. IEEE Trans. Softw. Eng. 10, 5 (1984), 595--609. DOI: http://dx.doi.org/10.1109/TSE.1984.5010283 Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. Tracy L. Tuten, David J. Urban, and Michael Bosnjak. 2002. Internet Surveys and Data Quality: A Review. Hogrefe and Huber Publishers.Google ScholarGoogle Scholar
  65. M. Vakilian, N. Chen, S. Negara, B. A. Rajkumar, B. P. Bailey, and R. E. Johnson. 2012. Use, disuse, and misuse of automated refactorings. In Proceedings of the International Conference on Software Engineering (ICSE'12). IEEE Press, 233--243. http://dl.acm.org/citation.cfm?id=2337223.2337251. Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. A. Von Mayrhauser and A. M. Vans. 1996. Identification of dynamic comprehension processes during large scale maintenance. IEEE Trans. Softw. Eng. 22, 6 (1996), 424--437. Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. A. Von Mayrhauser, A. M. Vans, and S. Lang. 1998. Program comprehension and enhancement of software. In Proceedings of the IFIP World Computing Congress - Information Technology and Knowledge Engineering.Google ScholarGoogle Scholar
  68. J. C. F. D. Winter and D. Dodou. 2010. Five-point Likert items: t test versus Mann-Whitney-Wilcoxon. Practical Assess. Res. Eval. 15, 11 (2010).Google ScholarGoogle Scholar

Index Terms

  1. On the Comprehension of Program Comprehension

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image ACM Transactions on Software Engineering and Methodology
        ACM Transactions on Software Engineering and Methodology  Volume 23, Issue 4
        Special Issue International Conference on Software Engineering (ICSE 2012) and Regular Papers
        August 2014
        232 pages
        ISSN:1049-331X
        EISSN:1557-7392
        DOI:10.1145/2668018
        Issue’s Table of Contents

        Copyright © 2014 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 5 September 2014
        • Accepted: 1 May 2014
        • Revised: 1 January 2014
        • Received: 1 December 2012
        Published in tosem Volume 23, Issue 4

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • research-article
        • Research
        • Refereed

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader