Journal of Software Maintenance Research and Practice · 1993 · 52 citations · 19 references
ComputingComputer ScienceFormal MethodsProgramming LanguagesSoftware EngineeringReverse EngineeringSoftware MaintenanceMaintenanceProgram EquivalenceProgram TransformationSoftware Maintenance ProcessSoftware Reverse Engineering
Much of program transformation research focuses on development assistance, yet surveys show that 40–60 % of commercial software effort is devoted to maintenance. This paper reports 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. The tool applies formal program transformation grounded in program‑equivalence theory to extract a high‑level abstract specification from low‑level source code. The prototype successfully reverse‑engineered an example program, producing code that was directly incorporated into the paper.
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.
19
A Transformation System for Developing Recursive Programs
R. M. Burstall, John Darlington · Journal of the ACM · 1977 · 1.3K citations · Full text
Systematic software development using VDM
Sunil Vadera · Data Processing · 1986 · 1.1K citations
Computing, Systems Engineering, Requirements Engineering +11
Program development by stepwise refinement
Niklaus Wirth · Communications of the ACM · 1971 · 959 citations · Full text
Computing, Computer Science, Building Information Modeling +5
The Cornell program synthesizer
Tim Teitelbaum, Thomas Reps · Communications of the ACM · 1981 · 709 citations · Full text
Program development by stepwise refinement
Niklaus Wirth · Communications of the ACM · 1983 · 690 citations · Full text
Computing, Computer Science, Building Information Modeling +5