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.

[1]  Brian Proffitt,et al.  Estimating the Total Development Cost of a Linux Distribution OCTOBER 2008 , 2008 .

[2]  Yuanyuan Zhou,et al.  CP-Miner: finding copy-paste and related bugs in large-scale software code , 2006, IEEE Transactions on Software Engineering.

[3]  Antony Tang,et al.  To branch or not to branch? , 2011, ICSSP '11.

[4]  Joseph K. Kearney,et al.  Software complexity measurement , 1986, CACM.

[5]  Hans van Vliet Software Engineering: Principles and Practice, 2nd Edition , 2000 .

[6]  Frederick P. Brooks,et al.  No Silver Bullet: Essence and Accidents of Software Engineering , 1987 .

[7]  Mary Lou Soffa,et al.  Marple: a demand-driven path-sensitive buffer overflow detector , 2008, SIGSOFT '08/FSE-16.

[8]  Stephan Diehl,et al.  JCCD: a flexible and extensible API for implementing custom code clone detectors , 2010, ASE.

[9]  Samaresh Mishra,et al.  Effort Estimation Based on Complexity and Size of Relational Database System , 2010 .

[10]  Stéphanie Delaune,et al.  A theory of dictionary attacks and its complexity , 2004, Proceedings. 17th IEEE Computer Security Foundations Workshop, 2004..

[11]  Ee Ogheneovo Software Maintenance and Evolution: The Implication for Software Development , 2013 .

[12]  L. Erlikh,et al.  Leveraging legacy system dollars for e-business , 2000 .

[13]  Grady Booch,et al.  Object-Oriented Analysis and Design with Applications , 1990 .

[14]  Rainer Koschke,et al.  Frequency and risks of changes to clones , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[15]  Mary Lou Soffa,et al.  Toward a practical, path-based framework for detecting and diagnosing software faults , 2010 .

[16]  Hans van Vliet,et al.  Software engineering - principles and practice , 1993 .

[17]  Christian Bird,et al.  The effect of branching strategies on software quality , 2012, Proceedings of the 2012 ACM-IEEE International Symposium on Empirical Software Engineering and Measurement.

[18]  Sheo Kumar,et al.  Modified Cocomo Model For Maintenance cost Estimation of Real Time System Software , 2012 .

[19]  Ee Ogheneovo,et al.  Software Dysfunction: Why Do Software Fail? , 2014 .

[20]  M. A. Mabayoje Comparative Study of Complexities of Breadth- First Search and Depth-First Search Algorithms using Software Complexity Measures , 2010 .

[21]  Chris F. Kemerer,et al.  Toward a Detailed Classification Scheme for Software Maintenance Activities , 1999 .

[22]  Barry W. Boehm,et al.  Software Engineering Economics , 1993, IEEE Transactions on Software Engineering.

[23]  Rajib Mall Fundamentals of Software Engineering , 2004, FSEN 2013.

[24]  Stuart C. Shapiro,et al.  Splitting the Difference: the Historical Necessity of Synthesis in Software Engineering , 2022 .

[25]  How to save on software maintenance costs An Omnext white paper on software quality November 2014 , 2014 .

[26]  Meir M. Lehman,et al.  Laws of Software Evolution Revisited , 1996, EWSPT.

[27]  Chris F. Kemerer,et al.  An Empirical Approach to Studying Software Evolution , 1999, IEEE Trans. Software Eng..

[28]  M.M. Lehman,et al.  Programs, life cycles, and laws of software evolution , 1980, Proceedings of the IEEE.

[29]  Penny Grubb,et al.  Software maintenance , 1996 .

[30]  Arun Kumar Misra,et al.  Estimating software maintenance effort: a neural network approach , 2008, ISEC '08.

[31]  Rajiv D. Banker,et al.  Software complexity and maintainability , 1989, ICIS '89.

[32]  Penny Grubb,et al.  Software Maintenance: Concepts and Practice , 2003 .

[33]  Lu Zhang,et al.  Can I clone this piece of code here? , 2012, 2012 Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering.

[34]  Michael W. Godfrey,et al.  "Cloning Considered Harmful" Considered Harmful , 2006, 2006 13th Working Conference on Reverse Engineering.

[35]  Carlo Ghezzi,et al.  Fundamentals of Software Engineering , 2011, Lecture Notes in Computer Science.

[36]  Dietrich Dörner,et al.  The Logic Of Failure: Recognizing And Avoiding Error In Complex Situations , 1997 .

[37]  David A. Wheeler More Than a Gigabuck: Estimating GNU/Linux''s Size , 2002, WWW 2002.

[38]  Stephen P. Berczuk,et al.  Streamed Lines: Branching Patterns for Parallel Software Development , 1998 .

[39]  Foutse Khomh,et al.  Predicting Bugs Using Antipatterns , 2013, 2013 IEEE International Conference on Software Maintenance.

[40]  Alexander Aiken,et al.  Saturn: A scalable framework for error detection using Boolean satisfiability , 2007, TOPL.

[41]  Zhendong Su,et al.  Context-based detection of clone-related bugs , 2007, ESEC-FSE '07.

[42]  Watts S. Humphrey Winning with Software: An Executive Strategy , 2001 .

[43]  Rajiv D. Banker,et al.  Software complexity and maintenance costs , 1993, CACM.

[44]  Charlene Walrad,et al.  The Importance of Branching Models in SCM , 2002, Computer.