Saturday, October 12, 2013

Cost of Software Maintenance

Software maintenance is the dirty laundry of programming.  Every programmer wants to write code.  No one wants the mundane task of maintaining code.  But if a product is going to survive in the market place, it must be used for an extended period of time and eventually need maintenance.  Software maintenance includes expanding the functionality of a system to meet new requirements, so maintenance is more than fixing defects.

Changing a software system takes time, which costs money.  Frequently, the staff making the changes was not present during the creation of the product, so changes are made by people with no knowledge of the system.  Saying code is self-documenting is good for a laugh among mature programmers.  (The difference between an experienced programmer and a mature programmer is that a mature programmer has learned from experience.  It is astounding how many experienced programmers make amateurish mistakes because they have never learned from their experiences.)  Lack of documentation is one of many factors that increase the cost of maintenance.

Canright's Costs of Software Maintenance
  1. Assume a basic quantum of maintenance cost, Q.
  2. If no documentation, add Q.
  3. If code is riddled with poor logic, add Q.
  4. If the project lacks debugging tools or features, add Q.
  5. If the code has no error handling, add Q.
  6. If good programming practices (for maintainability) are omitted, add Q.
Here is Canright's Law of Software Maintenance Cost:  If code with the best maintainability costs Q hours or dollars for a software maintenance task, then code with the worst maintainability costs six times as much for the same maintenance task.

The Wages of Sin is Death

Code with poor maintainability features, after suffering many modifications by a changing parade of programmers, will turn into a Big Ball of Mud.  You might want to read the original article: http://www.laputan.org/mud/.  You might enjoy hearing a lecture on the topic (66 minutes) on YouTube: http://www.youtube.com/watch?v=h6Y9aJhqO78 by the author, Brian Foote.  This video lasts an hour and it is worth your time.

If you enjoyed reading Thomas Pynchon's Gravity's Rainbow , William Faulkner's Absalom, Absalom! or James Joyce's Ulysses (three illogical, hard to read books), then you might enjoy software maintenance on a Big Ball of Mud.  But most programmers suffer frustration when working on projects with hard to read code.  At this point maintenance can break down.

The ultimate cost of unmaintainable software is the death of the software product.  If you do not have replacement products, you can lose your customers and go out of business.

If you have developed a product that is so fragile, twisted, and unmaintainable that it is sure to die, then you need to unload it.  You need to sell it to an unwise investor before the product implodes.  Did you notice how many dot com acquisitions disappeared?

 Robert

PS:  I will elaborate on unloading your start up.  Consider Douglas Crockford, the inventor of the JSON data format and founder of Electric Communities. Hundreds of millions of dollars were invested in this company.  He sold out.  Eventually the company went bankrupt and was sold for peanuts.  He got out in time.  You do not want to be the owner when  the start up goes bankrupt!

List of Related Articles
Software Maintenance and Variables  March 16, 2014
Software Maintenance and Message IDs  April 2, 2014
Unique Method Names for SW Maintainability  August 26, 2017
Avoid Bit Fields  October 1, 2017

No comments:

Post a Comment

Comments require my approval before they appear. Be patient. It will take a day or two for your comment to appear.