A Study on Guiding Programmers’ Code Navigation with a Graphical Code Recommender

Part of the Studies in Computational Intelligence book series (SCI, volume 377)


While performing an evolution task, programmers spend significant time trying to understand a code base. To facilitate programmers’ comprehension of code, researchers have developed software visualization tools. However, those tools have not predicted the information that programmers seek during their program comprehension activities. To responsively provide informative diagrams in a timely manner, we suggest a graphical code recommender and conduct an iterative Wizard of Oz study in order to examine when and what diagrammatic contents should appear in a graphical view to guide a programmer in exploring source code. We found that programmers positively evaluate a graphical code recommender that changes in response to their code navigation. They favored a graphical view that displays the source locations frequently visited by other programmers during the same task. They commented that the graphical code recommender helped in particular when they were uncertain about where to look while exploring the code base.


Program Comprehension Code Base Graphical View Guide Programmer Evolution Task 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Baddeley, A.: Working Memory: Looking Back and Looking Forward. Neuroscience 4(10), 829–839 (2003)Google Scholar
  2. 2.
    Bragdon, A., Zeleznik, R., Reiss, S.P., Karumuri, S., Cheung, W., Kaplan, J., Coleman, C., Adeputra, F., LaViola Jr., J.J.: Code bubbles: a working set-based interface for code understanding and maintenance. In: Proc. CHI 2010, pp. 2503–2512. ACM, New York (2010)Google Scholar
  3. 3.
    Cherubini, M., Venolia, G., DeLine, R., Ko, A.J.: Let’s Go to the Whiteboard: How and Why Software Developers Use Drawings. In: Proc. CHI 2007, pp. 557–566 (2007)Google Scholar
  4. 4.
    Coblenz, M.J.: JASPER: facilitating software maintenance activities with explicit task representations, TR CMU-CS-06-150, School of Computer Science, Carnegie Mellon University, Pittsburgh, PA (2006)Google Scholar
  5. 5.
    Cox, A., Fisher, M., Muzzerall, J.: User Perspectives on a Visual Aid to Program Comprehension. In: Int’l Workshop on Visualizing Software for Understanding and Analysis(VISSOFT), pp. 70–75 (2005)Google Scholar
  6. 6.
    DeLine, R., Czerwinski, M., Robertson, G.: Easing Program Comprehension by Sharing Navigation Data. In: Proc. VLHCC 2005, pp. 241–248 (2005)Google Scholar
  7. 7.
    DeLine, R., Venolia, G., Rowan, K.: Software development with code maps. ACM Queue 8(7), 10–19Google Scholar
  8. 8.
    Dow, S., MacIntyre, B., Lee, J., Oezbek, C., Bolter, J.D., Gandy, M.: Wizard of Oz Support throughout an Iterative Design Process. IEEE Pervasive Computing, 18–26 (2005)Google Scholar
  9. 9.
    Fjeldstad, R., Hamlen, W.: Application program maintenance-report to our respondents. Tutorial on Software Maintenance, 13–27 (1983)Google Scholar
  10. 10.
    Hendrix, T., Cross II, J., Maghsoodloo, S., McKinney, M.: Do Visualizations Improve Program Comprehensibility? Experiments with Control Structure Diagrams for Java. In: 31st SIGCSE Technical Symp. on Computer Science Education, pp. 382–386 (2000)Google Scholar
  11. 11.
    Kelley, J.F.: An Iterative Design Methodology for User-friendly Natural Language Office Information Applications. ACM TOIS 2(1), 26–41 (1984)MathSciNetCrossRefGoogle Scholar
  12. 12.
    Kersten, M., Murphy, G.C.: Using task context to improve programmer productivity. In: Proceedings of the 14th ACM SIGSOFT International Symposium on Foundations of Software Engineering, Portland, Oregon, USA, November 5-11 (2006)Google Scholar
  13. 13.
    Ko, A.J., Aung, H., Myers, B.A.: Eliciting Design Requirements for Maintenance-Oriented IDEs: A Detailed Study of Corrective and Perfective Maintenance Tasks. In: Proc. ICSE 2005, pp. 126–135 (2005)Google Scholar
  14. 14.
    Ko, A.J., Myers, B.A., Coblenz, M.J., Aung, H.: An Exploratory Study of How Developers Seek, Relate, and Collect Relevant Information during Software Maintenance Tasks. IEEE TSE 32(12), 971–987 (2006)Google Scholar
  15. 15.
    Lee, S., Murphy, G.C., Fritz, T., Allen, M.: How Can Diagramming Tools Help Support Programming Activities. In: Proc. VLHCC 2008, pp. 246–249 (2008)Google Scholar
  16. 16.
    Letovsky, S.: Cognitive Processes in Program Comprehension. In: Proc. ESP 1986, pp. 58–79 (1986)Google Scholar
  17. 17.
    Mayrhauser, A., Vans, A.M.: Comprehension “Processes during Large Scale Maintenance. In: 16th Int’l Conf. on Software Eng., pp. 39–48 (1994)Google Scholar
  18. 18.
    Miller, G.A.: The magical number seven plus or minus two: some limits on our capacity for processing information. Psychological Review 63(2), 81–97 (1956)CrossRefGoogle Scholar
  19. 19.
    Pennington, N.: Stimulus Structures and Mental Representations in Expert Comprehension of Computer Programs. Cognitive Psychology, 295–341 (1987)Google Scholar
  20. 20.
    Petre, M., Blackwell, A.F., Green, T.R.G.: Cognitive Questions in Software Visualization. In: Software Visualization: Programming as a Multi-Media Experience. MIT Press, Cambridge (1997)Google Scholar
  21. 21.
    Reiss, S.: The Paradox of Software Visualization. In: Int’l Workshop on Visualizing Software for Understanding and Analysis (VISSOFT), pp. 59–63 (2005)Google Scholar
  22. 22.
    Safer, I.: Comparing Episodic and Semantic Interfaces for Task Boundary Identification, M.Sc. Thesis (2007)Google Scholar
  23. 23.
    Shaft, T.M., Vessey, I.: The Relevance of Application Domain Knowledge: Characterizing the Computer Program Comprehension Process. JMIS 15(1), 51–78 (1998)Google Scholar
  24. 24.
    Sillito, G.C., Murphy, G.C., De Volder, K.: Questions programmers ask during software evolution tasks. In: Proceedings of the 14th ACM SIGSOFT International Symposium on Foundations of Software Engineering, Portland, Oregon, USA, November 5-11 (2006)Google Scholar
  25. 25.
    Singer, R., Elves, Storey, M.-A.D.: NavTracks: Supporting Navigation in Software Maintenance. In: Proc. ICSM 2005, pp. 325–334 (2005)Google Scholar
  26. 26.
    Sim, S.E., Holt, R.C.: The Ramp-Up Problem in Software Projects: A Case Study of How Software Immigrants Naturalize. In: 20th Int’l Conf. on Software Eng. (ICSE), pp. 361–370 (April 1998)Google Scholar
  27. 27.
    Sinha, V., Karger, D., Miller, R.: Relo: Helping Users Manage Context during Interactive Exploratory Visualization of Large Codebases. In: Proc. VLHCC 2006, pp. 187–194 (2006)Google Scholar
  28. 28.
    Storey, M.-A.D.: Theories, Methods and Tools in Program Comprehension: Past, Present and Future. In: Proc. ICPC 2005, pp. 181–191 (2005)Google Scholar
  29. 29.
    Storey, M.-A.D., Fracchia, F., Müllecr, H.: Cognitive Design Elements to Support the Construction of a Mental Model during Software Visualization. In: Proc. IWPC 1997, pp. 17–28 (1997)Google Scholar
  30. 30.
    Zimmermann, T., Weisgerber, P., Diehl, S., Zeller, A.: Mining Version Histories to Guide Software Changes. In: Proc. ICSE 2004, pp. 563–572 (2004)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  1. 1.Department of Computer ScienceKAISTKorea

Personalised recommendations