An automatic interprocedural analysis for the understanding of scientific application programs
This paper reports on an approach for improving the understanding of old programs which have become very complex due to numerous extensions. We have adapted partial evaluation techniques for program understanding. These techniques mainly use propagation through statements and simplifications of statements.
We focus here on the automatic interprocedural analysis and we specify both tasks (propagation and simplification) for call-statements, in terms of inference rules with notations taken from the formal specification languages B and VDM.
We describe how we have implemented that interprocedural analysis in a tool, and how it can be used to improve program understanding. The difficulty of that analysis is due to the lack of well defined interprocedural mechanisms and the complexity of visibility rules in Fortran.
Keywordssoftware maintenance of legacy code program understanding program specialization interprocedural analysis inference rules natural semantics formal specification Fortran
Unable to display preview. Download preview PDF.
- 1.J.R.Abrial The B method CNAM lecture notes, 1994Google Scholar
- 2.L.O. Andersen Program analysis and specialization for the C programming language Ph.D.Thesis, Univ. of Copenhagen, Denmark, DIKU rep. 94/19, 1994.Google Scholar
- 3.R.Baier, R.Glück, R.Zöchling Partial evaluation of numerical programs in Fortran ACM SIGPLAN Workshop PEPM, Melbourne, 1994, 119–132.Google Scholar
- 4.S.Blazy, P.Facon Partial evaluation as an aid to the comprehension of Fortran programs 2nd IEEE Workshop on Program Comprehension, Capri, Italy, July 1993, 46–54.Google Scholar
- 5.S.Blazy, P.Facon SFAC: a tool for program comprehension by specialization 3rd IEEE Workshop on Program Comprehension, Washington D.C., November 1994, 162–167.Google Scholar
- 6.S. Blazy, P. Facon Formal specification and prototyping of a program specializer TAPSOFT'95, Aarhus, Denmark, May 1995, LNCS 915, 666–680.Google Scholar
- 7.Coen-Porisini, F. De Paoli, C. Ghezzi, D. Mandrioli Software specializaton via symbolic execution IEEE Trans. on Soft. Engineering, 17(9), 1991, 884–899.Google Scholar
- 8.FORTRAN. ANSI standard X3.9, 1978.Google Scholar
- 9.M.Haziza, J.F.Voidrot, E.Minor, L.Pofelski, S.Blazy Software maintenance: an analysis of industrial needs and constraints IEEE Conf. on Soft. Maintenance, Orlando, 11/1992.Google Scholar
- 10.C.B.Jones Systematic development using VDM 2nd eds., Prentice-Hall, 1990.Google Scholar
- 11.N.D.Jones, C.K.Gomard, P.Sestoft Partial evaluation and automatic program generation Prentice-Hall, 1993.Google Scholar
- 12.G.Kahn, Natural semantics Proc. of STACS'87, LNCS, vol.247, March 1987.Google Scholar
- 13.H.Parisot, F.Paumier Aide à la compréhension et à la maintenance du logiciel: calculs inter-procéduraux pour la maintenance de programmes MSc. thesis, IIE-CNAM, 06/95.Google Scholar
- 14.S.Tilley, K.Wong, M.A.Storey, H.Müller Programmable reverse engineering Int. Journal of Soft.Eng.&Knowledge Eng., 4(4), December 1994, 501–520.Google Scholar
- 15.H.J.Van Zuylen Understanding in reverse engineering. REDO handbook, Wiley, 09/92.Google Scholar
- 16.G.A. Venkatesh The semantic approach to program slicing Proc. ACM SIGPLAN Conf. on Programming Languages Design and Implementation, Toronto, Canada, 1991, ACM SIGPLAN Notices, 26(6), 107–119.Google Scholar
- 17.A. Von Maryhauser, A.M. Vans Dynamic code cognition behaviors for large scale code 3rd IEEE Workshop on Program Comprehension, Washington D.C., November 1994, 74–81.Google Scholar
- 18.M. Weiser Program slicing IEEE Trans. on Soft. Engineering, 10(4), 352–357, 1984.Google Scholar
- 19.N.Wilde, M.C.Scully Software reconnaissance: mapping program features to code Software maintenance research and practice, vol. 7, 1995, 49–62.Google Scholar