The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Dependence analysis for pointer variables
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
Interprocedural slicing using dependence graphs
ACM Transactions on Programming Languages and Systems (TOPLAS)
IEEE Transactions on Software Engineering
Dependence-based program analysis
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
A framework for generalized control dependence
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Static slicing of threaded programs
Proceedings of the 1998 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Advanced compiler design and implementation
Advanced compiler design and implementation
Model checking
Bandera: extracting finite-state models from Java source code
Proceedings of the 22nd international conference on Software engineering
Slicing Software for Model Construction
Higher-Order and Symbolic Computation
Communication and Concurrency
Slicing Programs with Arbitrary Control-flow
AADEBUG '93 Proceedings of the First International Workshop on Automated and Algorithmic Debugging
A Formal Study of Slicing for Multi-threaded Programs with JVM Concurrency Primitives
SAS '99 Proceedings of the 6th International Symposium on Static Analysis
Slicing java programs that throw and catch exceptions
Proceedings of the 2003 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
The Relationship of Slicing and Debugging to Program Understanding
IWPC '99 Proceedings of the 7th International Workshop on Program Comprehension
Kaveri: delivering the indus java program slicer to eclipse
FASE'05 Proceedings of the 8th international conference, held as part of the joint European Conference on Theory and Practice of Software conference on Fundamental Approaches to Software Engineering
Proceedings of the 5th international conference on Generative programming and component engineering
Efficient online detection of dynamic control dependence
Proceedings of the 2007 international symposium on Software testing and analysis
A new foundation for control dependence and slicing for modern program structures
ACM Transactions on Programming Languages and Systems (TOPLAS) - Special Issue ESOP'05
Slicing for modern program structures: a theory for eliminating irrelevant loops
Information Processing Letters
Control Dependence for Extended Finite State Machines
FASE '09 Proceedings of the 12th International Conference on Fundamental Approaches to Software Engineering: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Dynamic parallelization of single-threaded binary programs using speculative slicing
Proceedings of the 23rd international conference on Supercomputing
A trajectory-based strict semantics for program slicing
Theoretical Computer Science
A unifying theory of control dependence and its application to arbitrary program structures
Theoretical Computer Science
Parametric and termination-sensitive control dependence
SAS'06 Proceedings of the 13th international conference on Static Analysis
Kaveri: delivering the indus java program slicer to eclipse
FASE'05 Proceedings of the 8th international conference, held as part of the joint European Conference on Theory and Practice of Software conference on Fundamental Approaches to Software Engineering
Evaluating the effectiveness of slicing for model reduction of concurrent object-oriented programs
TACAS'06 Proceedings of the 12th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Hi-index | 0.00 |
The notion of control dependence underlies many program analysis and transformation techniques. Despite wide applications, existing definitions and approaches for calculating control dependence are difficult to apply seamlessly to modern program structures. Such program structures make substantial use of exception processing and increasingly support reactive systems designed to run indefinitely. This paper revisits foundational issues surrounding control dependence and slicing. It develops definitions and algorithms for computing control dependence that can be directly applied to modern program structures. A variety of properties show that the new definitions conservatively extend classic definitions. In the context of slicing reactive systems, the paper proposes a notion of slicing correctness based on weak bisimulation and proves that the definition of control dependence generates slices that conform to this notion of correctness. The new definitions and algorithms for control dependence form the basis of a publicly available program slicer that has been implemented for full Java.