Quantitative program slicing: Separating statements by relevance

Program slicing is a popular but imprecise technique for identifying which parts of a program affect or are affected by a particular value. A major reason for this imprecision is that slicing reports all program statements possibly affected by a value, regardless of how relevant to that value they really are. In this paper, we introduce quantitative slicing (q-slicing), a novel approach that quantifies the relevance of each statement in a slice. Q-slicing helps users and tools focus their attention first on the parts of slices that matter the most. We present two methods for quantifying slices and we show the promise of q-slicing for a particular application: predicting the impacts of changes.

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

[2]  Andy Podgurski,et al.  Measuring the strength of information flows in programs , 2009, TSEM.

[3]  Manu Sridharan,et al.  Thin slicing , 2007, PLDI '07.

[4]  Gregg Rothermel,et al.  Supporting Controlled Experimentation with Testing Techniques: An Infrastructure and its Potential Impact , 2005, Empirical Software Engineering.

[5]  Tarak Goradia Dynamic impact analysis: a cost-effective technique to enforce error-propagation , 1993, ISSTA '93.

[6]  Xiangyu Zhang,et al.  Pruning dynamic slices with confidence , 2006, PLDI '06.

[7]  Andy Podgurski,et al.  The Probabilistic Program Dependence Graph and Its Application to Fault Diagnosis , 2010, IEEE Trans. Software Eng..

[8]  Richard J. Lipton,et al.  Hints on Test Data Selection: Help for the Practicing Programmer , 1978, Computer.

[9]  Raúl A. Santelices,et al.  Predicting Data Dependences for Slice Inspection Prioritization , 2012, 2012 IEEE 23rd International Symposium on Software Reliability Engineering Workshops.

[10]  Alessandro Orso,et al.  Precisely Detecting Runtime Change Interactions for Evolving Software , 2010, 2010 Third International Conference on Software Testing, Verification and Validation.

[11]  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..

[12]  Raúl A. Santelices,et al.  Efficiently monitoring data-flow test coverage , 2007, ASE.

[13]  Raúl A. Santelices,et al.  Probabilistic Slicing for Predictive Impact Analysis , 2010 .

[14]  Shin Yoo,et al.  Search based data sensitivity analysis applied to requirement engineering , 2009, GECCO.

[15]  Jens Krinke,et al.  Effects of context on program slicing , 2006, J. Syst. Softw..