Skip to main content

Data Flow Analysis In Software Reliability

  • Chapter
Engineering of Software

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

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 129.00
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 169.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 169.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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.

    Google Scholar 

  2. Allen, F.E. “Program optimization,” in Annual Review in Automatic Programming, 1969.

    Google Scholar 

  3. Allen, F.E. “A basis for program optimization,” in Proc. IFIP Congress 1971, North-Holland Publ. Co., Amsterdam, The Netherlands, 1972, pp. 385–390.

    Google Scholar 

  4. Allen, F. E.; and Cocke, J. Graph-theoretic constructs for program control flow analysis, IBM Research Report RC3923, T. J. Watson Research Center, 1972.

    Google Scholar 

  5. Allen, F. E. “Interprocedural data flow analysis,” in Proc. IFIP Congress 1974, North Holland Publ. Co., Amsterdam, The Netherlands, 1974, pp. 398–402.

    Google Scholar 

  6. Allen, F. E.; and Cocke, J. “A program data flow analysis procedure,” Comm. ACM 19, 3 (March 1976), 137–147.

    Article  MATH  Google Scholar 

  7. Balzer, R. M. “EXDAMS: Extendable debugging and monitoring system,” in Proc. AFIPS 1969 Spring Jr. Computer Conf., Vol. 34, AFIPS Press, pp. 567–580.

    Google Scholar 

  8. 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.

    Google Scholar 

  9. 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.

    Google Scholar 

  10. 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.

    Google Scholar 

  11. 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.

    Google Scholar 

  12. Habermann, A.N. Path expressions, Dept. of Computer Science Technical Report, Carnegie-Mellon Univ., Pittsburgh, Pa., 1975.

    Google Scholar 

  13. Harary, F. Graph theory, Addison-Wesley Publ. Co., Reading, Mass., 1969.

    Google Scholar 

  14. Hecht, M. S.; and Ullman J. D., “Flow graph reducibility,” SIAM J. Computing 1, (1972), 188–202.

    Article  MATH  MathSciNet  Google Scholar 

  15. Hecht, M. S.; and Ullman, J.D. “Characterizations of reducible flow graphs,” J. ACM 21, 3 (July 1974), 367–375.

    Article  MATH  MathSciNet  Google Scholar 

  16. Hecht, M. S.; and Ullman J. D., “A simple algorithm for global data flow analysis problems,” SIAM J. Computing 4 (Dec. 1975), 519–532.

    Article  MATH  MathSciNet  Google Scholar 

  17. Hopcroft, J.; and Tarjan R. E., “Efficient algorithms for graph manipulation,” Comm. ACM 16 (June 1973), 372–378.

    Article  Google Scholar 

  18. Hopcroft, J. E.; and Ullman, J.D. Formal languages and their relation to automata, Addison Wesley Publ. Co., Reading, Mass., 1969.

    MATH  Google Scholar 

  19. Howden, W.E. “Automatic case analysis of programs,” in Proc. Computer Science and Statistics: 8th Annual Symposium on the Interface, 1975, pp. 347–352.

    Google Scholar 

  20. Kallal, V.; and Osterweil L. J., Constructing flowgraphs for assembly language programs, Dept. of Computer Science Technical Report Univ. of Colorado, Boulder, 1976.

    Google Scholar 

  21. Karp, R.M. “A note on the application of graph theory to digital computer programming,” Information and Control 3 (1960), 179–190.

    Article  Google Scholar 

  22. 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.

    Chapter  Google Scholar 

  23. 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.

    Google Scholar 

  24. Knuth, D. E. The art of computer programming, Vol. I fundamental algorithms, (2d Ed.), Addison Wesley Publ. Co., Reading, Mass., 1973.

    Google Scholar 

  25. Knuth, D. E. An empirical study of FORTRAN programs, Software—Practice and Experience 1, 2 (1971), 105–134.

    Article  MATH  Google Scholar 

  26. Miller, E. F., Jr. RXVP, FORTRAN automated verification system, Program Validation Project, General Research Corp., Santa Barbara, Calif., 1974, pp. 4.

    Google Scholar 

  27. 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.

    Google Scholar 

  28. Osterweil, L. J.; and Fosdick L. D., “DAVE—a validation, error detection and documentation system for FORTRAN programs,” Software—Practice and Experience, 1976.

    Google Scholar 

  29. Rodriguez, J. D. A graph model for parallel computation, Report MAC-TR-64, Project MAC, MIT, Cambridge, Mass., 1969.

    Google Scholar 

  30. Rosen, B. Data flow analysis for recursive PL/I programs, IBM Research Report RC5211, T. J. Watson Research Center, Yorktown Heights, New York, 1975.

    Google Scholar 

  31. Schaeffer, M. A mathematical theory of global program optimization, Prentice-Hall Inc., Englewood Cliffs, N. J., 1973.

    Google Scholar 

  32. Stucki, L. G. “Automatic generation of self-metric software,” in Proc. IEEE Symposium on Computer Software Reliability, 1973, IEEE, pp. 94–100.

    Google Scholar 

  33. Tarjan, R. E. “Depth-first search and linear graph algorithms,” SIAM J. Computing (Sept. 1972), 146–160.

    Google Scholar 

  34. Tarjan, R. E. “Testing flow graph reducibility,” J. Computer and System Sciences 9, 3 (Dec. 1974), 355–365.

    Article  MATH  MathSciNet  Google Scholar 

  35. Ullman, J. D. “Fast algorithms for the elimination of common subexpressions,” Acta Informatica 2 (1973), 191–213.

    Article  MATH  MathSciNet  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics