Fine Slicing - Theory and Applications for Computation Extraction

Software evolution often requires the untangling of code. Particularly challenging and error-prone is the task of separating computations that are intertwined in a loop. The lack of automatic tools for such transformations complicates maintenance and hinders reuse. We present a theory and implementation of fine slicing, a method for computing executable program slices that can be finely tuned, and can be used to extract non-contiguous pieces of code and untangle loops. Unlike previous solutions, it supports temporal abstraction of series of values computed in a loop in the form of newly-created sequences. Fine slicing has proved useful in capturing meaningful subprograms and has enabled the creation of an advanced computation-extraction algorithm and its implementation in a prototype refactoring tool for Cobol and Java.

[1]  Katsuhisa Maruyama,et al.  Automated method-extraction refactoring by using block-based slicing , 2001, SSR '01.

[2]  Yishai A. Feldman,et al.  Improving slice accuracy by compression of data and control flow paths , 2009, ESEC/FSE '09.

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

[4]  Susan Horwitz,et al.  Automated duplicated code detection and procedure extraction , 2003 .

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

[6]  Daniel Jackson,et al.  A new model of program dependences for reverse engineering , 1994, SIGSOFT '94.

[7]  Alexander Chatzigeorgiou,et al.  Identification of extract method refactoring opportunities for the decomposition of methods , 2011, J. Syst. Softw..

[8]  Yishai A. Feldman,et al.  Re-approaching the refactoring Rubicon , 2008, WRT '08.

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

[10]  Yishai A. Feldman,et al.  Code-motion for API migration: fixing SQL injection vulnerabilities in Java , 2011, WRT '11.

[11]  Susan Horwitz,et al.  Effective, automatic procedure extraction , 2003, 11th IEEE International Workshop on Program Comprehension, 2003..

[12]  Mark Weiser,et al.  Program Slicing , 1981, IEEE Transactions on Software Engineering.

[13]  Ran Ettinger,et al.  Refactoring via Program Slicing and Sliding , 2007, ICSM.

[14]  Susan Horwitz,et al.  Semantics-preserving procedure extraction , 2000, POPL '00.

[15]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

[16]  Jens Krinke,et al.  Barrier slicing and chopping , 2003, Proceedings Third IEEE International Workshop on Source Code Analysis and Manipulation.