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.
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.
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.
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.
Korel, B. 1987. The program dependence graph in static program testing. Information Processing Letters 24: 103–108.
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.
Author information
Authors and Affiliations
Rights 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
Issue Date:
DOI: https://doi.org/10.1023/A:1008088300124