with Dennis Smith and Liam O'Brien Dennis Smith and Liam O'Brien are senior members of the technical staff at the Software Engineering Institute at Carnegie Mellon University.
Studies estimate that between 50 percent and 90 percent of software maintenance involves developing an understanding of the software being maintained [Tilley 96]. Given these high costs, it makes sense to understand the processes used, the artifacts produced, and the level of understanding achieved. Program understanding involves building mental models of the underlying software at various abstraction levels, ranging from models of the code to models of the underlying application domain. These models are then used to maintain, evolve , and reengineer the legacy system. In this chapter, we discuss the context in which program understanding is applied, the forms of legacy system transformations that may be used, and the program comprehension techniques that support these transformations. We then describe architectural reconstruction in detail. We end this chapter by discussing how tools can support program understanding and common issues that may arise. |