The last phase of the Software Development Lifecycle (SDLC) is the maintenance phase. This is sometimes known as the stewardship phase. The maintenance phase of the SDLC begins after the software has been placed into operation. In the maintenance phase, the software is given upgrades, bug fixes, patches, and more.
When software finally lands in this phase, it takes on 4 different personas:
Finished Software – The idealized form of software-in-maintenance. All the important features are in and most of the details. Sure, there’s a wish list of features, but none of it is very important. Most ongoing maintenance is about maintaining compatibility, applying security patches, and tweaking a few end-user-related (minor) things such as wording, graphics, or flow. Occasionally a new feature is added.
The Ongoing Project – This is where the software development project was placed into service, but it is missing many features and details. This is a popular way to create software in start-up companies. “Fail Fast”, “Lean Startup” are ideals that pair up with this way of maintaining software. The development team is constantly changing the software. There are frequent releases. Sometimes multiple times in a day.
Periodic Release – This is where the software is placed into service while the development team works on the next version. The team saves up all the work they are doing for a big release at a certain point in the future. This strategy is used in many different scenarios.
Example: when minimizing change to end-users because each release has a set of related costs such as retraining or re-certification.
Example: charging for upgrades. The development implements several new capabilities. It all goes into a valuable upgrade package that a customer would pay for. The marketing team gets everyone excited about it. The sales guys all push it. Then it is released.
Periodic Business – Some software is only used once-a-period. For example, annual contract signing, annual healthcare open-enrollment, Christmas season. Software Maintenance involves checking it over. It has been a while since it was used last. No one has reported any defects since the last period. Other systems that it interfaces with may have been upgraded. It is checked for compatibility. If it is a seasonal website, then it may receive a large load during a certain season. For example, the Healthcare.gov site receives a heavy load in December. As a result, the software is checked to make sure it can handle the anticipated load.
Support-Driven Maintenance – This is where software has a lot of issues. It has too many issues to fix in a reasonable amount of time. Maybe there is not enough time, money, or to get it all done. Many support issues may require the help of a software engineer. Maintenance of software in this situation involves triage; prioritizing the most severe issues first.