Automated assistance for program restructuring
- 1 July 1993
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Software Engineering and Methodology
- Vol. 2 (3) , 228-269
- https://doi.org/10.1145/152388.152389
Abstract
Maintenance tends to degrade the structure of software, ultimately making maintenance more costly. At times, then, it is worthwhile to manipulate the structure of a system to make changes easier. However, manual restructuring is an error-prone and expensive activity. By separating structural manipulations from other maintenance activities, the semantics of a system can be held constant by a tool, assuring that no errors are introduced by restructuring. To allow the maintenance team to focus on the aspects of restructuring and maintenance requiring human judgment, a transformation-based tool can be provided—based on a model that exploits preserving data flow dependence and control flow dependence—to automate the repetitive, error-prone, and computationally demanding aspects of restructuring. A set of automatable transformations is introduced; their impact on structure is described, and their usefulness is demonstrated in examples. A model to aid building meaning-preserving restructuring transformations is described, and its realization in a functioning prototype tool for restructuring Scheme programs is discussed.Keywords
This publication has 21 references indexed in Scilit:
- Computer-aided vs. manual program restructuringACM SIGSOFT Software Engineering Notes, 1992
- Using program slicing in software maintenanceIEEE Transactions on Software Engineering, 1991
- A program understanding support environmentIBM Systems Journal, 1989
- Laws of programmingCommunications of the ACM, 1987
- The program dependence graph and its use in optimizationACM Transactions on Programming Languages and Systems, 1987
- On convergence toward a database of program transformationsACM Transactions on Programming Languages and Systems, 1985
- A System for Assisting Program TransformationACM Transactions on Programming Languages and Systems, 1982
- Assignment Commands with Array ReferencesJournal of the ACM, 1978
- A Transformation System for Developing Recursive ProgramsJournal of the ACM, 1977
- Flow diagrams, turing machines and languages with only two formation rulesCommunications of the ACM, 1966