Program simplification as a means of approximating undecidable propositions

We describe an approach which mixes testing, slicing, transformation and formal verification to investigate speculative hypotheses concerning a program, formulated during program comprehension activity. Our philosophy is that such hypotheses (which are typically undecidable) can, in some sense, be 'answered' by a partly automated system which returns neither 'true' nor 'false' but a program (the 'test program') which computes the answer. The motivation for this philosophy is the way in which, as we demonstrate, static analysis and manipulation technology can be applied to ensure that the resulting test program is significantly simpler than the original program, thereby simplifying the process of investigating the original hypothesis.

[1]  David W. Binkley,et al.  Computing amorphous program slices using dependence graphs , 1999, SAC '99.

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

[3]  Marie-Claude Gaudel,et al.  A Formal Approach to Software Testing , 1991, AMAST.

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

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

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

[7]  Mark Harman,et al.  Analysis of dynamic memory access using amorphous slicing , 1998, Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272).

[8]  Daniel Jackson,et al.  Chopping: A Generalization of Slicing , 1994 .

[9]  Keith H. Bennett,et al.  Formal Methods to Aid the Evolution of Software , 1995, Int. J. Softw. Eng. Knowl. Eng..

[10]  David W. Binkley,et al.  The application of program slicing to regression testing , 1998, Inf. Softw. Technol..

[11]  E. J. Younger,et al.  Bylands: reverse engineering safety-critical systems , 1995, Proceedings of International Conference on Software Maintenance.

[12]  Aniello Cimitile,et al.  Conditioned program slicing , 1998, Inf. Softw. Technol..

[13]  James M. Bieman,et al.  Measuring Functional Cohesion , 1994, IEEE Trans. Software Eng..

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

[15]  Arun Lakhotia Rule-based approach to computing module cohesion , 1993, Proceedings of 1993 15th International Conference on Software Engineering.

[16]  Mark Harman,et al.  A Parallel Algorithm for Static Program Slicing , 1995, Inf. Process. Lett..

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

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

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

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

[21]  William C. Chu,et al.  Code understanding through program transformation for reusable component identification , 1997, Proceedings Fifth International Workshop on Program Comprehension. IWPC'97.

[22]  Linda M. Ott,et al.  The Relationship Between Slices And Module Cohesion , 1989, 11th International Conference on Software Engineering.