One of the most important factors in buying a new car is after-sales service, a guarantee of how easily your car can be maintained later.
Similarly, in software development world, Software Maintenance also plays an important role. The modification of any software product after delivery is either to correct faults, improve performance or add functionality as discussed in SWEBOK 3.0. Even minor changes to subsystems (like updating help files) can be categorised as maintenance.
Software Maintenance not only involves bug-fixing, in fact most of the maintenance effort is usually for functionality enhancements to the system. Only a small percentage of maintenance time is usually spent on bug-fixing.
Developing software is like a long journey. Once the software is deployed, the users begin using it, and the cycle repeats. Other than bug-fixing, users often request more and more enhancements: more and more robust features to simplify their lives. The process is then restarted from requirements gathering, designing, constructing, testing and deploying. That cycle repeats until the software life cycle ends. That end can be the retirement of the system, or migration to another system.
A capable and dedicated Product Owner is the key to a successful software maintenance group. This person drives the team in the right direction based on the agreed software roadmap. The Product Owner needs to be able to categorise reports into bugs, working-as-designed or future enhancements.
Another important factor in meeting a reasonable service level or resolution time is a capable team. It should be agreed that a learning curve must be provided in reaching that maturity level. In 4 to 6 weeks (on average, depending on the application’s complexity), a team member with experience in a similar technology stack should be able to come up to speed.
From the client’s perspective, a simple and easy-to-use Helpdesk Application is a great help in registering reports (tickets). Nowadays, sending the latest issue status directly to the user’s mobile phone is a common best practice.
A sophisticated and robust maintenance team resolves tickets based on the agreed severity and priority, and this guarantees the sustainability of the software.