Advertisement

Annals of Software Engineering

, Volume 1, Issue 1, pp 1–22 | Cite as

Software complexity and software maintenance: A survey of empirical research

  • Chris F. Kemerer
Article

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.

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 

Keywords

Maintenance complexity metrics modularity comprehension 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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.Google Scholar
  2. Baecker, R. (1988), “Enhancing Program Readability and Comprehensibility with Tools for Program Visualization”,10th International Conference on Software Engineering, pp. 356–366.Google Scholar
  3. 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
  4. Basili, V.R. and B. Perricone (1984), “Software Errors and Complexity: An Empirical Investigation”,Communications of the ACM 27, 1, 42–52.Google Scholar
  5. 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
  6. Bowen, J.B. (1983), “Software Maintenance, An Error Prone Activity”,1st IEEE Conference on Software Maintenance, pp. 102–105.Google Scholar
  7. Card, D.N. and W.W. Agresti (1988), “Measuring Software Design Complexity”,Journal of Systems and Software 8, 3, 185–197.Google Scholar
  8. Compton, B. and C. Withrow (1990), “Prediction and Control of ADA Software Defects”,Journal of Systems and Software 12, 3, 199–207.Google Scholar
  9. Conte, S.D., H.E. Dunsmore, and V.Y. Shen (1986),Software Engineering Metrics and Models, Benjamin-Cummings, Reading, MA.Google Scholar
  10. Coupal, D. and P.N. Robillard (1990), “Factor Analysis of Source Code Metrics”,Journal of Systems and Software 12, 3, 263–269.Google Scholar
  11. 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
  12. 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
  13. 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
  14. Dean, J.S. and B.P. McCune (1983), “An Informal Study of Software Maintenance Problems”,1st IEEE Conference on Software Maintenance, pp. 137–139.Google Scholar
  15. 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
  16. Gibson, V.R. and J.A. Senn (1989), “System Structure and Software Maintenance Performance”,Communications of the ACM 32, 3, 347–358.Google Scholar
  17. 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
  18. 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
  19. Gremillion, L.L. (1984), “Determinants of Program Repair Maintenance Requirements”,Communications of the ACM 27, 8, 826–832.Google Scholar
  20. 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.Google Scholar
  21. 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.Google Scholar
  22. Halstead, M. (1977),Elements of Software Science, Elsevier/North-Holland, New York, NY.Google Scholar
  23. Harrison, W. and C. Cook (1986), “Are Deeply Nested Conditionals Less Readable?”,Journal of Systems and Software 6, 335–341.Google Scholar
  24. Henry, S. and D. Kafura (1981), “Software Structure Metrics Based on Information Flow”,IEEE Transactions on Software Engineering SE-7, 510–518.Google Scholar
  25. 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
  26. 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
  27. Kemerer, C.F. and A.K. Ream (1992), “Empirical Research on Software Maintenance: 1981–1990”, Working Paper 237, MIT Center for Information Systems Research.Google Scholar
  28. 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
  29. Letovsky, S. (1987), “Cognitive Processes in Program Comprehension”,Journal of Systems and Software 7, 4, 325–339.Google Scholar
  30. 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
  31. 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
  32. 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
  33. 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
  34. McCabe, T.J. (1976), “A Complexity Measure”,IEEE Transactions on Software Engineering SE-2, 4, 308–320.Google Scholar
  35. 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
  36. 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
  37. 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
  38. 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
  39. 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
  40. 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
  41. 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
  42. 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
  43. Schneidewind, N.F. (1987), “The State of Software Maintenance”,IEEE Transactions on Software Engineering SE-13, 3, 303–310.Google Scholar
  44. 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.Google Scholar
  45. 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
  46. Shneiderman, B. (1982), “Control Flow and Data Structure Documentation: Two Experiments”,Communications of the ACM 25, 1, 55–63.Google Scholar
  47. 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.Google Scholar
  48. Swanson, E.B. and C.M. Beath (1989), “Reconstructing the Systems Development Organization”,MIS Quarterly 13, 3, 293–308.Google Scholar
  49. Tenny, T. (1988), “Readability: Procedures Versus Comments”,IEEE Transactions on Software Engineering SE-14, 9, 1271–1279.Google Scholar
  50. Troy, D.A. and S.H. Zweben (1981), “Measuring the Quality of Structured Designs”,Journal of Systems and Software 2, 113–120.Google Scholar
  51. 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
  52. 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.Google Scholar
  53. Weiser, M. (1982), “Programmers Use Slices When Debugging”,Communications of the ACM 25, 7, 446–452.Google Scholar
  54. 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.Google Scholar
  55. 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.Google Scholar
  56. 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

Copyright information

© J.C. Baltzer AG, Science Publishers 1995

Authors and Affiliations

  • Chris F. Kemerer
    • 1
  1. 1.Sloan School of ManagementMassachusetts Institute of TechnologyCambridgeUSA

Personalised recommendations