Monadic Dynamic Slicing of Object-Oriented Programs

Bihuan Xu,Junyan Qian,Yingzhou Zhang,Shurong Zhu Zhu
DOI: https://doi.org/10.1109/CyberC.2018.00053
2018-01-01
Abstract:Program slicing is an effective technique for narrowing the focus of attention to the relevant parts of a program. The dynamic slice contains only those statements that actually affect the variables in the slicing criterion, thus it is useful in software debugging, testing and maintenance. This paper proposes a new approach to dynamically slice object-oriented programs (OOPs) based on modular monadic semantics. It abstracts the computation of program slicing as a language-independent object, slice monad transformer, which can be applied to semantic descriptions of the program analyzed in a modular way, forming the corresponding monadic slicing algorithms. Such algorithms allow dynamic slices to be computed directly on abstract syntax, with no needs to explicitly construct intermediate structures such as dependence graphs or to record an execution history. Simultaneously, it could describe the basic object-oriented (OO) features such as encapsulation, inheritance and dynamic binding well. It has excellent reusability and language-flexibility properties comparing with the current dynamic slicing methods for OOPs.
What problem does this paper attempt to address?