Algorithms for program dependence graph production

One of the greatest difficulties of setting up a software maintenance workbench is the definition of an internal representation of programs from which different external representations can be automatically constructed. This is because many techniques and tools exist that support and automate individual maintenance activities, and each of these techniques and tools operates on its own specific representation of the program. This paper presents our program representation, called F(p), and shows how it can be used as an index to access program information. This allows many existing representations to be derived from F(p). The paper presents two novel algorithms to derive two existing program representations, namely the control dependence graph and the sets of uses that can be reached from each variable definition (which provide the additional information needed to draw the program dependence graph).

[1]  Brian A. Malloy,et al.  A Unified Interprocedural Program Representation for a Maintenance Environment , 1993, IEEE Trans. Software Eng..

[2]  Prashant Palvia,et al.  Software maintenance management: Changes in the last decade , 1990, J. Softw. Maintenance Res. Pract..

[3]  Stephen S. Yau,et al.  Some Stability Measures for Software Maintenance , 1980, IEEE Trans. Software Eng..

[4]  Shawn A. Bohner,et al.  Impact analysis-Towards a framework for comparison , 1993, 1993 Conference on Software Maintenance.

[5]  Malcolm Munro,et al.  The impact analysis task in software maintenance: a model and a case study , 1994, Proceedings 1994 International Conference on Software Maintenance.

[6]  Gregg Rothermel,et al.  A framework for evaluating regression test selection techniques , 1994, Proceedings of 16th International Conference on Software Engineering.

[7]  Aniello Cimitile,et al.  Software salvaging based on conditions , 1994, Proceedings 1994 International Conference on Software Maintenance.

[8]  Barry Eaglestone,et al.  Software development: two approaches to animation of Z specifications using Prolog , 1992, Softw. Eng. J..

[9]  Jean Zoren Werner Hartmann,et al.  Techniques for selective revalidation , 1990, IEEE Software.

[10]  Hareton Leung,et al.  A study of integration testing and software regression at the integration level , 1990, Proceedings. Conference on Software Maintenance 1990.

[11]  Gregg Rothermel,et al.  A safe, efficient algorithm for regression test selection , 1993, 1993 Conference on Software Maintenance.

[12]  Karl J. Ottenstein,et al.  The program dependence graph in a software development environment , 1984 .

[13]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1990, TOPL.

[14]  Stephen S. Yau,et al.  An Integrated Life-Cycle Model for Software Maintenance , 1988, IEEE Trans. Software Eng..

[15]  Aniello Cimitile,et al.  Reverse engineering processes, design document production, and structure charts , 1992, J. Syst. Softw..

[16]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[17]  Aniello Cimitile,et al.  Complexity in program schemes: the characteristic polynomial , 1983, SIGP.

[18]  Darrel C. Ince An introduction to discrete mathematics and formal system specification , 1988 .

[19]  Lori A. Clarke,et al.  A Formal Model of Program Dependences and Its Implications for Software Testing, Debugging, and Maintenance , 1990, IEEE Trans. Software Eng..

[20]  Robin W. Whitty,et al.  Axiomatic Approach to Software Metrication Through Program Decomposition , 1986, Comput. J..

[21]  Norman Fenton,et al.  Metrics and software structure , 1987 .

[22]  Malcolm Munro,et al.  Understanding C programs using the Combined C Graph representation , 1994, Proceedings 1994 International Conference on Software Maintenance.

[23]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.

[24]  Brian A. Malloy,et al.  Data flow testing of parallelized code , 1992, Proceedings Conference on Software Maintenance 1992.

[25]  Joseph Robert Horgan,et al.  Incremental regression testing , 1993, 1993 Conference on Software Maintenance.

[26]  Aniello Cimitile,et al.  Reverse engineering: Algorithms for program graph production , 1991, Softw. Pract. Exp..

[27]  G. Cantone,et al.  Testability and path testing strategies , 1987, Microprocess. Microprogramming.

[28]  Matthew S. Hecht,et al.  Flow Analysis of Computer Programs , 1977 .

[29]  Aniello Cimitile,et al.  Post-maintenance testing based on path change analysis , 1988, Proceedings. Conference on Software Maintenance, 1988..

[30]  E. B. Swanson,et al.  Software maintenance management , 1980 .