Verifying the Concept of Union Slices on Java Programs
Attila Szegedi, Tamás Gergely, Árpád
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.
Keywords: Program analysis, program comprehension, software
maintenance, dynamic program slicing, union slice, Java.