ABSTRACT
Program comprehension is a prerequisite for program
changes; what is not understood cannot be safely and
predictably changed. Program change activities are a
foundation of important software engineering processes
like software maintenance, software evolution, and also
agile and iterative software development. These pro-
cesses deal with the enhancements of already existing
programs by adding new functionalities or other new
properties to the program. In aggregate, these processes
consume an overwhelming part of software engineering
resources and program comprehension is the basis of all
these processes.