What is Software Maintenance?

Like a house, software requires maintenance over time to ensure that it stays in a good, useable condition. Keeping your house maintained and tidy is one of the most important tasks in software development, although it’s not something that many people are thinking about when first embarking on a new software project.

In this article, we’ll break down the types of software maintenance, how long they take, and how much it will cost overall. This will help stop any nasty surprises later on down the track.

Let’s get started.

The four different types of software maintenance

Corrective maintenance

Bugs in the software post-production? Those bugs need to be sorted out - corrected. This type of software maintenance is the most regular type of maintenance performed by development teams. While Quality Assurance and software testing is performed as much as possible before rollouts to clients, there will always be bugs. Any software development house that says they can guarantee bug-free code is taking you for a ride.

Bug reports and relevant customer support tickets come in to developers and are worked on via a priority basis.

Preventative maintenance

This type of maintenance involves keeping your software safe against new and emerging threats. This involves updating or patching any other third party apps, libraries, OSs, etc. that the software needs to run correctly. When exploits attack third party infrastructure, you need to be quick to act to ensure your software remains safe. An example of this is the recent cloud server hack where attackers got in via a vulnerability in Salt, a Python framework.

Adaptive maintenance

Changing conditions require software changes, too. This might occur due to a variety of different circumstances. For instance, if you have new software that you want to integrate into the current product. Perhaps a new OS is released and the software needs to run on it. Or a driver no longer is being maintained and you need to swap it for a new one.

Perfective maintenance

Your end product is unlikely to be your end product. After delivery, and later on down the track, you’ll want to make small adjustments and add features to make your software better for your purposes. This is what’s known as perfective maintenance.

Why do we need to keep software maintained?

Keeping software maintained is important for many reasons:

  • Guard against attacks
  • Eliminate bugs
  • Keep it in line with current technology
  • Ensure it’s in step with market conditions
  • Make it better for the organisation’s purposes
  • Keep it easy for the user
  • Make sure it doesn’t break
  • Prevent having to use workarounds

How long does software maintenance take?

Software maintenance, like house maintenance, will be ongoing for the lifetime of a software product - until it’s retired aka sunsetted. The final maintenance activities will usually involve some sort of data and/or migration to a new product.

That’s not to say that it will be required 100% of the time post-delivery. There will be more maintenance required straight after delivery to iron out bugs, add features, etc. This will tail off as the product matures unless you require continual feature adding. Once the software matures enough, only preventative and adaptive maintenance will need to be performed, and this will be only on an ad-hoc basis.

Around 75% of maintenance efforts over the course of a software product’s lifetime will be spent on adaptive and perfective maintenance.

How much does software maintenance cost?

The cost of software maintenance will likely surprise many people. However, if you include maintenance costs in your planning it won’t come as a surprise later on.

There are a variety of cost-modelling practices for software development, the most popular being COCOMO II, SEER, SLIM and True S. These are based on complex mathematical equations as well as some assumptions about the software itself.

Overall, you can expect that up to 70% of your software project’s time and resources towards development will be spent on maintenance activities.

Keeping this figure in mind at the beginning will help you to understand your project budgets.

If you want your software to stand the test of time then you need to make this investment - otherwise it will fall into disrepair.

Need help with designing new software or maintenance of existing projects?

CodeFirst is a boutique software development house that helps hone in on your project requirements and needs. With years of experience in the industry, we’re well equipped to help you plan and deliver your software project - along with maintaining it - without any nasty surprises. We’re also adept at taking on existing software projects to help with maintenance or migration to new systems.

Please contact us for more information about how we can assist you.