Speaker:  Ran Ettinger, IBM Research - Haifa

Title: Program Sliding

Abstract:
This is an extended version of my ECOOP talk on a paper with the same
title, scheduled for 16 June 2012.
As program slicing is a technique for computing a subprogram that
preserves a subset of the original program's functionality, program
sliding is a new technique for computing two such subprograms,
a slice and its complement, the co-slice. A composition of the slice and
co-slice in a sequence is expected to preserve the full functionality of the
original code.
 
The co-slice generated by sliding is designed to reuse the slice's results,
correctly, in order to avoid re-computation causing excessive code duplication.
By isolating coherent slices of code, making them extractable and reusable,
sliding is shown to be an effective step in performing advanced code
refactorings.
 
A practical sliding algorithm, based on the program dependence graph
representation, is presented and evaluated through a manual sliding-based
refactoring experiment on real Java code.