Partial evaluation for program comprehension

Program comprehension is the most tedious and time consuming task of software maintenance, an important phase of the software life cycle. This is particularly true while maintaining scientific application programs that have been written in Fortran for decades and that are still vital in various domains even though more modern languages are used to implement their user interfaces. Very often, programs have evolved as their application domains increase continually and have become very complex due to extensive modifications. This generality in programs is implemented by input variables whose value does not vary in the context of a given application. Thus, it is very interesting for the maintainer to propagate such information, that is to obtain a simplified program, which behaves like the initial one when used according to the restriction. We have adapted partial evaluation for program comprehension. Our partial evaluator performs mainly two tasks: constant propagation and statements simplification. It includes an interprocedural alias analysis. As our aim is program comprehension rather than optimization, there are two main differences with classical partial evaluation. We do not change the original

[1]  Gilles Kahn,et al.  Natural Semantics , 1987, STACS.

[2]  Keith Brian Gallagher,et al.  Using Program Slicing in Software Maintenance , 1991, IEEE Trans. Software Eng..

[3]  Sandrine Blazy,et al.  Formal Specification and Prototyping of a Program Specializer , 1995, TAPSOFT.

[4]  Sandrine Blazy,et al.  Application of formal methods to the development of a software maintenance tool , 1997, Proceedings 12th IEEE International Conference Automated Software Engineering.

[5]  Ian Pyle,et al.  Software Reuse and Reverse Engineering in Practice , 1993 .