Forward slices are smaller than backward slices

This paper presents evidence from two empirical studies which show that forward slices will tend to be smaller than backward slices and discusses the importance of this result for work on source code analysis and manipulation. The difference in forward and backward slice size distributions stems from the way in which control dependence and data dependence affect slice size. The paper explains this claim in detail and supports it with empirical evidence. The empirical evidence comes from a further study which uses a restricted form of slicing that isolates the effects due to control and data dependence. This study shows that it is the inherent difference between forward and backward control dependence that leads to the difference in slice size distributions for forward and backward slicing. The results from all three empirical studies are shown to be strongly statistically significant.

[1]  Mark Harman,et al.  An empirical study of predicate dependence levels and trends , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[2]  Dennis de Champeaux,et al.  Extending the statechart formalism: event scheduling & disposition , 1995, OOPSLA.

[3]  Lars Ole Andersen,et al.  Program Analysis and Specialization for the C Programming Language , 2005 .

[4]  David W. Binkley,et al.  A large-scale empirical study of forward and backward static slice size and context sensitivity , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

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

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

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

[8]  Mark Harman,et al.  Results from a large-scale study of performance optimization techniques for source code analyses based on graph reachability algorithms , 2003, Proceedings Third IEEE International Workshop on Source Code Analysis and Manipulation.

[9]  Aniello Cimitile,et al.  Identifying reusable functions using specification driven program slicing: a case study , 1995, Proceedings of International Conference on Software Maintenance.

[10]  Donglin Liang,et al.  Efficient points-to analysis for whole-program analysis , 1999, ESEC/FSE-7.

[11]  Linda M. Ott,et al.  The relationship between slices and module cohesion , 1989, ICSE '89.

[12]  Aniello Cimitile,et al.  Qualifying reusable functions using symbolic execution , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

[13]  Jong-Deok Choi,et al.  Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects , 1993, POPL '93.

[14]  Markus Mock,et al.  Improving program slicing with dynamic points-to data , 2002, SIGSOFT '02/FSE-10.

[15]  Jens Krinke,et al.  Evaluating context-sensitive slicing and chopping , 2002, International Conference on Software Maintenance, 2002. Proceedings..

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

[17]  Erik Ruf,et al.  Context-insensitive alias analysis reconsidered , 1995, PLDI '95.

[18]  Mark Harman,et al.  An overview of program slicing , 2001, Softw. Focus.

[19]  Sue Black,et al.  Computing ripple effect for software maintenance , 2001, J. Softw. Maintenance Res. Pract..

[20]  William G. Griswold,et al.  Effective whole-program analysis in the presence of pointers , 1998, SIGSOFT '98/FSE-6.

[21]  Alessandro Orso,et al.  Incremental slicing based on data-dependences types , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[22]  Mark Harman,et al.  A survey of empirical results on program slicing , 2004, Adv. Comput..

[23]  Monica S. Lam,et al.  Efficient context-sensitive pointer analysis for C programs , 1995, PLDI '95.

[24]  Alessandro Orso,et al.  Effects of pointers on data dependences , 2001, Proceedings 9th International Workshop on Program Comprehension. IWPC 2001.

[25]  Bjarne Steensgaard,et al.  Points-to analysis in almost linear time , 1996, POPL '96.

[26]  Andrea De Lucia,et al.  Program slicing: methods and applications , 2001, Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation.

[27]  David Callahan,et al.  The program summary graph and flow-sensitive interprocedual data flow analysis , 1988, PLDI '88.

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

[29]  Laurie J. Hendren,et al.  Context-sensitive interprocedural points-to analysis in the presence of function pointers , 1994, PLDI '94.