What is Software Maintenance?
Over the past few months, we have covered a lot of questions we are asked about bespoke software development. (Check out our Bespoke Software FAQ which gives a quick overview of what we have written posts about.)
In the next series of posts we are going to look at software maintenance. Starting with this one about What is Software Maintenance?
Software maintenance is the processes that are followed when software is live in production.
It’s not just bug fixes, though those are part of it, it also includes patches, updates, performance enhancements and often smaller feature updates that are too small to warrant they own project.
We are going to cover the types of software maintenance in a future post. There are probably more than you think! If you can’t wait, then head over to our Software Maintenance and Support page for a sneak peak of what we will go into more detail about. For now, let’s briefly go over the two most common types.
Once you get to a certain level of software complexity then all code will have bugs in it. This is not just a bespoke software issue, off-the-shelf software has just as many. You can see this in the constant flow of updates that come out for modern software. Not all of them are corrective maintenance but a lot are.
Typically, this is done by users of the software in production but bugs can also be found while testing new features or even other bug fixes before release.
Front line support will take the steps necessary to replicate the issue and keep detailed notes of how they did it before allocating a priority.
Every software company will use a different classification system. We like to keep it really simple.
- P1 or priority 1: These are show stopping bugs and is making all or large parts of the software unusable. This bug would then typically be allocated to a developer for immediate attention.
- P2 or priority 2: These are less severe bugs; they need fixing of course but will either be in a less used part of the software or there will be workarounds that can be employed until they are fixed. This type of bug would be allocated to a developer’s queue.
The assigned developer fixes the bug and publishes the fix to the testing environment.
The fix is tested internally and for best practice the end user would also test that it has resolved the problem.
The fix is released to the live code.
As you can see, this type of maintenance is almost always going to be reactive. You can’t fix a bug until it has been found. It is therefore vital that you pick a partner that can deal with these issues in a timeframe that is acceptable to your business. If that is not happening then please contact us to discuss your issues and requirements.
This can be proactive form of maintenance. It can typically be scheduled on a recurring basis (most commonly monthly but can be as often as weekly). Adaptive maintenance covers updates and patches. It is designed to keep things running smoothly and should cover the whole stack including the OS, database, server side and front-end frameworks and libraries.
There are a lot of parts involved in keeping software running, each will have its own update schedule. Because of this adaptive maintenance is as much about planning and monitoring as it is about doing the actual updates.
The actual process is similar to the second half of the bug fixing process. The testing environment is updated, internal and user testing takes place before they are signed off for release to the production environment.
We have just covered the basics of “What is Software Maintenance?” in this post. In future posts we will look at why it is important, different types of maintenance along with several other questions we frequently get asked on the topic.
Full Metal provides our expert maintenance services to clients who appreciate our quick turnaround times and adaptive maintenance scheduling. Over the last few years, we have built a reputation of being able to take on software maintenance for software that we did not develop where the current maintenance providers either can not or are not meeting the requirements our customers have come to expect. If your company has software that is not being maintained as it should then please get in touch.