The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Data Flow Analysis for Procedural Languages
Journal of the ACM (JACM)
Data Flow Analysis in Software Reliability
ACM Computing Surveys (CSUR)
Models and Measurements for Quality Assessment of Software
ACM Computing Surveys (CSUR)
A practical interprocedural data flow analysis algorithm
Communications of the ACM
Flow Analysis of Computer Programs
Flow Analysis of Computer Programs
An efficient way to find the side effects of procedure calls and the aliases of variables
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Static analysis of programs as an aid to debugging
SIGSOFT '83 Proceedings of the ACM SIGSOFT/SIGPLAN software engineering symposium on High-level debugging
Incremental analysis of programs
Incremental analysis of programs
Towards a distributed programming environment based on incremental compilation (debugging, prettyprinting, interactive)
Hi-index | 0.00 |
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.