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.

To avoid excessive code duplication, the co-slice generated by a sliding algorithm is designed to reuse the slice's results, correctly, in contrast to the re-computation performed by the complementary code generated by the best previous approach, called tucking.

A program sliding algorithm is presented along with its application in building refactoring tools. The ongoing construction of sliding-based refactoring tools for Java in the open-source project WALA, leveraging its Java slicer and integration into Eclipse, is reported.

By: Ran Ettinger

Published in: H-0290 in 2010


This Research Report is available. This report has been submitted for publication outside of IBM and will probably be copyrighted if accepted for publication. It has been issued as a Research Report for early dissemination of its contents. In view of the transfer of copyright to the outside publisher, its distribution outside of IBM prior to publication should be limited to peer communications and specific requests. After outside publication, requests should be filled only by reprints or legally obtained copies of the article (e.g., payment of royalties). I have read and understand this notice and am a member of the scientific community outside or inside of IBM seeking a single copy only.


Questions about this service can be mailed to .