Describing data flow analysis techniques with Kleene algebra
Science of Computer Programming
Copy propagation optimizations for VLIW DSP processors with distributed register files
LCPC'06 Proceedings of the 19th international conference on Languages and compilers for parallel computing
A generic architecture for data flow analysis to support reverse engineering
Algebraic'97 Proceedings of the 2nd international conference on Theory and Practice of Algebraic Specifications
Hi-index | 0.00 |
Ripple analysis, a form of program slicing, can be used to identify those parts of an existing system which provide specific functionality, thus supporting code reuse and other software development/maintenance activities. If a functional requirement is completely met by an identified set of input and output statements, forward ripple analysis for all input statements combined with backward ripple analysis for all output statements can identify all parts of the code related to that functionality. This paper describes a prototype static code analysis system for Pascal code that can be used to identify bi-directional ripples (based on data flow analysis). This system utilizes data flow analysis techniques to collect flow insensitive information about the variables in each source statement and build a database containing a call, control flow, and dead graph. This data base can then be used to identify forward and backward ripples of all appropriate input and output statements and thus the subset of the system which provides the specified functionality. In this paper we describe work under way to build a system which can generate the data flow information to support code reuse and other software development and maintenance activities. An interesting observation is that forward ripples require less average computation than backward ripples. A ripple algorithm that performs a graph traversal to identify reverse an forward side-effects for a given variable on a given source line is described.