Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Program evolution: processes of software change
Program evolution: processes of software change
The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Interprocedural slicing using dependence graphs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Automatic construction of sparse data flow evaluation graphs
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Control-flow analysis of higher-order languages of taming lambda
Control-flow analysis of higher-order languages of taming lambda
Reconciling environment integration and software evolution
ACM Transactions on Software Engineering and Methodology (TOSEM)
A safe approximate algorithm for interprocedural aliasing
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Automated assistance for program restructuring
ACM Transactions on Software Engineering and Methodology (TOSEM)
Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Context-sensitive interprocedural points-to analysis in the presence of function pointers
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
A new model of program dependences for reverse engineering
SIGSOFT '94 Proceedings of the 2nd ACM SIGSOFT symposium on Foundations of software engineering
Architectural Tradeoffs for a Meaning-Preserving Program Restructuring Tool
IEEE Transactions on Software Engineering - Special issue on software architecture
Efficient context-sensitive pointer analysis for C programs
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Context-insensitive alias analysis reconsidered
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Managing design trade-offs for a program understanding and transformation tool
Journal of Systems and Software - Double issue on reengineering complex systems
Mediators: easing the design and evolution of integrated systems
Mediators: easing the design and evolution of integrated systems
Precise interprocedural chopping
SIGSOFT '95 Proceedings of the 3rd ACM SIGSOFT symposium on Foundations of software engineering
Demand interprocedural dataflow analysis
SIGSOFT '95 Proceedings of the 3rd ACM SIGSOFT symposium on Foundations of software engineering
Points-to analysis in almost linear time
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Aspect: an economical bug-detector
ICSE '91 Proceedings of the 13th international conference on Software engineering
On the criteria to be used in decomposing systems into modules
Communications of the ACM
A portable compiler: theory and practice
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
On the Efficient Engineering of Ambitious Program Analysis
IEEE Transactions on Software Engineering
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
Strategic directions in software engineering and programming languages
ACM Computing Surveys (CSUR) - Special ACM 50th-anniversary issue: strategic directions in computing research
Flow insensitive C++ pointers and polymorphism analysis and its application to slicing
ICSE '97 Proceedings of the 19th international conference on Software engineering
Computation of interprocedural control dependence
Proceedings of the 1998 ACM SIGSOFT international symposium on Software testing and analysis
Effective whole-program analysis in the presence of pointers
SIGSOFT '98/FSE-6 Proceedings of the 6th ACM SIGSOFT international symposium on Foundations of software engineering
Reuse-driven interprocedural slicing
Proceedings of the 20th international conference on Software engineering
Call-mark slicing: an efficient and economical way of reducing slice
Proceedings of the 21st international conference on Software engineering
System-dependence-graph-based slicing of programs with arbitrary interprocedural control flow
Proceedings of the 21st international conference on Software engineering
Proceedings of the Conference on The Future of Software Engineering
Interprocedural control dependence
ACM Transactions on Software Engineering and Methodology (TOSEM)
Complexity of Points-To Analysis of Java in the Presence of Exceptions
IEEE Transactions on Software Engineering
Making slicing practical: the final mile
PASTE '01 Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Evaluating explicitly context-sensitive program slicing
PASTE '01 Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
A schema for interprocedural modification side-effect analysis with pointer aliasing
ACM Transactions on Programming Languages and Systems (TOPLAS)
Equivalence analysis and its application in improving the efficiency of program slicing
ACM Transactions on Software Engineering and Methodology (TOSEM)
Supporting document and data views of source code
Proceedings of the 2002 ACM symposium on Document engineering
Improving program slicing with dynamic points-to data
Proceedings of the 10th ACM SIGSOFT symposium on Foundations of software engineering
Improving program slicing with dynamic points-to data
ACM SIGSOFT Software Engineering Notes
Tool Support for Planning the Restructuring of Data Abstractions in Large Systems
IEEE Transactions on Software Engineering
From relational program dependencies to hypertextual access structures
Nordic Journal of Computing
A Change Impact Analysis Approach for CORBA-Based Federated Databases
DEXA '00 Proceedings of the 11th International Conference on Database and Expert Systems Applications
Tool Support for Testing and Documenting Framework-Based Software
TOOLS '99 Proceedings of the Technology of Object-Oriented Languages and Systems
A Change Propagation Model and Platform For Multi-Database Applications
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Implementation Techniques for Efficient Data-Flow Analysis of Large Programs
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Global Analysis and Transformations in Preprocessed Languages
IEEE Transactions on Software Engineering
A brief survey of program slicing
ACM SIGSOFT Software Engineering Notes
Program Slicing with Dynamic Points-To Sets
IEEE Transactions on Software Engineering
Effective pattern matching of source code using abstract syntax patterns
Software—Practice & Experience
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Effects of context on program slicing
Journal of Systems and Software - Special issue: Selected papers from the 4th source code analysis and manipulation (SCAM 2004) workshop
Strong higher order mutation-based test data generation
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
Hi-index | 0.00 |
Building efficient tools for understanding large software systems is difficult. Many existing program understanding tools build control flow and data flow representations of the program a priori, and therefore may require prohibitive space and time when analyzing large systems. Since much of these representations may be unused during an analysis, we construct representations on demand, not in advance. Furthermore, some representations, such as the abstract syntax tree, may be used infrequently during an analysis. We discard these representations and recompute them as needed, reducing the overall space required. Finally, we permit the user to selectively trade off time for precision and to customize the termination of these costly analyses in order to provide finer user control. We revised the traditional software architecture for compilers to provide these features without unnecessarily complicating the analyses themselves. These techniques have been successfully applied in the design of a program slicer for the Comprehensive Health Care System (CHCS), a million line hospital management system written in the MUMPS programming language.