Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Information-flow and data-flow analysis of while-programs
Bergeretti J., Carré B. ACM Transactions on Programming Languages and Systems7 (1):37-61,1985.Type:Article
Date Reviewed: Jul 1 1985

Three binary information flow relations are defined for while-programs. &lgr; relates variables to expressions, stating whether the value of variable v, as defined on entry to statement S, may be used in the evaluation of an expression e, where e is contained in S. v may be used in evaluating e even if v is not found directly in e, i.e., an intermediate set of assignments to other variables may transmit the value of v. (S may be a compound statement.) &mgr; relates expressions to variables, stating whether an expression e in statement S may be used in obtaining the value of variable v on exit from S. Again, transitive relationships are included. &rgr; is a composition of &lgr; and &mgr;, relating variables to variables, in the sense of “the value of v on entry to S may be used in obtaining the value of v on exit from S.”

Having defined these relationships, the authors proceed to show how they can be computed for assignment, if, while, empty, and compound statements. They then proceed to show a variety of uses for the information thus computed. Primarily, the information is useful in revealing errors or anomalies in a program. The &rgr; operator can be used to demonstrate, in an avionics system for example, that if the passenger in seat 8A flips the reading light switch there will be no effect on the position of the landing gear. The &lgr;, &mgr;, and &rgr; operators can also be used in computing program slices for use in debugging; that is, the set of only those program statements which may be involved in determining an expression’s value. Other uses are also described.

The operators in this paper may be used to compute many of the information relations that are computed by data flow analysis techniques (as well as many that are not typically done with data flow analysis). However, aside from one exception, the authors do not address the issue that computing must affect information, as opposed to may affect information. Experience with data flow analyzers has demonstrated the importance of the distinction. The authors have also neglected to consider how the relations may be computed for recursive procedures. The formulas they provide for handling procedure calls assume no recursion.

The authors claim that, despite poor worst-case complexity measures for computing the information flow relations (cubic or worse), “in practice” they will be found sufficiently efficient. This claim is accompanied with a reference to experiments they have performed, but the description of the experiment leaves one to believe that substantial further study is necessary to support this claim.

Overall, this paper presents some very interesting ideas for static analysis of programs and is suggested reading for builders of analysis and debugging tools.

Reviewer:  R. N. Taylor Review #: CR109186
Bookmark and Share
 
Design Tools and Techniques (D.2.2 )
 
 
Assertion Checkers (D.2.4 ... )
 
 
Programming Environments (D.2.6 )
 
 
Testing And Debugging (D.2.5 )
 
Would you recommend this review?
yes
no
Other reviews under "Design Tools and Techniques": Date
UNIX tool building
Ingham K., Academic Press Prof., Inc., San Diego, CA, 1991. Type: Book (9780123708304)
Aug 1 1991
More C tools for scientists and engineers
Baker L. (ed), McGraw-Hill, Inc., New York, NY, 1991. Type: Book (9780070033580)
Apr 1 1992
Introduction to programming logic for business applications
Wintermeyer L., Reston Publishing Co., Reston, VA, 1987. Type: Book (9789780835932516)
Dec 1 1987
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy