Program Understanding: Models and Experiments

https://doi.org/10.1016/S0065-2458(08)60543-4Get rights and content

Abstract

Models of how programmers understand code they have not written have been developed and analyzed for many years. These models describe program comprehension at various levels of detail. This papers puts them in perspective, particularly with regard to specialized maintenance tasks versus general code understanding needs. Experiments support some, but not all, comprehension models. We analyze models and their validation experiments to see what the current state of knowledge about program comprehension offers. Open issues point to a need for more experimental studies with experienced software engineers working on specific maintenance tasks and large-scale code in state-of-the-art environments.

References (39)

  • Boehm-DavisA. Deborah et al.

    The Role of Program Structure in Software Maintenance

    International Journal of Man-Machine Studies

    (1992)
  • E. Martha Crosby et al.

    How Do We Read Algorithms? A Case Study.

    IEEE Computer

    (1990)
  • CunniffNancy et al.

    Graphical vs. Textual Representation: An Empirical Study of Novices' Program Comprehension

  • DaviesP. Simon

    The Nature and Development of Programming Plans

    International Journal of Man-Machine Studies

    (1990)
  • SimonDaviesP.

    The Role of Notation and Knowledge Representation in the Determination of Programming Strategy: A Framework for Integrating Models of Programming Behavior

    Cognitive Science

    (1991)
  • SimonDaviesP.

    Models and Theories of Programming Strategy

    International Journal of Man-Machine Studies

    (1993)
  • Gellenbeck M. Edward R. Curtis Cook An Investigation of Procedure and Variable Names as Beacons during Program...
  • Gellenbeck M. Edward R. Curtis Cook Does Signaling Help Professional Programmers Read and Understand Computer Programs?...
  • GuindonRaymonde

    Knowledge Exploited by Experts During Software Systems Design

    International Journal of Man-Machine Studies

    (1990)
  • Cited by (37)

    • Pattern-based framework for modularized software development and evolution robustness

      2011, Information and Software Technology
      Citation Excerpt :

      These legacy systems [38] need to be maintained and evolved due to many factors, including error correction, requirements change, business rules change, structural re-organization, etc. A fundamental problem in maintaining and evolving legacy systems is to understand the subject system [32]. Evolving legacy systems to scalable systems is expected that can greatly reduce the software cost and increase the performance of the essential systems.

    • Document-oriented development of content-intensive applications

      2005, International Journal of Software Engineering and Knowledge Engineering
    View all citing articles on Scopus
    View full text