Abstract
Reverse engineering of program code is the process of constructing a higher level abstraction of an implementation in order to facilitate the understanding of a system that may be in a “legacy” or “geriatric” state. Changing architectures and improvements in programming methods, including formal methods in software development and object-oriented programming, have prompted a need to reverse engineer and re-engineer program code. This paper presents a two-phase approach to reverse engineering, the results of which can be used to guide the re-implementation of an object-oriented version of the system. The first phase abstracts formal specifications from program code, while the second phase constructs candidate objects from the formal specifications obtained from the first phase.
Preview
Unable to display preview. Download preview PDF.
References
Alfred V. Aho, John E. Hopcroft, and Jeffrey D. Ullman. Data Structures and Algorithms. Addision-Wesley, 1983.
Eric J. Byrne and David A. Gustafson. A Software Re-engineering Process Model. In COMPSAC. ACM, 1992.
Betty H.C. Cheng. Synthesis of Procedural Abstractions from Formal Specifications. In Proceedings of COMPSAC'91: Computer Software and Applications Conference, September 1991.
Betty H.C. Cheng and Gerald C. Gannod. Abstraction of Formal Specifications from Program Code. In Proceedings for the IEEE 3rd International Conference on Tools for Artificial Intelligence. IEEE, 1991.
Betty H.C. Cheng and Jun Jang Jeng. Formal methods applied to reuse. In Proceedings of the Fifth Workshop in Software Reuse, 1992.
Betty Hsiao-Chih Cheng. Synthesis of Procedural and Data Abstractions. PhD thesis, University of Illinois at Urbana-Champaign, 1304 West Springfield, Urbana, Illinois 61801, August 1990. Tech Report UIUCDCS-R-90-1631.
Elliot J. Chikofsky and James H. Cross II. Reverse Engineering and Design Recovery: A Taxonomy. IEEE Software, January 1990.
Robert G. Fichman and Chris F. Kemerer. Object-Oriented and Conventional Analysis and Design Methodologies: Comparison and Critique. IEEE Computer, October 1992.
Susan L. Gerhart. Applications of formal methods: Developing virtuoso software. IEEE Software, pages 7–10, September 1990.
David Gries. The Science of Programming. Springer-Verlag, 1981.
Anthony Hall. Seven myths of formal methods. IEEE Software, pages 11–19, September 1990.
H.P. Haughton and K. Lano. Objects Revisited. In Conference on Software Maintenance. IEEE, 1991.
Jun jang Jeng and Betty H.C. Cheng. Using Automated Reasoning to Determine Software Reuse. International Journal of Software Engineering and Knowledge Engineering, 2(4):523–546, December 1992.
Richard A. Kemmerer. Integrating Formal Methods into the Development Process. IEEE Software, pages 37–50, September 1990.
Robert Kowalski. Predicate logic as a programming language. Information Processing '74, Proceedings of the IFIP Congress, pages 569–574, 1974.
K. Lano and P.T. Breuer. From Programs to Z Specifications. In Z User Workshop. Springer-Verlag, 1989.
Nancy G. Leveson. Formal Methods in Software Engineering. IEEE Transactions on Software Engineering, 16(9):929–930, September 1990.
Sying-Syang Liu and Norman Wilde. Identifying Objects in a Conventional Procedural Language: An Example of Data Design Recovery. In Conference on Software Maintenance. IEEE, 1990.
Wilma M. Osborne and Elliot J. Chikofsky. Fitting pieces to the maintenance puzzle. IEEE Software, January 1990.
M. Ward, F.W. Calliss, and M. Munro. The maintainer's assistant. In Proceedings Conference on Software Maintenance, pages 307–315, Miami, Florida, October 1989. IEEE.
A. Winblad, S. Edwards, and D. King. Object-Oriented Software. Addison-Wesley, 1990.
Jeannette M. Wing. A Specifier's Introduction to Formal Methods. IEEE Computer, September 1990.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1993 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Gannod, G.C., Cheng, B.H.C. (1993). A two-phase approach to reverse engineering using formal methods. In: Bjørner, D., Broy, M., Pottosin, I.V. (eds) Formal Methods in Programming and Their Applications. Lecture Notes in Computer Science, vol 735. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0039718
Download citation
DOI: https://doi.org/10.1007/BFb0039718
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-57316-6
Online ISBN: 978-3-540-48056-3
eBook Packages: Springer Book Archive