Skip to main content

A two-phase approach to reverse engineering using formal methods

  • Conference paper
  • First Online:
Formal Methods in Programming and Their Applications

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 735))

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Alfred V. Aho, John E. Hopcroft, and Jeffrey D. Ullman. Data Structures and Algorithms. Addision-Wesley, 1983.

    Google Scholar 

  2. Eric J. Byrne and David A. Gustafson. A Software Re-engineering Process Model. In COMPSAC. ACM, 1992.

    Google Scholar 

  3. Betty H.C. Cheng. Synthesis of Procedural Abstractions from Formal Specifications. In Proceedings of COMPSAC'91: Computer Software and Applications Conference, September 1991.

    Google Scholar 

  4. 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.

    Google Scholar 

  5. Betty H.C. Cheng and Jun Jang Jeng. Formal methods applied to reuse. In Proceedings of the Fifth Workshop in Software Reuse, 1992.

    Google Scholar 

  6. 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.

    Google Scholar 

  7. Elliot J. Chikofsky and James H. Cross II. Reverse Engineering and Design Recovery: A Taxonomy. IEEE Software, January 1990.

    Google Scholar 

  8. Robert G. Fichman and Chris F. Kemerer. Object-Oriented and Conventional Analysis and Design Methodologies: Comparison and Critique. IEEE Computer, October 1992.

    Google Scholar 

  9. Susan L. Gerhart. Applications of formal methods: Developing virtuoso software. IEEE Software, pages 7–10, September 1990.

    Google Scholar 

  10. David Gries. The Science of Programming. Springer-Verlag, 1981.

    Google Scholar 

  11. Anthony Hall. Seven myths of formal methods. IEEE Software, pages 11–19, September 1990.

    Google Scholar 

  12. H.P. Haughton and K. Lano. Objects Revisited. In Conference on Software Maintenance. IEEE, 1991.

    Google Scholar 

  13. 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.

    Google Scholar 

  14. Richard A. Kemmerer. Integrating Formal Methods into the Development Process. IEEE Software, pages 37–50, September 1990.

    Google Scholar 

  15. Robert Kowalski. Predicate logic as a programming language. Information Processing '74, Proceedings of the IFIP Congress, pages 569–574, 1974.

    Google Scholar 

  16. K. Lano and P.T. Breuer. From Programs to Z Specifications. In Z User Workshop. Springer-Verlag, 1989.

    Google Scholar 

  17. Nancy G. Leveson. Formal Methods in Software Engineering. IEEE Transactions on Software Engineering, 16(9):929–930, September 1990.

    Google Scholar 

  18. 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.

    Google Scholar 

  19. Wilma M. Osborne and Elliot J. Chikofsky. Fitting pieces to the maintenance puzzle. IEEE Software, January 1990.

    Google Scholar 

  20. 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.

    Google Scholar 

  21. A. Winblad, S. Edwards, and D. King. Object-Oriented Software. Addison-Wesley, 1990.

    Google Scholar 

  22. Jeannette M. Wing. A Specifier's Introduction to Formal Methods. IEEE Computer, September 1990.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Dines Bjørner Manfred Broy Igor V. Pottosin

Rights and permissions

Reprints 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

Publish with us

Policies and ethics