Maintainability is how easy it is for a system to be supported, changed, enhanced, and restructured over time. Understanding up front how maintainable software needs to be for a certain project is important, due to its impact on your architecture. This impact makes maintainability an important non-functional requirement to consider when developing software.
If an application has a relatively short lifespan, then the cost associated with implementing an easy-to-maintain architecture may not make sense. However, if the software will have a medium to long life, then we must start making serious considerations about how future upgrades and changes will be implemented.
Breaking Down Maintainability
Here are some questions to ask yourself as you consider how to structure maintainability requirements.
- Lifespan: What is the expected life of the software? Short-lived applications will not likely require a high level of maintainability, due to their imminent replacement.
- Frequency of Revisions: How often will the application need to be modified? If you are utilizing an agile or iterative software methodology there will likely be frequent modifications. Likewise, if the business process behind the application changes frequently, then a higher degree of maintainability will be necessary.
- Resources: How will the client support this software? If IT support resources within an organization are scarce, then a more easily modified software is advantageous.
To clarify how to apply these questions, and the resulting requirements, let’s look at an example:
SeiAg is an agricultural company that has a five-year plan to roll out a state-of-the-art ERP. Currently, SeiAg has several disparate and often overlapping systems. The price quoting system has reached the end of its life due to obsolete technology that can no longer be supported. However, the new ERP will have price quoting as one of its elements. Therefore, making a large investment into a new price quoting system doesn’t make sense.
In this situation, if SeiAg decides to replace the price quoting system with a stop-gap measure, then making the software highly maintainable is not a top priority. However, if there were no plans for the ERP system and the lifespan of the price quoting system would be longer, then making the system highly maintainable makes sense.
Improperly measuring the necessary level of maintainability can potentially result in serious issues further down the line. This can be the result of unknown future business process changes, resource constraints, technology upgrades, etc. Therefore, when thinking about your next project, keep maintainability in mind.