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)
Communications of the ACM
Detecting conflicts between structure accesses
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Control flow analysis in scheme
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Conditions for incremental iteration: examples and counterexamples
Science of Computer Programming
The semantics of program dependence
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
An efficient method of computing static single assignment form
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An Incremental Version of Iterative Data Flow Analysis
IEEE Transactions on Software Engineering
Profiling an Incremental Data Flow Analysis Algorithm
IEEE Transactions on Software Engineering
An interval-based approach to exhaustive and incremental interprocedural data-flow analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Critical Analysis of Incremental Iterative Data Flow Analysis Algorithms
IEEE Transactions on Software Engineering
Analysis of pointers and structures
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
Common LISP: the language (2nd ed.)
Common LISP: the language (2nd ed.)
An efficient hybrid algorithm for incremental data flow analysis
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Automatic construction of sparse data flow evaluation graphs
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
IEEE Transactions on Software Engineering
The semantic approach to program slicing
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
The PICASSO applications framework
UIST '91 Proceedings of the 4th annual ACM symposium on User interface software and technology
Control-flow analysis of higher-order languages of taming lambda
Control-flow analysis of higher-order languages of taming lambda
A safe approximate algorithm for interprocedural aliasing
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
SDE 5 Proceedings of the fifth ACM SIGSOFT symposium on Software development environments
Automated assistance for program restructuring
ACM Transactions on Software Engineering and Methodology (TOSEM)
Interprocedural modification side effect analysis with pointer aliasing
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Semantic program dependence graphs
Semantic program dependence graphs
On the criteria to be used in decomposing systems into modules
Communications of the ACM
Dependence graphs and compiler optimizations
POPL '81 Proceedings of the 8th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Software Maintenance Management
Software Maintenance Management
Program Restructuring via Design-Level Manipulation
ICSE '93 Selected papers from the Workshop on Studies of Software Design
Proceedings of a symposium on Compiler optimization
Restructuring symbolic programs for concurrent execution on multiprocessors
Restructuring symbolic programs for concurrent execution on multiprocessors
A new algorithm for semantics-based program integration
A new algorithm for semantics-based program integration
Automated support for encapsulating abstract data types
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
Just-in-time architecture: planning software in an uncertain world
ISAW '96 Joint proceedings of the second international software architecture workshop (ISAW-2) and international workshop on multiple perspectives in software development (Viewpoints '96) on SIGSOFT '96 workshops
Hi-index | 0.00 |
Automated assistance for meaning-preserving global restructuring is an approach for helping software engineers improve the structure of programs, thus lowering the costs of maintenance. The consturction of a restructuing tool encounters many conflicting goals---such as simplicity. extensibility, and good performance---that cannot be met without some compromise. In particular, the current technique for assisting restructuring uses a costly program representation---a Program Dependence Graph (PDG) with alias information---that is not practical to recompute from scratch after each restructuring transformation. There are at least two possible solutions. A commonly suggested approach for efficiently updating data flow representations is to use a generic incremental algorithm that does not make use of the special nature of the restructuring. This approach is general, but it does not yet handle aliasing fully. By taking advantage of the special nature of the restructuring transformations it is possible to implement a more efficient update than generic update that also handles aliasing. The idea is to implement direct updates to the PDG that are analogous to the changes on the program text. The downsides to direct update are that it is application-specific, applies only to semantically restricted applications like restructuring, and may be more complex. The choice between the two techniques requires an understanding of the current and future needs of the tool's users.This paper describes the direct approach of updating the PDG and related representations for restructuring, provides techniques for managing its complexity, critiques its advantages and shortcomings relative to generic incremental update, and presents performance results.