Verifying the Concept of Union Slices on Java Programs

Attila Szegedi, Tamás Gergely, Árpád Beszédes, Tibor Gyimóthy and Gabriella Tóth
Static program slicing is often proposed for software maintenance-related tasks. Due to different causes static slices are in many cases overly conservative and hence too large to reduce the program-part of interest meaningfully. In this paper we further investigate the concept of union slices, which are defined as the unions of dynamic slices computed for the same (static) slicing criteria, but for different executions of the program. We verify on real-world Java programs their usefulness as a replacement to static slices. For this we investigate the sizes of a number of backward and forward dynamic and union slices, also by comparing them to the corresponding static slices. Our results show that the union slices are precise enough (backward slices are 5-20% of the program and forward slices are 5-10%, the corresponding static slices being 25-45%), and that with the saturation of the overall coverage given many different executions, union slices also reach a steady level and typically do not grow further by adding new test cases.

Program analysis, program comprehension, software maintenance, dynamic program slicing, union slice, Java.