Why Good Software Goes Bad and How to Stop It
Software maintenance is crucial to business success
If you’re tasked with maintaining software and it seems no matter what you do, your efforts only make it worse, you’ll probably relate when authors Alain April and Alain Abran say in their book, “Software Maintenance Management: Evaluation and Continuous Improvement,” that “the act of software maintenance itself causes software to deteriorate.”
Part of the problem comes right at the beginning of new development projects. Many of you may have been involved in new projects that contained an objective of creating a system that was “maintainable.” Did you ever define exactly what that meant? Did you then assign tasks in the project plan for the implementation, tracking, review and quality assurance of this objective—treating it as a feature just as visible and verifiable as any user-driven one? This strategy is rare, but considering software maintenance is generally thought to account for 70 percent to 90 percent of its lifetime cost, it shouldn’t be.
After software is deployed, maintenance often begins immediately because, one, defects slipped through, and two, some requirements were deferred due to lack of time and money. Thus starts the descent of good software into bad.
Maintenance causes software to degrade because it inevitably makes it more complex. At the outset, the original design was the optimal one for the required set of features. As new features are added in maintenance, it’s impractical to continually refactor everything into a new optimal design with the full set of original features plus the new ones. Thus, the changed design is less and less optimized as more changes are made. Compounding this problem, the people who conceived the system design are decreasingly available to engineer changes into the form of the original concepts.
Software maintenance is harder than software development, but it’s critical to business success.