skip to main content
article
Free access

The program dependence graph in a software development environment

Published: 25 April 1984 Publication History

Abstract

The internal program representation chosen for a software development environment plays a critical role in the nature of that environment. A form should facilitate implementation and contribute to the responsiveness of the environment to the user. The program dependence graph (PDG) may be a suitable internal form. It allows programs to be sliced in linear time for debugging and for use by language-directed editors. The slices obtained are more accurate than those obtained with existing methods because I/O is accounted for correctly and irrelevant statements on multi-statement lines are not displayed. The PDG may be interpreted in a data driven fashion or may have highly optimized (including vectorized) code produced from it. It is amenable to incremental data flow analysis, improving response time to the user in an interactive environment and facilitating debugging through data flow anomaly detection. It may also offer a good basis for software complexity metrics, adding to the completeness of an environment based on it.

References

[1]
Alberga, C. N.; Brown, A. L.; Leeman, G. B., Jr.; Mikelsons, M. and Wegman, M. N. A program development tool. IBM J. of Res. & Dev. 28, 1 (Jan. 1984).
[2]
Allen, John Randal. Dependence analysis for subscripted variables and its application to program transformations. Ph.D. Thesis, Rice University, Houston (April 1983) 181 pages.
[3]
Allen, J.R.; Kennedy, Ken; Porterfield, Carrie; and Warren, Joe. Conversion of control dependence to data dependence. Conf. Rec. 10th Ann. ACM Symp. on Princ. of Prog. Lang. Austin, Texas (Jan. 1983) 177-189.
[4]
Baker, Albert L. and Zweben, Stuart H. The use of software science in evaluating modularity concepts. IEEE TSE SE-5, 2 (March 1979) 110-120.
[5]
Basili, Victor R. and Phillips, Tsai-Yun. Evaluating and comparing software metrics in the software engineering laboratory. Proc. 1981 ACM Workshop/Symp. on Meas. and Eval. of Software Quality published in ACM SIGMETRICS Performance Evaluation Review 10 1 (Spring 1981) 95-106.
[6]
Curtis, Bill; Sheppard, S. B.; and Milliman, P. Third time charm: stronger prediction of programmer performance by software complexity metrics. Proc. 4th IEEE Int. Conf. Soft. Eng. (1979) 356-360.
[7]
Curtis, Bill. Measurement and experimentation in software engineering. Proc. of the IEEE 68, 9 (Sept. 1980) 1144-1157.
[8]
Dennis, Jack B. First version of a data flow procedure language, revised Comp. Struc. Group Memo 93 (MAC Tech. Memo 61), Lab. For CS, MIT (May 1975) 21 pages.
[9]
Dennis, Jack B. Data flow supercomputers. IEEE Computer 13, 11 (Nov. 1980) 48-56.
[10]
Dunsmore, H. E. and Gannon, J. D. Data referencing: an empirical investigation. IEEE Computer 12, 12 (Dec. 1979) 50-59.
[11]
Ehrlich, Kate and Soloway, Elliot. An empirical investigation of the tacit plan knowledge in programming. Research Report 236, Dept. of Computer Science, Yale Univ. (April 1982).
[12]
Ferrante, Jeanne and Ottenstein, Karl J. A program form based on data dependency in predicate regions, Conf. Rec. Tenth ACM Symp. on Princ. of Prog. Lang., Austin, Texas (Jan. 24-26, 1983) 217-236.
[13]
Ferrante, Jeanne; Ottenstein, Karl J.; and Warren, Joe D. The program dependence graph and its use in optimization. IBM Research Report RC-10208 (August 1983) 10 pages, revision to appear in the Proc. Sixth International Symp. on Programming, Toulouse, France (April 1984), Springer-Verlag. Detailed paper in preparation.
[14]
Feuer, Alan R. and Fowlkes, Edward B. Some results from an empirical study of computer software. Proc. of the 4th Int. Conf. on soft. Eng., Munich, W. Germany, Sept. 17-19, 1979, pp. 351-355.
[15]
Halstead, M. H. Elements of Software Science, Elsevier North Holland, New York (1977).
[16]
Hennessy, J. L. Symbolic debugging of optimized code. ACM TOPLAS 5, 3 (July 1982) 323-344.
[17]
Henry, Sallie and Kafura, Dennis. Software structure metrics based on information flow. IEEE TSE SE-7, 5 (Sept. 1981) 510-518.
[18]
Howden, William E. Contemporary software development environments. CACM 25, 5 (May 1982) 318-329.
[19]
McCabe, T. J. A complexity measure. IEEE TSE SE-2 (1976) 308-320.
[20]
Mikelsons, M. Prettyprinting in an interactive environment. Proc. ACM SIGPLAN/SIGOA Symp. on Text Manipulation, Portland, OR (June 1981) 108-116, published as ACM SIGPLAN Notices.
[21]
Ottenstein, Karl J. and Ottenstein, Linda M. High-level debugging assistance via optimizing compiler technology (extended abstract), Proc. ACM SIGSOFT/SIGPLAN Soft. Eng. Symp. on High-Level Debugging (see {29} for full entry) 152-154.
[22]
Ottenstein, Karl J. An intermediate form based on a cyclic data-dependency graph. CS-TR 81-1, Math and Computer Sciences, Mich. Tech. Univ. (October 1981) 91 pages, under revision.
[23]
Ottenstein, Karl J. Data-flow graphs as an intermediate program form. Ph.D. Thesis, Computer Sciences, Purdue Univ. (August 1978) 283 pages.
[24]
Padua, David A.; Kuck, David J. and Lawrie, Duncan H. High-speed multiprocessors and compilation techniques. IEEE Trans. Comp. TC-29, 9 (Sept. 1980) 763-776.
[25]
Ryder, Barbara G. Incremental data flow analysis. Conf. Rec. Tenth ACM Symp. on Princ. of Prog. Lang., Austin, Texas (Jan. 24-26, 1983) 167-176.
[26]
Schneidewind, N. F. and Hoffman, H. M. An experiment in software error data collection and analysis. IEEE TSE SE-5, 3 (May 1979) 276-286.
[27]
Skedzielewski, Stephen and Glauert, J.R.W. IF1: An intermediate form for applicative languages, draft 7, November 21, 1983, Lawrence Livermore National Laboratory.
[28]
Soloway, Elliot; Ehrlich, Kate; Bonar, Jeffrey; and Greenspan, Judith. What do novices know about programming? Research Report 218, Dept. of Computer Science, Yale Univ. (Jan. 1982).
[29]
Tischler, Ron; Schaufler, Robin; Payne, Charlotte. Static analysis of programs as an aid to debugging. Proc. ACM SIGSOFT/SIGPLAN Soft. Eng. Symp. on High-Level Debugging, Pacific Grove, CA, March 20-23, 1983 published as ACM Software Engineering Notes 8, 4 (August 1983) and as ACM SIGPLAN Notices 18, 8 (August 1983) 155-158.
[30]
Treleaven, Philip C.; Hopkins, Richard P. and Rautenbach, Paul W. Combining data flow and control flow computing. The Computer Journal 25, 2 (1982) 208-217.
[31]
Warren, Joe D. A hierarchical basis for reordering transformations. Conf. Rec. 11th ACM Symp. Princ. Prog. Lang., Salt Lake City, Utah (January 1984).
[32]
Waters, Richard C. The programmer's apprentice: knowledge based program editing. IEEE Trans. Soft. Eng. SE-8. 1 (Jan. 1982) 1-12.
[33]
Waters, Richard C. Automatic analysis of the logical structure of programs. MIT AI-Lab TR-492, available as NTIS AD-A084 818 (December 1978) 207 pages.
[34]
Wegman, Mark. Summarizing graphs by regular expressions. Conf. Rec. Tenth ACM Symp. on Princ. of Prog. Lang., Austin, Texas (Jan. 24-26, 1983) 203-216.
[35]
Weiser, Mark. Program slicing, Proc. 5th Int. Conf. on Soft. Eng., San Diego, Calif., IEEE Computer Soc. Press (March 9-12, 1981) 439-449.
[36]
Weiser, Mark. Programmers use slices when debugging. CACM 25, 27 (July 1982) 446-452.
[37]
Zellweger, Polle T. An interactive high-level debugger for control-flow optimized programs, Proc. ACM SIGSOFT/SIGPLAN Soft. Eng. Symp. On High-Level Debugging (see {29} for full entry) 159-171.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGSOFT Software Engineering Notes
ACM SIGSOFT Software Engineering Notes  Volume 9, Issue 3
May 1984
196 pages
ISSN:0163-5948
DOI:10.1145/390010
Issue’s Table of Contents
  • cover image ACM Conferences
    SDE 1: Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
    April 1984
    196 pages
    ISBN:0897911318
    DOI:10.1145/800020
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 25 April 1984
Published in SIGSOFT Volume 9, Issue 3

Check for updates

Author Tags

  1. Code optimization
  2. Control flow
  3. Data flow
  4. Debugging
  5. Internal program representation
  6. Interpreter
  7. Program slice
  8. Software complexity metrics

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)451
  • Downloads (Last 6 weeks)50
Reflects downloads up to 28 Jan 2025

Other Metrics

Citations

Cited By

View all

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media