Software Maintenance: Concepts And Practice, Second Edition

Programmers have become part historian, part detective and part clairvoyant
Corbi ([69], p. 295)
This chapter aims to
Explain the role of program understanding in maintenance activities.
Discuss the aims of program understanding.
Explain the comprehension needs of members of a maintenance project.
Discuss comprehension process models and their application to maintenance tasks.
Discuss the role of the mental model in understanding programs.
Discuss the different comprehension strategies and explain the differences.
Discuss the effect of each strategy on various aspects of maintenance activities.
Discuss the factors that impact on source code understanding.
Give a foundation for the selection of suitable tools, techniques and methods.
Part I discussed the types of change to which a software system can be subjected: corrective (due to defects); adaptive (due to changes in its environment); perfective (to accommodate new requirements); and preventive (to facilitate future maintenance work). It also looked at the framework within which change may be implemented effectively. However, an area not yet touched upon, but which is fundamental to an effective change process, is understanding. Prior to implementing any change, it is essential to understand the software product as a whole and the programs affected by the change in particular [49, 69, 276, 220]. During maintenance, this involves:
having a general knowledge of what the software system does and how it relates to its environment;
identifying where in the system changes are to be effected; and
having an in-depth knowledge of how the parts to...