Advertisement

A method for Fortran programs reverse engineering using algebraic specifications

  • Sophie Cherki
  • Christine Choppy
Contributed Papers
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1376)

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.

Keywords

reverse engineering algebraic specification maintenance typing legacy systems 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 10.
    M. Munro. Maintenance is not a soft option. Computer Weekly, pages 28–29, 1989.Google Scholar
  11. 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. 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. 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. 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. 15.
    M. Ward. Abstracting a Specification from Code. Journal of Software Maintenance Research and Practice, 5:101–122, 1993.Google Scholar
  16. 16.
    M. Ward. Reverse Engineering through Formal Transformation: Knuths 'Polynomial Addition' Algorithm. The Computer Journal, 37(9):795–813, 1994.Google Scholar
  17. 17.
    M. Weiser. Program slicing. IEEE Transactions on Software Engineering, SE10(4):352–357, 1984.Google Scholar
  18. 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

Copyright information

© Springer-Verlag Berlin Heidelberg 1998

Authors and Affiliations

  • Sophie Cherki
    • 1
  • Christine Choppy
    • 2
  1. 1.LRI, C.N.R.S. U.R.A. 410 & Université de Paris-SudOrsay CedexFrance
  2. 2.IRIN, Université de Nantes & Ecole CentraleNantes Cedex 03France

Personalised recommendations