Skip to main content

A method for Fortran programs reverse engineering using algebraic specifications

  • Contributed Papers
  • Conference paper
  • First Online:
Recent Trends in Algebraic Development Techniques (WADT 1997)

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

Included in the following conference series:

Abstract

When maintenance is neglected within program development, it is usually done in an empirical way and this leads to program deterioration. To cover up this problem in the legacy systems framework, a broader approach can be followed which first involves reverse engineering. Reverse engineering generates abstract descriptions of a program from its source. These descriptions are used to generate the improved program source (inconsistencies removal, optimization of the source code, updating the documentation), and to assist maintenance tasks.

We present here a reverse engineering method which systematically leads to structural and functional descriptions of a Fortran program using algebraic specifications. We emphasize the problems arisen by the Fortran programming language and by some kind of computing styles (few possibilities for type construction, bad use of global variables, errors within the source code, etc). It is important to notice that this process also leads to the detection of code defaults : it is thus possible to remove them before the code generation following the reverse engineering.

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. A. Audette. Etude de l'applicabilité des spécifications algébriques à un logiciel existant dans le domaine de la CFAO. Master's thesis of Ecole Polytechnique de Montréal, Canada, 1994. (Supervised by C. Choppy).

    Google Scholar 

  2. S. Cherki and C. Choppy. Une méthode de rétroingénierie de programmes Fortran utilisqnt les specifications algébriques. LRI and IRIN Research report, 1997.

    Google Scholar 

  3. E.J. Chikofsky and J.H. Cross. Reverse Engineering and Design Recovery: A Taxonomy. IEEE Software: Maintenance, Reverse Engineering and Design Recovery, 7(1):13–17, 1990.

    Google Scholar 

  4. H. Ehrig and B. Mahr. Fundamentals of Algebraic Specification 1-Equations and Initial semantics. EATCS Monographs on Theoretical Computer Science, Springer Verlag, 1985.

    Google Scholar 

  5. H. Ehrig and B. Mahr. Fundamentals of Algebraic Specification 2-Module specification and constraints. EATCS Monographs on Theoretical Computer Science, Springer Verlag, 1990.

    Google Scholar 

  6. K.B. Gallagher and J.R. Lyle. Using program slicing in software maintenance. IEEE Transactions on Software Engineering, 17(8):751–761, 1991.

    Google Scholar 

  7. J.-F. Girard, R. Koschke, and G. Schied. Comparison of abstract data type and abstract state encapsulation detection techniques for architectural understanding. In Fourth Working Conference on Reverse Engineering, pages 66–75. IEEE Computer Society, 1997.

    Google Scholar 

  8. M.T. Harandi and J.Q. Ning. Knowledge-Based Program Analysis. IEEE Software Maintenance, Reverse Engineering and Design Recovery, 7(1):74–81, 1990.

    Google Scholar 

  9. D.R. Harris, H.B. Reubenstein, and A.S. Yeh. Reverse Engineering to the Architectural Level. In 17th International Conference on Software Engineering, Seattle, Washington, USA. ACM, 1995.

    Google Scholar 

  10. M. Munro. Maintenance is not a soft option. Computer Weekly, pages 28–29, 1989.

    Google Scholar 

  11. C.L. Ong and W.T. Tsai. Class and object extraction from imperative code. Journal of Object-Oriented Programming, 6(1):58–68, 1993.

    Google Scholar 

  12. W.M. Osborne and E.J. Chikofsky. Fitting pieces to the maintenance puzzle. IEEE Software: Maintenance, Reverse Engineering and Design Recovery, 7(1):11–12, 1990.

    Google Scholar 

  13. C. Rich and L.M. Wills. Recognizing a Program's Design: A Graph-Parsing Approach. IEEE Software: Maintenance, Reverse Engineering and Design Recovery, 7(1):82–89, 1990.

    Google Scholar 

  14. A. van Deursen, S. Woods, and A. Quilici. Program plan recognition for year 2000 tools. In Fourth Working Conference on Reverse Engineering, pages 124–133. IEEE Computer Society, 1997.

    Google Scholar 

  15. M. Ward. Abstracting a Specification from Code. Journal of Software Maintenance Research and Practice, 5:101–122, 1993.

    Google Scholar 

  16. M. Ward. Reverse Engineering through Formal Transformation: Knuths 'Polynomial Addition' Algorithm. The Computer Journal, 37(9):795–813, 1994.

    Google Scholar 

  17. M. Weiser. Program slicing. IEEE Transactions on Software Engineering, SE10(4):352–357, 1984.

    Google Scholar 

  18. A.S. Yeh, D.R. Harris, and H.B. Reubenstein. Recovering Abstract Data Types and Object Instances from a Conventional Procedural Language. In 2nd Working Conference on Reverse Engineering, Toronto. IEEE, 1995.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Francesco Parisi Presicce

Rights and permissions

Reprints and permissions

Copyright information

© 1998 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Cherki, S., Choppy, C. (1998). A method for Fortran programs reverse engineering using algebraic specifications. In: Presicce, F.P. (eds) Recent Trends in Algebraic Development Techniques. WADT 1997. Lecture Notes in Computer Science, vol 1376. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-64299-4_32

Download citation

  • DOI: https://doi.org/10.1007/3-540-64299-4_32

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-64299-2

  • Online ISBN: 978-3-540-69719-0

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics