Design of Analyzers for Selective Program Analysis

The need for programming environments which support different phases of the software life cycle using responsive tools is well established. This paper presents a method for developing automatic analyzers which analyze programs and provide programmers with a variety of messages for the purpose of validating these programs in the early stages of program development. We show using an example, that such analyzers can be systematically constructed using an extension of the Attribute Grammar model which reflects the fact that a program analyzer should perform a static analysis of the program as well as monitor its dynamic behavior efficiently. One of the advantages of the model is that a systematic interaction is allowed between the static and dynamic attributes of the program. We illustrate that an advantage of this interaction is selective program instrumentation. That is, the analyzer is responsive to the programmer's needs by providing a selective analysis of the program's behavior rather than an exhaustive analysis which is difficult to comprehend.

[1]  Richard G. Hamlet,et al.  Testing Programs with the Aid of a Compiler , 1977, IEEE Transactions on Software Engineering.

[2]  John Cocke,et al.  A program data flow analysis procedure , 1976, CACM.

[3]  Brian W. Kernighan,et al.  The UNIX™ programming environment , 1979, Softw. Pract. Exp..

[4]  Donald E. Knuth,et al.  Examples of formal semantics , 1971, Symposium on Semantics of Algorithmic Languages.

[5]  Thomas E. Cheatham,et al.  A System for Program Refinement , 1979, ICSE.

[6]  Barry K. Rosen Monoids for rapid data flow analysis , 1978, POPL '78.

[7]  Thomas Reps,et al.  Programming Techniques and Data Structures , 1981 .

[8]  Leon G. Stucki Software development tools: acquisition considerations---a position paper , 1977, AFIPS '77.

[9]  Leon J. Osterweil,et al.  Data Flow Analysis in Software Reliability , 1976, CSUR.

[10]  Edsger W. Dijkstra,et al.  Notes on structured programming , 1970 .

[11]  Richard E. Fairley,et al.  Tutorial: Static Analysis and Dynamic Testing of Computer Software , 1978, Computer.

[12]  Jacques J. Arsac,et al.  Syntactic source to source transforms and program manipulation , 1979, CACM.

[13]  Peter H. Feiler,et al.  An Incremental Programming Environment , 1981, IEEE Transactions on Software Engineering.

[14]  Barry K. Rosen Data Flow Analysis for Procedural Languages , 1979, JACM.

[15]  Donald E. Knuth,et al.  An empirical study of FORTRAN programs , 1971, Softw. Pract. Exp..

[16]  J C Huang,et al.  Program Instrumentation and Software Testing , 1978, Computer.

[17]  Gregor von Bochmann,et al.  A Sampler of Formal Definitions , 1976, CSUR.

[18]  Ken Kennedy,et al.  Applications of a graph grammar for program control flow analysis , 1977, POPL.

[19]  Gregor von Bochmann,et al.  Semantic evaluation from left to right , 1976, CACM.