An application could live for as long as the enterprise itself. A 5 years old startup would have a 5 years old system and a 20 years old enterprise may have a batch job that was written 20 years ago that still runs in one of their servers.
The cost of maintaining these applications grows as time passes by. The technology becomes outdated, the original developer gets promoted and in time, nobody remembers the reasons for the application created in the first place. At best, the future maintainer is left with a lengthy document that may explain some contexts but not all, or at worst, they are left with a guessing game.
Maintaining these applications are the challenge of everyday people working in IT.
This series is a 4 part series. In the first part we will explore into what is maintainability and why do we need it. The second part will explore into ways that we can measure maintainability. The third part will look into how we can improve maintainability and the fourth part of this series will look into challenges that we often encountered and how we can mitigate them when attempting to create maintainable software.
Let’s look into maintainability.
What Is Maintainability?
The Systems Engineering Body of Knowledge (sebok) defines maintainability as the probability that a system or system element can be repaired in a defined environment within a specified period of time. Increased maintainability implies shorter repair times.
The IEEE defines maintainability as the ease with which a software system or component can be modified to correct faults, improve performance, or other attributes, or adapt to a changed environment.
Maintainability is the ease in which a software system can be repaired and extend within a specified period of time. It has a direct impact on the cost to keep the software running. A poor maintainability in an application would take more time for the developer to repair and extend. When a change happens, there is a lower confidence level from the maintainer to make modifications without side effects. A good and maintainable application instills a higher confidence that the modifications can be done without side effects.
Maintainability is the ease in which a software system can be repaired and extend within a specified period of time
Why do we need maintainability?
A software must keep adapting to the business requirement to satisfy user needs. As companies move to become reliant on software to keep competitive, the volatile landscape of changing business itself becomes the mandate of the change required. Maintainable software allows people to accommodate and adapt to these requirements at a much faster rate with lesser side effects.
As companies move to become reliant on software to keep competitive, the volatile landscape of changing business itself becomes the mandate of the change required
What is also important to remember is that the degree of maintainability is a function of time. The longer the system exists in a company without being touched, the more difficult it is to maintain. People who created the application would forget and move and the undocumented reason the system was created would be lost. The situation leaves the rest of the individual to guess that reason. Often, this results in the new maintainer to re-write the application, as they would find the older application to be not manageable and it is easier just to do a rewrite.
In the next part of the series, we will explore a few ways that I have used to measure maintainability in an application.