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.
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.
Basili, V.R. and B. Perricone (1984), “Software Errors and Complexity: An Empirical Investigation”,Communications of the ACM 27, 1, 42–52.
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.
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.
Compton, B. and C. Withrow (1990), “Prediction and Control of ADA Software Defects”,Journal of Systems and Software 12, 3, 199–207.
Conte, S.D., H.E. Dunsmore, and V.Y. Shen (1986),Software Engineering Metrics and Models, Benjamin-Cummings, Reading, MA.
Coupal, D. and P.N. Robillard (1990), “Factor Analysis of Source Code Metrics”,Journal of Systems and Software 12, 3, 263–269.
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.
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.
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.
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.
Gibson, V.R. and J.A. Senn (1989), “System Structure and Software Maintenance Performance”,Communications of the ACM 32, 3, 347–358.
Gill, G.K. and C.F. Kemerer (1991), “Cyclomatic Complexity Density and Software Maintenance Productivity”,IEEE Transactions on Software Engineering 17, 12, 1284–1288.
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.
Gremillion, L.L. (1984), “Determinants of Program Repair Maintenance Requirements”,Communications of the ACM 27, 8, 826–832.
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.
Harrison, W. and C. Cook (1986), “Are Deeply Nested Conditionals Less Readable?”,Journal of Systems and Software 6, 335–341.
Henry, S. and D. Kafura (1981), “Software Structure Metrics Based on Information Flow”,IEEE Transactions on Software Engineering SE-7, 510–518.
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.
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.
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.
Letovsky, S. (1987), “Cognitive Processes in Program Comprehension”,Journal of Systems and Software 7, 4, 325–339.
Li, H.F. and W.K. Cheung (1987), “An Empirical Study of Software Metrics”,IEEE Transactions on Software Engineering SE-13, 6, 697–708.
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.
Littman, D.C., J. Pinto, S. Letovsky, and E. Soloway (1987), “Mental Models and Software Maintenance”,Journal of Systems and Software 7, 341–355.
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.
McCabe, T.J. (1976), “A Complexity Measure”,IEEE Transactions on Software Engineering SE-2, 4, 308–320.
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.
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.
Oman, P. and C. Cook (1990), “Design and Code Traceability Using a PDL Metrics Tool”,Journal of Systems and Software 12, 3, 189–98.
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.
Porter, A. A. and R. Selby (1990), “Evaluating Techniques for Generating Metric-Based Classification Trees”,Journal of Systems and Software, 12, 3, 209–218.
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.
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.
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.
Schneidewind, N.F. (1987), “The State of Software Maintenance”,IEEE Transactions on Software Engineering SE-13, 3, 303–310.
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.
Shneiderman, B. (1982), “Control Flow and Data Structure Documentation: Two Experiments”,Communications of the ACM 25, 1, 55–63.
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.
Tenny, T. (1988), “Readability: Procedures Versus Comments”,IEEE Transactions on Software Engineering SE-14, 9, 1271–1279.
Troy, D.A. and S.H. Zweben (1981), “Measuring the Quality of Structured Designs”,Journal of Systems and Software 2, 113–120.
Vessey, I. and R. Weber (1983), “Some Factors Affecting Program Repair Maintenance: An Empirical Study”,Communications of the ACM 26, 2, 128–134.
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.
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.
Author information
Authors and Affiliations
Rights 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
Issue Date:
DOI: https://doi.org/10.1007/BF02249043
ACM CR categories and subject descriptors
- D.2.7 [Software Engineering]: Distribution and Maintenance
- D.2.8 [Software Engineering]: Metrics
- D.2.9 [Software Engineering]: Management
- F.2.3 [Analysis of Algorithms and Problem Complexity]: Tradeoffs among Complexity Measures
- K.6.0 [Management of Computing and Information Systems]: General — Economics
- K.6.1 [Management of Computing and Information Systems]: Project and People Management
- K.6.3 [Management of Computing and Information Systems]: Software Management