Abstracting a specification from code
- 1 January 1993
- journal article
- Published by Wiley in Journal of Software Maintenance: Research and Practice
- Vol. 5 (2) , 101-122
- https://doi.org/10.1002/smr.4360050204
Abstract
Much of the work on developing program transformation systems has concentrated on systems to assist in program development. However, the four separate surveys carried out between 1977 and 1990 (Foster and Kiekuth, 1990; Lientz and Swanson, 1980; Morton, 1988; Nosek and Palvia, 1990), summarized in Foster (1991), show that between 40% and 60% of all commercial software effort is devoted to software maintenance rather than the development of new systems. In this paper we describe a joint project between the University of Durham and CSM Ltd to develop a method and tool for reverse‐engineering and software maintenance based on program transformation theory. We present an example which illustrates how such a tool can extract a high‐level abstract specification from the low‐level source code of a program by a process of formal program transformation based on a theory of program equivalence (Ward, 1989a). All the code‐level reverse‐engineering of the example program was carried out on the prototype tool with the resulting code pasted directly into the paper.This publication has 13 references indexed in Scilit:
- Software maintenance management: Changes in the last decadeJournal of Software Maintenance: Research and Practice, 1990
- Formal program construction by transformations-computer-aided, intuition-guided programmingIEEE Transactions on Software Engineering, 1989
- Implications of automated restructuring of COBOLACM SIGPLAN Notices, 1987
- Interactive programming environmentsACM SIGSOFT Software Engineering Notes, 1984
- Program Transformation SystemsACM Computing Surveys, 1983
- A System for Assisting Program TransformationACM Transactions on Programming Languages and Systems, 1982
- The Cornell program synthesizerCommunications of the ACM, 1981
- Syntactic source to source transforms and program manipulationCommunications of the ACM, 1979
- A Transformation System for Developing Recursive ProgramsJournal of the ACM, 1977
- Program development by stepwise refinementCommunications of the ACM, 1971