Advertisement

Fine Slicing

Theory and Applications for Computation Extraction
  • Aharon Abadi
  • Ran Ettinger
  • Yishai A. Feldman
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7212)

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.

Keywords

Operational Semantic Original Program Control Dependence Exit Node Temporal Abstraction 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

References

  1. 1.
    Abadi, A., Ettinger, R., Feldman, Y.A.: Re-approaching the refactoring Rubicon. In: Second Workshop on Refactoring Tools (October 2008)Google Scholar
  2. 2.
    Abadi, A., Ettinger, R., Feldman, Y.A.: Fine slicing for advanced method extraction. In: Proc. Third Workshop on Refactoring Tools (October 2009)Google Scholar
  3. 3.
    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)Google Scholar
  4. 4.
    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)Google Scholar
  5. 5.
    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)CrossRefGoogle Scholar
  6. 6.
    Ettinger, R.: Refactoring via Program Slicing and Sliding. Ph.D. thesis, University of Oxford, Oxford, UK (2006)Google Scholar
  7. 7.
    Horwitz, S., Reps, T., Binkley, D.: Interprocedural slicing using dependence graphs. ACM Trans. Program. Lang. Syst. 12(1), 26–60 (1990)CrossRefGoogle Scholar
  8. 8.
    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)Google Scholar
  9. 9.
    Komondoor, R.: Automated Duplicated-Code Detection and Procedure Extraction. Ph.D. thesis, University of Wisconsin–Madison (2003)Google Scholar
  10. 10.
    Komondoor, R., Horwitz, S.: Semantics-preserving procedure extraction. In: Proc. 27th ACM Symp. on Principles of Programming Languages (POPL), pp. 155–169 (2000)Google Scholar
  11. 11.
    Komondoor, R., Horwitz, S.: Effective automatic procedure extraction. In: Proc. 11th Int’l Workshop on Program Comprehension (2003)Google Scholar
  12. 12.
    Krinke, J.: Barrier slicing and chopping. In: Proc. 3rd IEEE Int’l Workshop on Source Code Analysis and Manipulation (SCAM) (September 2003)Google Scholar
  13. 13.
    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)Google Scholar
  14. 14.
    Maruyama, K.: Automated method-extraction refactoring by using block-based slicing. In: Proc. Symp. Software Reusability, pp. 31–40 (2001)Google Scholar
  15. 15.
    Sridharan, M., Fink, S.J., Bodik, R.: Thin slicing. In: Proc. Conf. Programming Lang. Design and Implementation (PLDI), pp. 112–122 (June 2007)Google Scholar
  16. 16.
    Tsantalis, N., Chatzigeorgiou, A.: Identification of Extract Method refactoring opportunities for the decomposition of methods. J. Systems and Software 84(10), 1757–1782 (2011)CrossRefGoogle Scholar
  17. 17.
    Weiser, M.: Program slicing. IEEE Trans. Software Engineering SE-10(4) (1984)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Aharon Abadi
    • 1
  • Ran Ettinger
    • 1
  • Yishai A. Feldman
    • 1
  1. 1.IBM ResearchHaifaIsrael

Personalised recommendations