Abstract
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.
Chapter PDF
References
Abadi, A., Ettinger, R., Feldman, Y.A.: Re-approaching the refactoring Rubicon. In: Second Workshop on Refactoring Tools (October 2008)
Abadi, A., Ettinger, R., Feldman, Y.A.: Fine slicing for advanced method extraction. In: Proc. Third Workshop on Refactoring Tools (October 2009)
Abadi, A., Ettinger, R., Feldman, Y.A.: Improving slice accuracy by compression of data and control flow paths. In: Proc. 7th Joint Mtg. European Software Engineering Conf. (ESEC) and ACM Symp. Foundations of Software Engineering (FSE) (August 2009)
Abadi, A., Feldman, Y.A., Shomrat, M.: Code-motion for API migration: Fixing SQL injection vulnerabilities in Java. In: Proc. Fourth Workshop on Refactoring Tools (May 2011)
Cytron, R., Ferrante, J., Rosen, B.K., Wegman, M.N., Zadeck, F.K.: Efficiently computing static single assignment form and the control dependence graph. ACM Trans. Programming Languages and Systems 13(4), 451–490 (1991)
Ettinger, R.: Refactoring via Program Slicing and Sliding. Ph.D. thesis, University of Oxford, Oxford, UK (2006)
Horwitz, S., Reps, T., Binkley, D.: Interprocedural slicing using dependence graphs. ACM Trans. Program. Lang. Syst. 12(1), 26–60 (1990)
Jackson, D., Rollins, E.J.: A new model of program dependences for reverse engineering. In: Proc. 2nd ACM Symp. Foundations of Software Engineering (FSE), pp. 2–10 (1994)
Komondoor, R.: Automated Duplicated-Code Detection and Procedure Extraction. Ph.D. thesis, University of Wisconsin–Madison (2003)
Komondoor, R., Horwitz, S.: Semantics-preserving procedure extraction. In: Proc. 27th ACM Symp. on Principles of Programming Languages (POPL), pp. 155–169 (2000)
Komondoor, R., Horwitz, S.: Effective automatic procedure extraction. In: Proc. 11th Int’l Workshop on Program Comprehension (2003)
Krinke, J.: Barrier slicing and chopping. In: Proc. 3rd IEEE Int’l Workshop on Source Code Analysis and Manipulation (SCAM) (September 2003)
Lakhotia, A., Deprez, J.C.: Restructuring programs by tucking statements into functions. In: Harman, M., Gallagher, K. (eds.) Special Issue on Program Slicing, Information and Software Technology, vol. 40, pp. 677–689. Elsevier (1998)
Maruyama, K.: Automated method-extraction refactoring by using block-based slicing. In: Proc. Symp. Software Reusability, pp. 31–40 (2001)
Sridharan, M., Fink, S.J., Bodik, R.: Thin slicing. In: Proc. Conf. Programming Lang. Design and Implementation (PLDI), pp. 112–122 (June 2007)
Tsantalis, N., Chatzigeorgiou, A.: Identification of Extract Method refactoring opportunities for the decomposition of methods. J. Systems and Software 84(10), 1757–1782 (2011)
Weiser, M.: Program slicing. IEEE Trans. Software Engineering SE-10(4) (1984)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2012 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Abadi, A., Ettinger, R., Feldman, Y.A. (2012). Fine Slicing. In: de Lara, J., Zisman, A. (eds) Fundamental Approaches to Software Engineering. FASE 2012. Lecture Notes in Computer Science, vol 7212. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-28872-2_32
Download citation
DOI: https://doi.org/10.1007/978-3-642-28872-2_32
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-28871-5
Online ISBN: 978-3-642-28872-2
eBook Packages: Computer ScienceComputer Science (R0)