Abstract
The ways that the methods of data flow analysis can be applied to improve software reliability are described. There is also a review of the basic terminology from graph theory and from data flow analysis in global program optimization. The notation of regular expressions is used to describe actions on data for sets of paths. These expressions provide the basis of a classification scheme for data flow which represents patterns of data flow along paths within subprograms and along paths which cross subprogram boundaries. Fast algorithms, originally introduced for global optimization, are described and it is shown how they can be used to implement the classification scheme. It is then shown how these same algorithms can also be used to detect the presence of data flow anomalies which are symptomatic of programming errors. Finally, some characteristics of and experience with DAVE, a data flow analysis system embodying some of these ideas, are described.
This work supported by NSF Grant DCR 75-09972.
Lloyd Fosdick and Leon J. Osterweil, “Data Flow Analysis in Software Reliability,” ACM Computing Surveys 8:3 September 1976. DOI: 10.1145/356674.356676, © 1976 ACM, Inc. Reprinted with permission
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Aho, A. V.; and Ullman, J. D. “Node listings for reducible flow graphs,” in Proc. of the 7th Annual ACM Symposium on Theory of Computing, 1975, pp. 177–185.
Allen, F.E. “Program optimization,” in Annual Review in Automatic Programming, 1969.
Allen, F.E. “A basis for program optimization,” in Proc. IFIP Congress 1971, North-Holland Publ. Co., Amsterdam, The Netherlands, 1972, pp. 385–390.
Allen, F. E.; and Cocke, J. Graph-theoretic constructs for program control flow analysis, IBM Research Report RC3923, T. J. Watson Research Center, 1972.
Allen, F. E. “Interprocedural data flow analysis,” in Proc. IFIP Congress 1974, North Holland Publ. Co., Amsterdam, The Netherlands, 1974, pp. 398–402.
Allen, F. E.; and Cocke, J. “A program data flow analysis procedure,” Comm. ACM 19, 3 (March 1976), 137–147.
Balzer, R. M. “EXDAMS: Extendable debugging and monitoring system,” in Proc. AFIPS 1969 Spring Jr. Computer Conf., Vol. 34, AFIPS Press, pp. 567–580.
Clarke, L. A system to generate test data and symbolically execute programs, Dept. of Computer Science Technical Report #Cu-CS-060-75, Univ. of Colorado, Boulder, 1975.
Dennis, J.B. “First version of a data flow procedure language,” in Lecture notes in computer science 19, G. Goos and J. Hartmanis (Eds.), 1974, pp. 241–271.
Fairley, R.E. “An experimental program testing facility,” in Proc. First National Conf. on Software Engineering, 1975, IEEE #75CH0992-8C, IEEE, New York, 1975, pp. 47–55.
Goldstine, H. H.; and Von Neumann J., “Planning and coding problems for an electronic computing instrument,” in John von Neumann, collected works, 1963, pp. 80–235.
Habermann, A.N. Path expressions, Dept. of Computer Science Technical Report, Carnegie-Mellon Univ., Pittsburgh, Pa., 1975.
Harary, F. Graph theory, Addison-Wesley Publ. Co., Reading, Mass., 1969.
Hecht, M. S.; and Ullman J. D., “Flow graph reducibility,” SIAM J. Computing 1, (1972), 188–202.
Hecht, M. S.; and Ullman, J.D. “Characterizations of reducible flow graphs,” J. ACM 21, 3 (July 1974), 367–375.
Hecht, M. S.; and Ullman J. D., “A simple algorithm for global data flow analysis problems,” SIAM J. Computing 4 (Dec. 1975), 519–532.
Hopcroft, J.; and Tarjan R. E., “Efficient algorithms for graph manipulation,” Comm. ACM 16 (June 1973), 372–378.
Hopcroft, J. E.; and Ullman, J.D. Formal languages and their relation to automata, Addison Wesley Publ. Co., Reading, Mass., 1969.
Howden, W.E. “Automatic case analysis of programs,” in Proc. Computer Science and Statistics: 8th Annual Symposium on the Interface, 1975, pp. 347–352.
Kallal, V.; and Osterweil L. J., Constructing flowgraphs for assembly language programs, Dept. of Computer Science Technical Report Univ. of Colorado, Boulder, 1976.
Karp, R.M. “A note on the application of graph theory to digital computer programming,” Information and Control 3 (1960), 179–190.
King, J. C. “A new approach to program testing,” in Proc. Internatl. Conf. on Reliable Software, 1975, IEEE #75CH0940-7CSR, IEEE, New York, 1975, pp. 228–233.
Kennedy, K.W. “Node listings applied to data flow analysis,” in Proc. of 2nd ACM Symposium on Principals of Programming Languages, 1975, ACM, New York, 1975, pp. 10–21.
Knuth, D. E. The art of computer programming, Vol. I fundamental algorithms, (2d Ed.), Addison Wesley Publ. Co., Reading, Mass., 1973.
Knuth, D. E. An empirical study of FORTRAN programs, Software—Practice and Experience 1, 2 (1971), 105–134.
Miller, E. F., Jr. RXVP, FORTRAN automated verification system, Program Validation Project, General Research Corp., Santa Barbara, Calif., 1974, pp. 4.
Osterweil, L. J.; and Fosdick L. D., “DAVE—a FORTRAN program analysis system,” in Proc. Computer Science and Statistics: 8th Annual Symp. on the Interface, 1975.
Osterweil, L. J.; and Fosdick L. D., “DAVE—a validation, error detection and documentation system for FORTRAN programs,” Software—Practice and Experience, 1976.
Rodriguez, J. D. A graph model for parallel computation, Report MAC-TR-64, Project MAC, MIT, Cambridge, Mass., 1969.
Rosen, B. Data flow analysis for recursive PL/I programs, IBM Research Report RC5211, T. J. Watson Research Center, Yorktown Heights, New York, 1975.
Schaeffer, M. A mathematical theory of global program optimization, Prentice-Hall Inc., Englewood Cliffs, N. J., 1973.
Stucki, L. G. “Automatic generation of self-metric software,” in Proc. IEEE Symposium on Computer Software Reliability, 1973, IEEE, pp. 94–100.
Tarjan, R. E. “Depth-first search and linear graph algorithms,” SIAM J. Computing (Sept. 1972), 146–160.
Tarjan, R. E. “Testing flow graph reducibility,” J. Computer and System Sciences 9, 3 (Dec. 1974), 355–365.
Ullman, J. D. “Fast algorithms for the elimination of common subexpressions,” Acta Informatica 2 (1973), 191–213.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Fosdick, L.D., Osterweil, L.J. (2011). Data Flow Analysis In Software Reliability. In: Tarr, P., Wolf, A. (eds) Engineering of Software. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-19823-6_5
Download citation
DOI: https://doi.org/10.1007/978-3-642-19823-6_5
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-19822-9
Online ISBN: 978-3-642-19823-6
eBook Packages: Computer ScienceComputer Science (R0)