Skip to main content
Log in

Software complexity and software maintenance: A survey of empirical research

  • Published:
Annals of Software Engineering

Abstract

A number of empirical studies have pointed to a link between software complexity and software maintenance performance. The primary purpose of this paper is to document “what is known” about this relationship, and to suggest some possible future avenues of research. In particular, a survey of the empirical literature in this area shows two broad areas of study: complexity metrics and comprehension. Much of the complexity metrics research has focused on modularity and structure metrics. The articles surveyed are summarized as to major differences and similarities in a set of detailed tables. The text is used to highlight major findings and differences, and a concluding remarks section provides a series of recommendations for future research.

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

  • An, K.H., D.A. Gustafson, and A.C. Melton (1987), “A Model for Software Maintenance”,3rd IEEE Conference on Software Maintenance, pp. 57–62.

  • Baecker, R. (1988), “Enhancing Program Readability and Comprehensibility with Tools for Program Visualization”,10th International Conference on Software Engineering, pp. 356–366.

  • Banker, R.D., S.M. Datar, C.F. Kemerer, and D. Zweig (1993), “Software Complexity and Software Maintenance Costs”,Communications of the ACM 36, 11, 81–94.

    Google Scholar 

  • Basili, V.R. and B. Perricone (1984), “Software Errors and Complexity: An Empirical Investigation”,Communications of the ACM 27, 1, 42–52.

    Google Scholar 

  • Benander, B.A., N. Gorla, and A.C. Benander (1990), “An Empirical Study of the Use of the GOTO Statement”,Journal of Systems and Software 11, 3, 217–223.

    Google Scholar 

  • Bowen, J.B. (1983), “Software Maintenance, An Error Prone Activity”,1st IEEE Conference on Software Maintenance, pp. 102–105.

  • Card, D.N. and W.W. Agresti (1988), “Measuring Software Design Complexity”,Journal of Systems and Software 8, 3, 185–197.

    Google Scholar 

  • Compton, B. and C. Withrow (1990), “Prediction and Control of ADA Software Defects”,Journal of Systems and Software 12, 3, 199–207.

    Google Scholar 

  • Conte, S.D., H.E. Dunsmore, and V.Y. Shen (1986),Software Engineering Metrics and Models, Benjamin-Cummings, Reading, MA.

    Google Scholar 

  • Coupal, D. and P.N. Robillard (1990), “Factor Analysis of Source Code Metrics”,Journal of Systems and Software 12, 3, 263–269.

    Google Scholar 

  • Curtis, B., S.B. Sheppard, P. Milliman, M.A. Borst, and T. Love (1979), “Measuring the Psychological Complexity of Software Maintenance Tasks with the Halstead and McCabe Metrics”,IEEE Transactions on Software Engineering SE-5, 2, 96–104.

    Google Scholar 

  • Curtis, B., S.B. Sheppard, J.B. Kruesi-Bailey, and D. Boehm-Davis (1989), “Experimental Evaluation of Software Documentation Formats”,Journal of Systems and Software 9, 2, 167–207.

    Google Scholar 

  • Cusumano, M. and C.F. Kemerer (1990), “A Quantitative Analysis of US and Japanese Practice and Performance in Software Development”,Management Science 36, 11, 1384–1406.

    Google Scholar 

  • Dean, J.S. and B.P. McCune (1983), “An Informal Study of Software Maintenance Problems”,1st IEEE Conference on Software Maintenance, pp. 137–139.

  • Fjelstad, R.K. and W.T. Hamlen (1983), “Application Program Maintenance Study: Report to Our Respondents”, InTutorial on Software Maintenance, G. Parikh and N. Zvegintzov, Eds., IEEE Computer Society Press, Los Angeles, CA, pp. 11–27.

    Google Scholar 

  • Gibson, V.R. and J.A. Senn (1989), “System Structure and Software Maintenance Performance”,Communications of the ACM 32, 3, 347–358.

    Google Scholar 

  • Gill, G.K. and C.F. Kemerer (1991), “Cyclomatic Complexity Density and Software Maintenance Productivity”,IEEE Transactions on Software Engineering 17, 12, 1284–1288.

    Google Scholar 

  • Gorla, N., A.C. Benander, and B.A. Benander (1990), “Debugging Effort Estimation Using Software Metrics”,IEEE Transactions on Software Engineering 16, 2, 223–231.

    Google Scholar 

  • Gremillion, L.L. (1984), “Determinants of Program Repair Maintenance Requirements”,Communications of the ACM 27, 8, 826–832.

    Google Scholar 

  • Gustafson, D.A., A.Melton, and C.S. Hsieh (1985), “An Analysis of Software Changes During Maintenance and Enhancement”,2nd IEEE Conference on Software Maintenance, pp. 92–95.

  • Hale, D.P. and D.A. Haworth (1988), “Software Maintenance: A Profile of Past Empirical Research”,Proceedings of the 4th IEEE Conference on Software Maintenance, pp. 236–240.

  • Halstead, M. (1977),Elements of Software Science, Elsevier/North-Holland, New York, NY.

    Google Scholar 

  • Harrison, W. and C. Cook (1986), “Are Deeply Nested Conditionals Less Readable?”,Journal of Systems and Software 6, 335–341.

    Google Scholar 

  • Henry, S. and D. Kafura (1981), “Software Structure Metrics Based on Information Flow”,IEEE Transactions on Software Engineering SE-7, 510–518.

    Google Scholar 

  • Jensen, H.A. and K. Vairavan (1985), “An Experimental Study of Software Metrics for Real-Time Software”,IEEE Transactions on Software Engineering SE-13, 2, 231–234.

    Google Scholar 

  • Kafura, D. and G.R. Reddy (1987), “The Use of Software Complexity Metrics in Software Maintenance”,IEEE Transactions on Software Engineering SE-13, 3, 335–343.

    Google Scholar 

  • Kemerer, C.F. and A.K. Ream (1992), “Empirical Research on Software Maintenance: 1981–1990”, Working Paper 237, MIT Center for Information Systems Research.

  • Lehman, J.A. (1989), “An Empirical Comparison of Textual and Graphical Data Structure Documentation for COBOL Programs”,IEEE Transactions on Software Engineering SE-11, 2, 12–26.

    Google Scholar 

  • Letovsky, S. (1987), “Cognitive Processes in Program Comprehension”,Journal of Systems and Software 7, 4, 325–339.

    Google Scholar 

  • Li, H.F. and W.K. Cheung (1987), “An Empirical Study of Software Metrics”,IEEE Transactions on Software Engineering SE-13, 6, 697–708.

    Google Scholar 

  • Lind, R. and K. Vairavan (1989), “An Experimental Investigation of Software Metrics and their Relationship to Software Development Effort”,IEEE Transactions on Software Engineering SE-15, 5, 649–653.

    Google Scholar 

  • Littman, D.C., J. Pinto, S. Letovsky, and E. Soloway (1987), “Mental Models and Software Maintenance”,Journal of Systems and Software 7, 341–355.

    Google Scholar 

  • Lohse, J.B. and S.H. Zweben (1984), “Experimental Evaluation of Software Design Principles: An Investigation Into the Effect of Module Coupling on System Modifiability”,Journal of Systems and Software 4, 4, 301–308.

    Google Scholar 

  • McCabe, T.J. (1976), “A Complexity Measure”,IEEE Transactions on Software Engineering SE-2, 4, 308–320.

    Google Scholar 

  • Miara, R.J., J.A. Musselman, J.A. Navarro, and B. Shneiderman (1983), “Program Indentation and Comprehensibility”,Communications of the ACM 26, 11, 861–867.

    Google Scholar 

  • Munson, J.C. and T.M. Khoshgoftaar (1990), “Applications of a Relative Complexity Metric for Software Project Management”,Journal of Systems and Software 12, 3, 283–291.

    Google Scholar 

  • Oman, P. and C. Cook (1990), “Design and Code Traceability Using a PDL Metrics Tool”,Journal of Systems and Software 12, 3, 189–98.

    Google Scholar 

  • Oman, P.W., C.R. Cook, and M. Nanja (1989), “Effects of Programming experience in Debugging Semantic Errors”,Journal of Systems and Software 9, 192–207.

    Google Scholar 

  • Porter, A. A. and R. Selby (1990), “Evaluating Techniques for Generating Metric-Based Classification Trees”,Journal of Systems and Software, 12, 3, 209–218.

    Google Scholar 

  • Ramsey, H.R., M.E. Atwood, and J.R. Van Doren (1983), “Flowcharts Versus Program Design Languages: An Experimental Comparison”,Communications of the ACM 26, 6, 445–449.

    Google Scholar 

  • Robson, D.J., K.H. Bennett, B.J. Cornelius, and M. Munro (1991), “Approaches to Program Comprehension”,Journal of Systems and Software 14, 79–84.

    Google Scholar 

  • Rombach, H.D. (1987), “A Controlled Experiment on the Impact of Software Structure on Maintainability”,IEEE Transactions on Software Engineering SE-13, 3, 344–354.

    Google Scholar 

  • Schneidewind, N.F. (1987), “The State of Software Maintenance”,IEEE Transactions on Software Engineering SE-13, 3, 303–310.

    Google Scholar 

  • Selby, R. and V. Basili (1988), “Error Localization During Software Maintenance: Generating Hierarchical System Descriptions from the Source Code Alone”,Proceedings of the 4th IEEE Conference on Software Maintenance, pp. 192–197.

  • Shen, V.Y., T.-J. Yu, S.M. Thebaut, and L.R. Paulsen (1985), “Identifying Error-Prone Software — An Empirical Study”,IEEE Transactions on Software Engineering SE-11, 4, 317–323.

    Google Scholar 

  • Shneiderman, B. (1982), “Control Flow and Data Structure Documentation: Two Experiments”,Communications of the ACM 25, 1, 55–63.

    Google Scholar 

  • Sunohara, T., A. Takano, K. Vehara, and T. Ohkawa (1981), “Program complexity measure for software development management”,Proceedings of the Fifth International Conference on Software Engineering, San Diego, CA, pp. 100–106.

  • Swanson, E.B. and C.M. Beath (1989), “Reconstructing the Systems Development Organization”,MIS Quarterly 13, 3, 293–308.

    Google Scholar 

  • Tenny, T. (1988), “Readability: Procedures Versus Comments”,IEEE Transactions on Software Engineering SE-14, 9, 1271–1279.

    Google Scholar 

  • Troy, D.A. and S.H. Zweben (1981), “Measuring the Quality of Structured Designs”,Journal of Systems and Software 2, 113–120.

    Google Scholar 

  • Vessey, I. and R. Weber (1983), “Some Factors Affecting Program Repair Maintenance: An Empirical Study”,Communications of the ACM 26, 2, 128–134.

    Google Scholar 

  • Wake, S. and S. Henry (1988), “A Model Based on Software Quality Factors Which Predicts Maintenance”,Proceedings of the 4th IEEE Conference on Software Maintenance, pp. 382–387.

  • Weiser, M. (1982), “Programmers Use Slices When Debugging”,Communications of the ACM 25, 7, 446–452.

    Google Scholar 

  • Woodfield, S.N., H.E. Dunsmore, and V.Y. Shen (1981), “The Effect of Modularization and Comments on Program Comprehension”,5th International Conference on Software Engineering, pp. 215–223.

  • Yau, S.S. and P.S. Chang (1988), “A Metric of Modifiability for Software Maintenance”,Proceedings of the 4th IEEE Conference on Software Maintenance, pp. 374–381.

  • Yau, S.S. and J.S. Collofello (1985), “Design Stability Measures for Software Maintenance”,IEEE Transactions on Software Engineering, SE-11, 9, 849–856.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Kemerer, C.F. Software complexity and software maintenance: A survey of empirical research. Ann Software Eng 1, 1–22 (1995). https://doi.org/10.1007/BF02249043

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1007/BF02249043

ACM CR categories and subject descriptors

Keywords

Navigation