Skip to main content
Log in

Empirical Studies of Control Dependence Graph Size for C Programs

  • Published:
Empirical Software Engineering Aims and scope Submit manuscript

Abstract

Many tools and techniques for performing software engineering tasks require control-dependence information, represented in the form of control-dependence graphs. Worst-case analysis of these graphs has shown that their size may be quadratic in the number of statements in the procedure that they represent. Despite this result, two empirical studies suggest that in practice, the relationship between control-dependence graph size and program size is linear. These studies, however, were performed on a relatively small number of Fortran procedures, all of which were derived from numerical methods programs. To further investigate control-dependence size, we implemented tools for constructing the two most popular types of control-dependence graphs, and ran our tools on over 3000 C functions extracted from a wide range of source programs. Our results support the earlier conclusions about control-dependence graph size.

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

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  • Agrawal, H., DeMillo, R., and Spafford, E. 1991. Dynamic slicing in the presence of unconstrained pointers. Proceedings of the Symposium on Testing, Analysis and Verification, 60–73.

  • Agrawal, H., Horgan, J., Krauser, E., and London, S. 1993. Incremental regression testing. Proceedings of the Conference on Software Maintenance-1993, 348–357.

  • Agrawal, H., and Horgan, J. R. 1990. Dynamic program slicing. '90 Conference on Programming Language Design and Implementation, 246–256.

  • Bates, S., and Horwitz, S. 1993. Incremental program testing using program dependence graphs. Proceedings of the 20th ACM Symposium on Principles of Programming Languages, 384–396.

  • Binkley, D. 1992. Using semantic differencing to reduce the cost of regression testing. Proceedings of the Conference on Software Maintenance-1992, 41–50.

  • Cytron, R., Ferrante, J., Rosen, B. K., Wegman, M. N., and Zadeck, F. K. 1989. An efficient method of computing static single assignment form. POPL89, 25–35.

  • Cytron, R., Ferrante, J., and Sarkar, V. 1990. Compact representations for control dependence. '90 Conference on Programming Language Design and Implementation, 337–351.

  • Duesterwald, E., Gupta, R., and Soffa, M. L. 1992. Rigorous data flow testing through output influences. Second Irvine Software Symposium, 131–145.

  • Ferrante, J., Ottenstein, K. J., and Warren, J. D. 1987. The program dependence graph and its use in optimization. ACM Transactions on Programming Languages and Systems 9(3): 319–349.

    Google Scholar 

  • Gupta, R., Harrold, M. J., and Soffa, M. L. 1992. An approach to regression testing using slicing. Proceedings of the Conference on Software Maintenance-1992, 299–308.

  • Gupta, R., and Soffa, M. L. 1993. Employing static information in the generation of test cases. Journal of Software Testing, Verification and Reliability 3(1): 29–48.

    Google Scholar 

  • Harrold, M. J., Larsen, L., Lloyd, J., Nedved, D., Page, M., Rothermel, G., Singh, M., and Smith, M. 1995.

  • Aristotle: A system for the development of program-analysis-based tools. Proceedings of the 33rd Annual Southeast Conference, 110–119.

  • Horwitz, S., Prins, J., and Reps, T. 1989. Integrating non-interfering versions of programs. ACM Transactions on Programming Languages and Systems 11(3): 345–387.

    Google Scholar 

  • Korel, B. 1987. The program dependence graph in static program testing. Information Processing Letters 24: 103–108.

    Google Scholar 

  • Rothermel, G., and Harrold, M. J. 1993. A safe, efficient algorithm for regression test selection. Proceedings of the Conference on Software Maintenance-1993, 358–367.

  • Rothermel, G., and Harrold, M. J. 1994. Selecting tests and identifying test coverage requirements for modified software. Proceedings of the 1994 International Symposium on Software Testing and Analysis, 169–184.

  • Smith, B. T., Boyle, J. M., Dongarra, J. J., Garbow, B. S., Ikebe, Y., Klema, V. C., and Moler, C. B. 1976. Matrix Eigensystem Routines-Eispack Guide. Springer-Verlag.

  • Smith, J. M. 1995. MCC: A modular and extensible C compiler. Master's thesis, Clemson University.

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Harrold, M.J., Jones, J.A. & Rothermel, G. Empirical Studies of Control Dependence Graph Size for C Programs. Empirical Software Engineering 3, 203–211 (1998). https://doi.org/10.1023/A:1008088300124

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/A:1008088300124

Navigation