This Article 
 Bibliographic References 
 Add to: 
Data Dependency Graphs for Ada Programs
May 1990 (vol. 16 no. 5)
pp. 498-509

A compositional method of constructing data dependency graphs for Ada programs is presented. These graphs are useful in a program development environment for analyzing data dependencies and tracking information flow within a program. Graphs for primitive program statements are combined together to form graphs for larger program units. Composition rules are described for iteration, recursion, exception handling, and tasking, as well as for simpler Ada constructs. The correctness of the construction and the practicality of the technique are discussed.

[1] F. E. Allen and J. Cocke, "A program data flow analysis procedure,"CACM, vol. 19, no. 3, Mar. 1977.
[2] M. Burke and R. Cytron, "Interprocedural dependence analysis and parallelization," inProc. SIG-PLAN '86 Symp. Comp. Construct., Palo Alto, CA, June 1986, pp. 162-175.
[3] D. E. Denning and P. J. Denning, "Certification of programs for secure information flow,"Commun. ACM, vol. 20, no. 7, pp. 504- 513, July 1977.
[4] R. Farrow, K. Kennedy, and L. Zucconi, "Graph grammars and global program data flow analysis," inProc. 17th IEEE Symp. Foundations of Computer Science, Oct. 1976, pp. 42-56.
[5] J. Ferrante, K. Ottenstein, and J. Warren, "The program dependence graph and its use in optimization,"ACM Trans. Program. Lang. Syst., vol. 9, no. 3, pp. 319-349, July 1987.
[6] L. D. Fosdick and L. J. Osterweil, "Data flow analysis in software reliability,"ACM Comput. Surveys, vol. 8, no. 3, pp. 306-330, Sept. 1976.
[7] S. Horwitz, J. Prins, and T. Reps, "On the adequacy of program dependence graphs for representing programs," inProc. Fifteenth ACM Symp. Principles of Programming Languages, ACM, New York, 1988, pp. 146-157.
[8] S. Horwitz, J. Prins, and T. Reps, "Integrating non-interfering versions of programs," inProc. Fifteenth ACM Symp. Principles of Programming Languages, ACM, New York, 1988, pp. 133-145.
[9] A. K. Jones and R. J. Lipton, "The enforcement of security policies for computation,"ACM Operat. Syst. Rev. (Proc. 5th Symp. Operat. Syst. Principles), vol. 9, no. 5, pp. 197-206, Nov. 1975.
[10] G. A. Kildall, "A unified approach to global program optimization," inProc. ACM Symp. on Principles of Program. Languages, 1973, pp. 194-206.
[11] D. J. Kuck,The Structure of Computers and Computations, vol. 1. New York: Wiley, 1978.
[12] D. J. Kuck, R.H. Kuhn, B. Leasure, D.A. Padua, and M. Wolfe, "Compiler transformation of dependence graphs," inConf. Rec. 8th ACM Symp. Principles Program. Languages, Williamsburg, VA, Jan. 1981.
[13] L. E. Moser, "Composition rules for data dependency graphs," Dep. Comput. Sci., Univ. California, Santa Barbara, Tech. Rep. TRCS87-17, Oct. 1987.
[14] E.W. Myers, "A Precise Interprocedural Dataflow Algorithm,"Conf. Rec. Ann. Symp. Principles of Programming Languages, ACM, New York, 1981, pp. 219-230.
[15] K. Ottenstein and L. Ottenstein, "The program dependence graph in software development environments,"ACM SIGPLAN Notices, vol. 19, no. 5, pp. 177-184, May 1984; see also,Proc. ACM SIGSOFT/SIGPLAN Software Eng. Symp. Practical Software Development Environments.
[16] D. A. Padua and M. J. Wolfe, "Advanced compiler optimizations for supercomputers,"Common. ACM, vol. 29, no. 12, pp. 1184- 1201, Dec. 1986.
[17] J. H. Reif and H. R. Lewis, "Symbolic evaluation and the global value graph," inConf. Rec. Fourth ACM Annu. Symp. Principles of Programming Languages, ACM, New York, Jan. 1977, pp. 104-118.
[18] B. K. Rosen, "High-level data flow analysis,"Commun. ACM, vol. 20, pp. 712-724, 1977.
[19] B.G. Ryder and M. C. Paull, "Incremental data-flow analysis,"ACM Trans. Program Lang. Syst., vol. 10, pp. 1-50, Jan. 1988.

Index Terms:
composition rules; Ada programs; data dependency graphs; program development environment; tracking; information flow; primitive program statements; iteration; recursion; exception handling; tasking; correctness; Ada; data structures; programming.
L.E. Moser, "Data Dependency Graphs for Ada Programs," IEEE Transactions on Software Engineering, vol. 16, no. 5, pp. 498-509, May 1990, doi:10.1109/32.52773
Usage of this product signifies your acceptance of the Terms of Use.