Program maintenance is done to correct errors in program design and coding and is called corrective maintenance. When it is also done to improve a program's function as requirements change within an environment it is called perfective maintenance.;This paper addresses Weiser's work on program slicing (decomposing a program into the smallest executable portion which contains the variable that is to be changed). It also considers the work of Korel in program debugging using execution traces to assist a programmer in correcting an erroneous program. It discusses some of the work done in the maintenance area concerning program change and applies some of those concepts to perfective maintenance. We propose, here, some of the foundations necessary for the design of a tool for simple computational perfective maintenance. We suggest some heuristics that may be applied and show how, in general, a semi-automated system would endeavor to effect a change in an existing program. We introduce the concept shadow of influence and show how the automated system should minimize its impact when a modification is done. This work should be of interest to researchers in the area of program enhancement, extension and transformation. Expansion of this work could develop a useful tool to assist in the modification of existing programs without direct programmer intervention.
展开▼