On the Relationship between Software Complexity and Maintenance Costs


As software becomes more and more complex due to increased number of module size, procedure size, and branching complexity, software maintenance costs are often on the increase. Consider a software such as Windows 2000 operating systems with over 29 million lines of code (LOC), 480,000 pages if printed, a stack of paper 161 feet high, estimate of 63,000 bugs in the software when it was first released [1] and with over 1000 developers, there is no doubt that such a large and complex software will require large amount of money (in US Dollars), social and environmental factors to maintain it. It has been estimated that over 70% of the total costs of software development process is expended on maintenance after the software has been delivered. This paper studies the relationship between software complexity and maintenance cost, the factors responsible for software complexity and why maintenance costs increase with software complexity. Some data collected on Windows, Debian Linux, and Linux Kernel operating systems were used. The results of our findings show that there is a strong correlation between software complexity and maintenance costs. That is, as lines of code increase, the software becomes more complex and more bugs may be introduced, and hence the cost of maintaining software increases.

Share and Cite:

Ogheneovo, E. (2014) On the Relationship between Software Complexity and Maintenance Costs. Journal of Computer and Communications, 2, 1-16. doi: 10.4236/jcc.2014.214001.

Conflicts of Interest

The authors declare no conflicts of interest.


[1] Slonneger, K. (2004) Software Development: An Introduction.
[2] Lyu, M.R. (1996) Handbook on Software Reliability Engineering. McGraw-Hill, USA and IEEE Computer Society Press, Los Alamitos, California, USA.
[3] Humphrey, W.S. (2001) Winning with Software: An Executive Strategy, Addison-Wesley Professional, Part of the SEI Series in Software Engineering, 2001.
[4] Ogheneovo, E.E. (2013) Software Maintenance and Evolution: The Implication for Software Development. West Africa Journal of Industrial and Academic Research, 7, 34-42.
[5] Li, Z., Lu, S., Myagmar, S. and Zhou, Y. (2006) CP-Miner: Finding Copy-Paste and Related Bugs in Large-Scale Software Code. Transaction on Software Engineering, 32, 176-192.
[6] Pigosky, T.M. (2001) Software Maintenance. IEEE—Trial Version 1.00—May 2001.
[7] Dvorak, D.L., Ed. (2009) NASA Study on Flight Complexity Final Report, Systems and Software Division, Jet Propulsion Laboratory, California Institute of Technology.
[8] Shukla, R. and Misra, A.K. (2008) Estimating Software Maintenance Effort—A Neural Network Approach. Proceedings of the Int’l Software Engineering Conference, 19-20 February 2008, Hyderabad, 107-112.
[9] Bhattacherje, V., Kumar, P. and Kumar, M.S. (2009) Complexity Estimation. Journal of Theoretical and Applied Metric for Analogy Based Effort-Information Technology, 6, 1-8.
[10] Mishra, S., Tripathy, K.C. and Mishra, M.K. (2010) Effort Estimation Based on Complexity and Size of Relational Database System. Int’l Journal of Computer Science and Application, 1, 419-422.
[11] Lehman, M.M. (1996) Laws of Software Evolution Revisited. Proceedings of European Workshop on Software Process Technology (EWSPT’96), Nancy, 9-11 October 1996, 108-124.
[12] Erlikh, I. (2000) Leveraging Legacy System Dollars for E-Business. Information Technology Proceedings, May/June 2000, 17-23.
[13] Ogheneovo, E.E. (2014) Software Dysfunction: Why Do Software Fail? Journal of Computer and Communications, 2, 25-35.
[14] Barry, E.J., Kemerer, C.F. and Slaughter, S.A. (1999) Toward a Detailed Classification Scheme for Software Maintenance Activities. Proceedings of the 5th Americas Conference on Information Systems, Milwaukee, 13-15 August 1999, 126-128.
[15] Kemerer, C.F. and Slaughter, S.A. (1999) An Empirical Approach to Studying Software Evolution. IEEE Transactions on Software Engineering, 25, 493-509.
[16] Akanmu, T.A., Olabiyisi, T.A., Omidiora, E.O., Oyeleye, C.A., Mabayoje, M.A. and Babatunde, A.O. (2010) Comparative Study of Complexities of Breadth-First Search and Depth-First Search Algorithms Using Software Complexity Measures. Proceedings of the World Congress on Engineering (WCE’10), London, 30 June-2 July 2010, 203-208.
[17] Basili, V.R. (1980) Qualitative Software Complexity Models: A Summary. In: Tutorial on Models and Methods for Software Management and Engineering, IEEE Computer Society Press, Los Alamitos.
[18] Delaune, S. and Jacquemard, F. (2004) A Theory of Dictionary Attacks and Its Complexity. Proceedings of the 17th IEEE Computer Security Foundations Workshop, Pacific Grove, 28-30 June 2004, 2-15.
[19] D?rne, D. (1996) The Logic of Failure: Recognizing and Avoiding Error in Complex Situations. Rowoholt Verlag GMBH, 1989. English Translation: Basic Books.
[20] Kearney, J.K., Sedlmeyer, R.L., Thompson, W.B., Gray, M.A. and Adler, W.B. (1986) Software Complexity Measurement. Communications of the ACM, 29, 1044-1050.
[21] Boehm, B.W. (1981) Software Engineering Economics. Prentice Hall, Englewood Cliff.
[22] Banker, R.D., Datar, S.M. and Zweig, D. (1989) Software Complexity and Maintainability. Proceedings of the 10th International Conference on Information Systems, Boston, 247-255.
[23] Shapiro, S. (1989) Splitting the Difference: The Historical Necessity of Synthesis in Software Engineering. IEEE Annals of the History of Computing, 19, 20-54.
[24] Brooks Jr., F.P. (1996) No Silver Bullet: Essence and Accidents of Software Engineering. Proceedings of the IFIP 10th World Computing Conference, Amsterdam, 1069-1076.
[25] Ghezzi, C., Jazayeri, M. and Mandrioli, D. (2002) Fundamentals of Software Engineering. Prentice Hall, Englewood Cliffs.
[26] Lehman, M.M. (1980) Programs, Life Cycles, and Laws of Software Evolution. Proceedings of the IEEE, 68, 1060-1076.
[27] Banker, R.D., Datar, S.M., Kemerer, C.F. and Zweig, D. (1993) Software Complexity and Maintenance Costs. Communications of the ACM, 36, 81-94.
[28] Engelbertink, F.P. and Vogt, H.H. (2010) How to Save on Software Maintenance Costs. Omnext White Paper. Accessed 10 July 2013.
[29] Biegel, B. and Diehl, S. (2010) JCCD: A Flexible and Extensible API for Implementing Custom Code Detectors. Proceedings of the 25th IEEE/ACM International Conference on Automated Software Engineering, Antwerp, 20-24 September 2010, 167-168.
[30] Wang, X., Dang, Y., Zhang, L., Zhang, D., Lan, E. and Mei, H. (2012) Can I Clone This Piece of Code Here? Proceedings of ACM International Conference on Automated Software Engineering (ASE), Essen, 3-7 September 2012.
[31] Jiang, L., Su, Z. and Chiu, E. (2007) Context-Based Detection of Clone-Related Bugs. FSE’07, 3-7 September 2007, Cavtat, 55-64.
[32] Gode, N. and Koschke, R. (2011) Frequency and Risks of Change to Clones. Proceedings of the International Conference on Software Engineering (ICSE’11), Waikiki, 21-28 May 2011, 311-320.
[33] Kasper, C. and Godfrey, M.W. (2008) Cloning Considered Harmful, Considered Harmful: Pattern of Cloning in Software. Empirical Software Engineering, 13, 645-692.
[34] Xie, Y. and Aiken, A. (2007) Saturn: A Scalable Framework for Error Detection Using Boolean Satisfiability. ACM Transaction on Programming Language System, 29, Article No: 16.
[35] Le, W. and Soffa, M.L. (2008) Marple: A Demand-Driven Path-Sensitive Buffer Overflow Detector. Proceedings of the 16th ACM SCGSOFT, International Symposium of Foundations of Software Engineering, FSE’08, 9-15 November 2008, Atlanta, 272-282.
[36] Le, W. (2010) Toward a Practical, Path-Based Framework for Detecting and Diagnosing Software Faults. Unpublished PhD Thesis, University of Virginia, Charlottesville.
[37] Taba, S.E.S., Khomh, F., Zou, Y., Hassan, A.E. and Nagappan, M.L. (2013) Predicting Bugs Using Antipatterns.
[38] Grubb, P. and Takang, A.A. (2003) Software Maintenance: Concepts and Practice. 2nd Edition, World Scientific Publishing Company, Singapore.
[39] Booch, G. (2002) object-Oriented Analysis and Design with Applications. 2nd Edition, Pearson Education, Upper Saddle River.
[40] Vliet, H.V. (2000) Software Engineering: Principles and Practice. 2nd Edition, John Wiley & Sons, West Sussex, England.
[41] Baldwin, A. and Clark, J. (2006) Windows Vista Late—But Why?
[42] Fried, L. (2006) Vista Debut Hits a Delay. CNet News.com, 21 March 2006.
[43] Guth, R.A. (2005) Code Red: battling Google, Microsoft Changes How It Builds Software. The Wall Journal, A1. Factiva, MIT Libraries, Cambridge.
[44] Walters, R. (2005) Obstacles Stand in the Way of a Cultural Shift, Financial Times, November 17, 2005: 17. Factiva, MIT Libraries, Cambridge.
[45] Shihab, E., Bird, C. and Zimmermann, T. (2012) The Effects of Branching Strategies on Software Quality. Proceedings of ESEM’12, Lund, 17-22 September 2012, 301-310.
[46] Walrad, C. and Strom, D. (2002) The Importance of Branching Models in SCM. Computer Journal, 35, 31-38.
[47] Appleton, B., Berazuk, S., Cabrera, R. and Orenstein, R. (1998) Streamed Links: Branching Patterns for Parallel Software Development, 2002.
[48] Premraj, R., Tang, A., Linssen, N., Geraats, H. and Vliet, H. (2001) To Branch or Not to Branch? Proceedings of the 2nd Workshop on Software Engineering for Sensor Network Applications, 81-90.
[49] Mall, R. (2009) Fundamentals of Software Engineering. 3rd Edition, PHI Learning Private Ltd., New Delhi, 404-411.
[50] Chakraverti, S., Kumar, S., Agarwal, S.C. and Chakraverti, A.K. (2012) Modified COCOMO Model for Maintenance Cost Estimation of Real Time System Software. International Journal of Computer Science and Network (IJCSN), 1, 9-15.
[51] Wheeler, D.A. (2002) More than a Gigabyte: Estimating GNU/Linux’s Size.
[52] McPherson, A., Proffitt, B. and Hale-Evans, R. (2008) Estimating the Total Development Cost of a Linux Distribution.

Copyright © 2023 by authors and Scientific Research Publishing Inc.

Creative Commons License

This work and the related PDF file are licensed under a Creative Commons Attribution 4.0 International License.