Sliced Slices: Separating Data and Control Influences
This addresses the issue of slice size for developers and analysts in program analysis, though it is incremental as it refines an existing technique.
The paper tackled the problem of conventional backward slices being too large (about 25% of program size) for practical use in program understanding and debugging by distinguishing between data and control influences, resulting in data slices smaller than 10% of program size in over 50% of cases.
Backward slicing has been used extensively in program understanding, debugging and scaling up of program analysis. For large programs, the size of the conventional backward slice is about 25% of the program size. This may be too large to be useful. Our investigations reveal that in general, the size of a slice is influenced more by computations governing the control flow reaching the slicing criterion than by the computations governing the values relevant to the slicing criterion. We distinguish between the two by defining data slices and control slices both of which are smaller than the conventional slices which can be obtained by combining the two. This is useful because for many applications, the individual data or control slices are sufficient. Our experiments show that for more than 50% of cases, the data slice is smaller than 10% of the program in size. Besides, the time to compute data or control slice is comparable to that for computing the conventional slice.