Maintaining Maintainability

Sep 10th, 2002 by Tony in QSM1

Over the life of a software system, the internal quality of the code is more important than the external quality in determining its controllability. In time, existing code may even come to have negative quality, meaning that it would cheaper to develop new code than attempt to keep repairing the old. Many organizations are holding large inventories of negative quality software, but usually they are unaware of that fact. Or, if they are aware, they are so unsure of their ability to develop new code that they continue to limp along patching ever more pitiful and expensive systems.

They know they must patch, of course, because they know that any system must have its functions maintained. What they don’t understand, however, is that any system must also have its maintainability maintained. Even software that is initially well designed and implemented begins to deteriorate and lose its maintainability in a software culture that doesn’t regularly invest in maintainability.

What has to be maintained for maintainability to be preserved? Besides functional faults and loss of efficiency, other side effects include increases (or decreases) in the size of the code itself, destruction of code quality, loss of design integrity, and obsolescence of documentation. All of these together constitute the decay of maintainability. Quite likely, the loss of maintainability is the ultimate cause of death for even the best-designed, -built, and -maintained systems.

— Jerry Weinberg, Quality Software Management Vol 1, Chapter 15

No Comments