Simplistically, software maintenance is a service you buy once you have purchased a software licence to ensure the ongoing quality of that piece of software.
You’ll hear it called “support”, “maintenance”, “warranty”, “subscription” and these are all similar but subtly different concepts:
- Maintenance – normally means bug fixes (and maybe upgrades)
- Support – can include maintenance, but also can provide helpdesk / training services
- Warranty – usually bug fixes, for a limited period of time, after a piece of software is initially delivered. This may be bundled into the initial software delivery. Often, at the end of the warranty period, a maintenance / support regime is needed.
- Subscription – this is an alternative concept to ‘buying’ a piece of software outright (which, more accurately, would be described as purchasing a perpetual licence to use the software). Instead, the use of the software is on a rental basis (and often can be cancelled with a month’s notice). There’s no up-front purchase price, and maintenance / support is included in the subscription price. This approach is common with online / cloud software.
For example: when you buy an anti-virus program, you’re normally also buying 12 months of support. This gives you access to download updates to the application, and, in addition, the supplier will be releasing new malware threat signatures all the time. At the end of the 12 months, you’ll be prompted to buy another 12 months.
A second example: if you commission a piece of software, the supplier will often give you a short warranty period when the software is delivered to you – if you report any bugs within the warranty period the supplier will fix them. The supplier won’t want this to be an open-ended commitment (as it costs them time and effort) and hence usually once the warranty period is ended you need to negotiate a support package if you want the software to be maintained.
How is support priced? A traditional rule of thumb is that the annual support cost is 20-25% of the initial licence fee. However, other aspects can affect this, such as:
- Whether the software is a commodity product or bespoke for the customer
- The size of the marketplace – if there are lots of users, the cost of support can be spread more widely
- the level of support offered – what’s included / excluded
- and the SLA (Service Level Agreement) – the guaranteed response from the vendor under different circumstances.
Bug fixes are an obvious aspect of maintenance, and something that should really be expected in any support package. Bundles of fixes are normally released in patch sets, although critical bugs may be dealt with individually.
Depending on the package, support might include some provision for the supplier to give help and advice to the users – for example, how to drive the application to get the most out of it.
It might also include extending the support beyond the core product functionality. The supplier might support your implementation of the software product in your environment.
The ‘subscription’ model for support is normally focused at the mass market, and often isn’t designed to provide bespoke personalised support. Instead, web-based self-service is often the most effective way of resolving issues.
New features, upgrading
This is another obvious aspect of support, but it may not be in every maintenance package. Suppliers of older products which are either going obsolete, or are actually obsolete, may not offer upgrades but might instead offer to “keep the lights on” – by only fixing critical bugs. However, this is the exception rather than the rule – most ‘current’ products should offer a support option to keep you updated with the latest enhancements.
Your supplier will offer new versions – but should you upgrade? There’s an effort in applying each upgrade, and if you have a policy to upgrade early after a new version is released you may end up spending a lot of time doing repeated upgrades. You may also end up catching a cold if a new version is released and it has teething problems.
However, if you leave it too late, you may find that the jump to go from your old version to the new one is large, and possibly complicated. From a support point of view, if you leave it a long time you may be missing out on critical patches. A balance, depending on your requirements, needs to be struck.
Finally, if you’re using a cloud-based app or service, you will have little or no control over patching and upgrading; the service provider will manage all of this for you. This is good in some respects because you don’t have to worry about it, and generally the provider will keep you up-to-date. The downside is that you have no control over what happens to your platform.
The above discussion concentrates on the changes to your software. However, even if your software was perfect (unlikely), it would still need maintaining because the environment surrounding it is changing all the time. Other systems which interface to your software will change; underlying operating systems change and become obsolete; malware threats evolve.
The recent Wannacry ransomware attacks demonstrate the problem of standing still whilst the environment changes around you. A new threat was developed by cyber criminals. Windows XP didn’t have any patches to cover this (as it is obsolete and not supported by Microsoft) and machines which ran it suffered as a result. However, more modern versions of Windows already had released fixes issued to counter this threat and such machines, providing they were up-to-date with their patches, were unaffected.
There are a few good reasons why you should consider software maintenance and support for your key business applications. Cloud-based services and subscriptions offer non-traditional models for providing support which may be more cost-effective and appropriate, depending on the application.
Neil Tubman, Terzo Digital, May 2017