A framework for partial data flow analysis
- 1 January 1994
- conference paper
- Published by Institute of Electrical and Electronics Engineers (IEEE)
Abstract
Although data flow analysis was first developed for use in compilers, its usefulness is now recognized in many software tools. Because of its compiler origins, the computation of data flow for software tools is based on the traditional exhaustive data flow framework. However, although this framework is useful for computing data flow for compilers, it is not the most appropriate for software tools, particularly those used in the maintenance stage. In maintenance, testing and debugging is typically performed in response to program changes. As such, the data flow required is demand driven from the changed program points. Rather than compute the data flow exhaustively using the traditional data flow frame work, we present a framework for partial analysis. The framework includes a specification language enabling the specification of the demand driven data flow desired by a user. From the specification, a partial analysis algorithm is automatically generated using an L-attributed definition for the grammar of the specification language. A specification of a demand driven data flow problem expresses characteristics that define the kind of traversal needed in the partial analysis and the type of dependencies to be captured. The partial analyses algorithms are efficient in that only as much of the program is analyzed as actually needed, thus reducing the time and space requirements over exhaustively computing the data flow information. The algorithms are shown to be useful when debugging and testing programs during maintenance.<>Keywords
This publication has 22 references indexed in Scilit:
- Employing static information in the generation of test casesSoftware Testing, Verification and Reliability, 1993
- Interprocedural static analysis of sequencing constraintsACM Transactions on Software Engineering and Methodology, 1992
- Concurrency analysis in the presence of procedures using a data-flow frameworkPublished by Association for Computing Machinery (ACM) ,1991
- Cecil: a sequencing constraint language for automatic static analysis generationIEEE Transactions on Software Engineering, 1990
- Interprocedural slicing using dependence graphsACM Transactions on Programming Languages and Systems, 1990
- An incremental version of iterative data flow analysisIEEE Transactions on Software Engineering, 1989
- Integrating noninterfering versions of programsACM Transactions on Programming Languages and Systems, 1989
- Advanced compiler optimizations for supercomputersCommunications of the ACM, 1986
- Selecting Software Test Data Using Data Flow InformationIEEE Transactions on Software Engineering, 1985
- Monotone data flow analysis frameworksActa Informatica, 1977