A compendium of formal techniques for software maintenance

Software maintenance is an important area in practical software engineering that has been largely overlooked by many theoretical computer scientists. This paper gives an overview of formal techniques developed recently to aid the software maintenance process, and in particular reverse engineering and re-engineering. In the future, it is suggested that specifications, rather than programs, should be maintained. The described work provides a mathematical basis for a large collaborative project, which has also been investigating many other aspects of software maintenance.

[1]  Kevin Lano,et al.  A specification-based approach to maintenance , 1991, J. Softw. Maintenance Res. Pract..

[2]  Kevin Lano Z++, An Object-orientated Extension to Z , 1990, Z User Workshop.

[3]  Mark Phillips CICS/ESA 3.1 Experiences , 1989, Z User Workshop.

[4]  Peter T. Breuer,et al.  From Programs to Z Specifications , 1989, Z User Workshop.

[5]  C. A. R. Hoare,et al.  An Algebraic Approach to Verifiable Compiling Specification and Prototyping of the Procos Level 0 Programming Language , 1990 .

[6]  Peter T. Breuer,et al.  A software maintenance management model based on queueing networks , 1994, J. Softw. Maintenance Res. Pract..

[7]  Kevin Lano,et al.  Object-oriented specification case studies , 1994 .

[8]  Michael Lesk,et al.  Language development tools , 1986 .

[9]  Peter T. Breuer,et al.  A prettier compiler‐compiler: Generating higher‐order parsers in C , 1995, Softw. Pract. Exp..

[10]  Friedrich Ludwig Bauer,et al.  The wide spectrum language CIP-L , 1985 .

[11]  Norman F. Schneidewind,et al.  The State of Software Maintenance , 1987, IEEE Transactions on Software Engineering.

[12]  Peter T. Breuer,et al.  Creating specifications from code: Reverse-engineering techniques , 1991, J. Softw. Maintenance Res. Pract..

[13]  Friedrich L. Bauer,et al.  The Munich Project CIP: Volume I: The Wide Spectrum Language CIP-L , 1985 .

[14]  Jonathan P. Bowen From programs to object code and back again using logic programming: Compilation and decompilation , 1993, J. Softw. Maintenance Res. Pract..

[15]  Kevin Lano,et al.  Integrating formal and structured methods in reverse-engineering , 1993, [1993] Proceedings Working Conference on Reverse Engineering.

[16]  Peter T. Breuer,et al.  Occam's Razor: The Cutting Edge of Parser Technology , 1992 .

[17]  Donald I. Good,et al.  Mechanical proofs about computer programs , 1984, Philosophical Transactions of the Royal Society of London. Series A, Mathematical and Physical Sciences.

[18]  Peter T. Breuer,et al.  Reverse-engineering Cobol via formal methods , 1993, J. Softw. Maintenance Res. Pract..

[19]  Robert E. Shostak,et al.  On the SUP-INF Method for Proving Presburger Formulas , 1977, JACM.

[20]  Peter T. Breuer,et al.  The PRECC Compiler Compiler , 1993 .

[21]  Kevin Lano,et al.  Reasoning and Refinement in Object-Oriented Specification Languages , 1992, ECOOP.

[22]  Peter T. Breuer,et al.  Decompilation: the enumeration of types and grammars , 1994, TOPL.

[23]  Ronald J. Norman,et al.  CASE '90 : Fourth International Workshop on Computer-Aided Software Engineering : advance working papers : Irvine, California, 5-8 December 1990 , 1990 .

[24]  Jonathan P. Bowen Select Z Bibliography , 1997, ZUM.

[25]  J. Michael Spivey,et al.  The Z notation - a reference manual , 1992, Prentice Hall International Series in Computer Science.

[26]  Friedrich L. Bauer,et al.  The Munich Project CIP , 1988, Lecture Notes in Computer Science.

[27]  Keith H. Bennett European special interest group in software maintenance , 1991, J. Softw. Maintenance Res. Pract..

[28]  A. Cohn The notion of proof in hardware verification , 1989 .

[29]  M.M. Lehman,et al.  Programs, life cycles, and laws of software evolution , 1980, Proceedings of the IEEE.

[30]  Kevin Lano,et al.  Reuse and Adaptation of Z Specifications , 1992, Z User Workshop.

[31]  Keith H. Bennett,et al.  Automated support of software maintenance , 1991 .

[32]  H. J. van Zuylen The REDO compendium: reverse engineering for software maintenance , 1993 .

[33]  Kevin Lano,et al.  Reverse Engineering and Software Maintenance: A Practical Approach , 1993 .

[34]  P. Couturier,et al.  ATES: An Integrated System for Software Development and Verification , 1990 .

[35]  S. Wade,et al.  Software maintenance-Cinderella is still not getting to the ball , 1988 .

[36]  Peter T. Breuer,et al.  Understanding programs through formal methods , 1993 .

[37]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[38]  Jonathan P. Bowen From Programs to Object Code using Logic and Logic Programming , 1991, Code Generation.

[39]  Peter T. Breuer,et al.  The REDO Project: Final Report , 1991 .