ABSTRACT
Most of the work on static program flow analysis has been done in the context of code optimization. The situation is different for an application such as an interactive query tool for programmer support. Primarily this is because the information wanted is different from what is needed for optimization, but also because incremental flow analysis algorithms are much more relevant in this context.
In this paper we introduce the concept of affect-chaining, which is the process of analysing flow of data between variables in a program. The objective is to help the user to better understand data flow and data dependencies in programs not only during design and coding but also during test, debugging and maintenance. We present both forward- and backward- versions of affect-chaining analysis together with efficient algorithms.
A long term goal of the work presented in this paper is to combine results from static analysis of a program and information from the run-time state during execution of the same program. The idea is, that this combination will enable an interactive query tool to answer questions about possible reasons for unexpected program behavior, and also to inform about possible consequences of a program change which may be considered. Another goal is to develop better estimates of software complexity based on affect-chaining dependencies.
- Banning-79.J. P. Banning. An EfJicient Way to Find the Side Effects of Procedure Calls and the Aliases of Variables. Conf. record of the Sixth Annual ACM SIGPLAN/SIGSOFT Symposium on POPL. January 1979. pp.29-41. Google ScholarDigital Library
- Barth-78.J. M. Barth. A Practical Inter-procedural Data Flow Analysis Algorithm. Communications of the ACM 21. September 1978. pp.724-736. Google ScholarDigital Library
- Clarke-81.L. A. Clarke, D. J. Richardson Symbolic Evaluation Methods for Program Analysis, in: Program Flow Analysis, Theory and Applications. Edited by Muchnick and Jones. Prentice-Hall, Englewood Cliffs, New Jersey 1981. pp. 5-55.Google Scholar
- Conradi-85.R. Conradi, D. Svanz~, FORTRAN VERIFIER - A Tool for Documentation and Error Diagnosis of FORTRAN-77 Programs, CS Tech. Report l/85, Jan 1985, 23 pp. Division of Computer Science, University of Trondheim, N-7034 Trondheim-NTH.Google Scholar
- Ferrante,etal-87.J. Ferrante, K.J. Ottenstein, J.D. Warren. The Program Dependence Graph and its Use in Optimization. ACM Transactions on Programming Languages and Systems, Vol 9, No 3, July 1987. Google ScholarDigital Library
- Fosdick,Osterweil-76.L.D. Fosdick, L.J. Osterweil. Data Flow Analysis in Software Reliability. ACM Computing Surveys, Vol 8, No 3, Sept 1976. Google ScholarDigital Library
- Fritzson-84.P. Fritzson. Towards a Distributed Programming Environment Based on I ncremental Compilation. PhD thesis. Linkijping University, Sweden. Linkiiping 1984. Google ScholarDigital Library
- Fritzson-85.P. Fritzson. The Architecture of an Incremental Programming Environment and some Notions of Consistency. Proc. of the GTE Workshop on Software Engineering Environruents for Programming-in- the-large, Ilarwic*hport, MA. June 1985.Google Scholar
- Ghodsi-83.V. Ghodsi. Incremental analysis of programs. PhD thesis. University of Central Florida, 1983. Google ScholarDigital Library
- Hecht-77.M. S. Hecht. Flow Analysis of Programs. New York, Elsevier North-Holland, 1977. Google ScholarDigital Library
- Kamkar,Shahmehri-87.M. Kamkar, N. Shahmehri. Affect-Chaining in Program FLOW Analysis Applied to Queries of Programs, Licenciate Thesis no 118, May 1987, Dept of Computer Science, Linkijping University, S-581 83 LinkGping, Sweden.Google Scholar
- Mohanty-79.S.N. Mohanty. Models and Measurements for Quality Assessment of Software. ACM Computing Surveys, Vol 11, No 3, September 1979. Google ScholarDigital Library
- Rosen-79.B. K. Rosen. Data Flow Analysis for Procedural Languages. Journal of the ACM 26. April 1979. pp. 322-344. Google ScholarDigital Library
- Teitelman-78.W. Teitelman, Inter-lisp Reference Manual., Xerox Palo Alto Research Center.Google Scholar
- Tischler-83.R. Tischler, R. Schaufler, Ch. Payne. Static Analysis of Programs as An Aid to Debugging. Proc. of the SIGSOFT/SIGPLAN Software Engineering Symposium on High-Level Debugging. March 1983. pp.155158. Google ScholarDigital Library
- Weiser-84.M. Weiser. Program Slicing . IEEE Transactions on Software Engineering, Vol SE-lo, No 4, July 1984 .Google Scholar
Index Terms
- Affect-chaining and dependency oriented flow analysis applied to queries of programs
Recommendations
Dynamic Query-Based Debugging of Object-Oriented Programs
Program errors are hard to find because of the cause-effect gap between the instant when an error occurs and when the error becomes apparent to the programmer. Although debugging techniques such as conditional and data breakpoints help in finding errors ...
Data Flow Analysis of Java Programs in the Presence of Exceptions
PSI '99: Proceedings of the Third International Andrei Ershov Memorial Conference on Perspectives of System InformaticsFor data flow analysis of Java program to be correct and precise, the flows induced by exceptions must be properly analysed. In our data flow analysis, the implicit control flow for a raised exception is represented explicitly. Exception branches, ...
Comments