W.G. Griswold, D. Notkin, "Computer-Aided vs. Manual Program Restructuring", ACM SIGSOFT Software Engineering Notes, Vol. 17, No. 1, pp. 33-41, January 1992.


Restructuring a software system as it evolves promises to reduce associated maintenance costs. To simplify restructuring, the authors have developed a tool that preserves the meaning of a program as the engineer applies structural transformations. To help evaluate the prototype tool and its underlying approach, they ran an experiment to compare how people using standard editing tools restructure a program against the computer-aided style that their tool supports. They drew three conclusions from the experiment. First, the subjects generally used a mix of copy/paste and cut/paste editing paradigms. Second, most of the subjects made mistakes, including simple syntactic errors and semantic errors (such as not updating the call site after modifying a function definition); the tool avoids errors by the engineer using compensation or by signalling an error. Third, manual restructuring tends to be haphazard, with engineers handling the order of changes, testing, etc. in inconsistent and potentially error-prone ways; by separating restructuring from functional maintenance and by ensuring preservation of meaning during restructuring, the approach can make the maintenance process more orderly.