Concepedia

TLDR

Program slices aid debugging, testing, maintenance, and program understanding; static slices include all statements that could affect a variable’s value, while dynamic slices—sensitive to specific inputs—offer greater usefulness for debugging and testing. This study investigates dynamic slices, defined as the set of statements that actually influence a variable’s value for a specific program input. We examine various dynamic slicing methods, focusing on the Dynamic Dependence Graph, and propose a Reduced Dynamic Dependence Graph that scales with the number of dynamic slices to mitigate unbounded graph size.

Abstract

Program slices are useful in debugging, testing, maintenance, and understanding of programs. The conventional notion of a program slice, the static slice , is the set of all statements that might affect the value of a given variable occurrence. In this paper, we investigate the concept of the dynamic slice consisting of all statements that actually affect the value of a variable occurrence for a given program input. The sensitivity of dynamic slicing to particular program inputs makes it more useful in program debugging and testing than static slicing. Several approaches for computing dynamic slices are examined. The notion of a Dynamic Dependence Graph and its use in computing dynamic slices is discussed. The Dynamic Dependence Graph may be unbounded in length; therefore, we introduce the economical concept of a Reduced Dynamic Dependence Graph, which is proportional in size to the number of dynamic slices arising during the program execution.

References

YearCitations

Page 1