Interprocedural slicing using dependence graphs
ACM Transactions on Programming Languages and Systems (TOPLAS)
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
The semantic approach to program slicing
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Notions of computation and monads
Information and Computation
Using Program Slicing in Software Maintenance
IEEE Transactions on Software Engineering
The essence of functional programming
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Monad transformers and modular interpreters
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Semantic Lego
Haskell: the craft of functional programming
Haskell: the craft of functional programming
Modular Denotational Semantics for Compiler Construction
ESOP '96 Proceedings of the 6th European Symposium on Programming Languages and Systems
Monads for Functional Programming
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
The program dependence graph in a software development environment
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
A Denotational Interprocedural Program Slicer
WCRE '02 Proceedings of the Ninth Working Conference on Reverse Engineering (WCRE'02)
Modular monadic semantics and compilation
Modular monadic semantics and compilation
A survey of semantic description frameworks for programming languages
ACM SIGPLAN Notices
Modular Monadic Program Slicing
COMPSAC '04 Proceedings of the 28th Annual International Computer Software and Applications Conference - Volume 01
Hi-index | 0.03 |
Program slicing is an important decomposition technique. It has been widely used in many software activities, such as software analyzing, understanding, debugging, testing, and maintenance. The current slicing methods and tools, however, are monolithic, and mainly based on program or system dependence graph. This paper presents a novel formal tool for program slicing. It abstracts the computation of program slicing as a language-independent slice monad transformer, which can be applied to the semantic descriptions of the program in a modular way, forming the corresponding slicing algorithms. Such algorithms allow program slices to be computed directly on abstract syntax, with no need to explicitly construct intermediate structures such as dependence graphs or to record an execution history. It has reusability and language-flexibility properties in comparison with the current program slicing methods/tools.