Flow analysis models for interprocedural program slicing algorithms

We present flow analysis models for dependence graph based algorithms for (a) computing program slices and (b) computing summary information needed for slicing. Our models benefits typical of declarative specification. First, they show that algorithms for solving flow analysis problems may be applied to computing slices and summary information. Second, they make it explicit that SDG-based algorithms presented in the literature are essentially instances of the well-known worklist algorithm for solving flow analysis problems. Third, the models, being declarative, concisely express what is being computed, instead of focussing on how it is being computed. The models are more concise than the algorithms and provide a formal foundation for comparing different algorithms for the same problem. Third, with the existence of tools to generate analyzers from flow models, our models remove the necessity to present algorithms. As a demonstration, we present flow analysis model for a new interprocedural slicing algorithm that combines the computation of summary information and the computation of slice. That the new algorithm is equivalent to previous algorithms can be demonstrated by showing that their flow models are isomorphic.

[1]  Rajiv Gupta,et al.  A practical framework for demand-driven interprocedural data flow analysis , 1997, TOPL.

[2]  Mark Harman,et al.  Amorphous program slicing , 1997, Proceedings Fifth International Workshop on Program Comprehension. IWPC'97.

[3]  Arun Lakhotia,et al.  Improved interprocedural slicing algorithm , 1993 .

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

[5]  Thomas W. Reps,et al.  Precise interprocedural dataflow analysis via graph reachability , 1995, POPL '95.

[6]  Frank Tip,et al.  A survey of program slicing techniques , 1994, J. Program. Lang..

[7]  G. A. Venkatesh,et al.  The semantic approach to program slicing , 1991, PLDI '91.

[8]  Aniello Cimitile,et al.  A Specification Driven Slicing Process for Identifying Reusable Functions , 1996, J. Softw. Maintenance Res. Pract..

[9]  Helmut Seidl,et al.  Propagating Differences: An Efficient New Fixpoint Algorithm for Distributive Constraint Systems , 1998, Nord. J. Comput..

[10]  David W. Binkley,et al.  Interprocedural Constant Propagation using Dependence Graphs and a Data-Flow Model , 1994, CC.

[11]  Keith Gallagher,et al.  Special Issue on Program Slicing , 1998 .

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

[13]  Thomas W. Reps,et al.  Solving Demand Versions of Interprocedural Analysis Problems , 1994, CC.

[14]  Thomas W. Reps,et al.  Demand interprocedural dataflow analysis , 1995, SIGSOFT FSE.

[15]  Bernard Carré,et al.  Information-flow and data-flow analysis of while-programs , 1985, TOPL.

[16]  Joseph Robert Horgan,et al.  Dynamic program slicing , 1990, PLDI '90.

[17]  Andrea De Lucia,et al.  Understanding function behaviors through program slicing , 1996, WPC '96. 4th Workshop on Program Comprehension.

[18]  Mark Harman,et al.  Using program slicing to simplify testing , 1995, Softw. Test. Verification Reliab..

[19]  Thomas W. Reps,et al.  Integrating noninterfering versions of programs , 1989, TOPL.

[20]  Arun Lakhotia DIME: a direct manipulation environment for evolutionary development of software , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[21]  Yoichi Muraoka,et al.  On the Number of Operations Simultaneously Executable in Fortran-Like Programs and Their Resulting Speedup , 1972, IEEE Transactions on Computers.

[22]  Tibor Gyimothy,et al.  An efficient interprocedural slicing method for large programs CIM:: Egy nagy programokra alkalmazhato hatekony interproceduralis adatfolyam-analizis , 1997 .

[23]  Hyeon Soo Kim,et al.  Restructuring Programs through Program Slicing , 1994, Int. J. Softw. Eng. Knowl. Eng..

[24]  Mark David Weiser,et al.  Program slices: formal, psychological, and practical investigations of an automatic program abstraction method , 1979 .

[25]  Mariam Kamkar,et al.  An overview and comparative classification of program slicing techniques , 1995, J. Syst. Softw..

[26]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[27]  Eugene H. Spafford,et al.  Dynamic slicing in the presence of unconstrained pointers , 1991, TAV4.

[28]  Thomas W. Reps,et al.  Speeding up slicing , 1994, SIGSOFT '94.

[29]  Arun Lakhotia Constructing call multigraphs using dependence graphs , 1993, POPL '93.

[30]  Flemming Nielson,et al.  Principles of Program Analysis , 1999, Springer Berlin Heidelberg.

[31]  Arun Lakhotia,et al.  Restructuring programs by tucking statements into functions , 1998, Inf. Softw. Technol..

[32]  Andrea De Lucia,et al.  A Specification Driven Slicing Process for Identifying Reusable Functions , 1996, J. Softw. Maintenance Res. Pract..

[33]  Helmut Seidl,et al.  An Even Faster Solver for General Systems of Equations , 1996, SAS.