The 4 Types of Software Maintenance

The 4 Types of Software Maintenance

In this post we are continuing our deeper dive into the questions that we get about software maintenance . In our previous posts we have covered some of the basics of the subject in our "What Is Software Maintenance? " and "Why is Software Maintenance Important? "

In this post we are going to look at the types of software maintenance which are:


Corrective Maintenance

This is what most people think of when they think of 'software maintenance'. Corrective maintenance is the process of fixing faults and errors (bugs) in the code as they are found by users in their use of the software. It is a reactive maintenance in that these bugs are reported, replicated and then fixed.

Why do they occur? In reality it boils down to human error which is almost impossible to eliminate and can only be minimised. For example; following best programming practices minimises this type of maintenance and also makes fixing the bugs an easier process.


Adaptive Maintenance

The software you use is part of a much bigger environment which is constantly changing. The following are some of the major moving parts;

Hardware - Over time both the hardware that the software runs on and the hardware that users use to interact with the software changes. This is normally quite a slow moving change to the environment.

O/S - The operating system will have frequent minor updates as part of its maintenance program. Major updates, (typically requiring more major adaptive maintenance) will also occur less frequently.

Database - Nearly all modern software will use a database for long term storage data.

Framework - For example; we build a lot of our bespoke software on the .Net framework. These are constantly being updated. This page shows how often the .Net core framework has had major releases since version 1 in 2016.

Dependencies - Your actual software will have libraries that it relies on that will have their own releases schedule.


How much of the development stack you control, will define how much control of these updates you have. Even if you controlled everything in the stack, it would not be very good practice to do no updates. Adaptive maintenance is the maintenance required to keep your software running as it should as the environment changes.


Perfective Maintenance

This type of maintenance could easily just be defined as bespoke development. They are not bugs, just small features and tweaks to features that make the software better. Users will often confuse something that doesn't work in the way they think it should, but working as it was designed to work as a bug. This "looks like but is not a bug" would also fall under this category.

Perfective maintenance also covers one of the most forgotten parts of maintenance. Removing features that are no longer used. Keeping your software as simple as it can be to meet your requirements reduces nearly all types of maintenance requirements.


Preventative Maintenance

Preventative maintenance is proactive maintenance in that the goal is to reduce the requirements for corrective maintenance before it is required. It can be for known issues. For example; you might build your application to be able to deal with 100 document uploads an hour and before you hit that limit you do the required work to handle 1000 document uploads an hour.

It can be on a specific part of the software. This is often done when you are working on part of the code. It is good practice to look at the current code and optimise and refactor to reduce complexity and therefore the chance of a bug.

It can also be by improving and increasing the automated test coverage of your software, increasing the chances of picking up bugs whilst testing before they make it to live code.

Finally, as best practice changes it is always a good idea to implement the changes required to your software.


Summary

Regular software maintenance is a vital part of the software life cycle and will reduce costs and increase useability over time. Our team at Full metal are experts in all forms of software maintenance and if you don't have a regular maintenance service in place, then please get in touch so that we can access how we can make sure your software is running like clockwork.

+44 (0) 1604 663690 | [email protected] | Unit 2 Basset Court, Grange Park, Northampton, NN4 5EZ

Instagram | Facebook | Full Metal Software

要查看或添加评论,请登录

Ben Thomson的更多文章

  • Software Maintenance FAQ

    Software Maintenance FAQ

    Over the last few posts, we have covered many common questions we are usually asked when it comes to Software…

    19 条评论
  • How Much Does Software Maintenance Cost?

    How Much Does Software Maintenance Cost?

    In this series of posts about Software Maintenance, we have covered a lot of topics including; What is Software…

    25 条评论
  • Software Maintenance Best Practices

    Software Maintenance Best Practices

    In our last post we took a look at The 4 Types of Software Maintenance, In this post we are going to dive into what…

  • Why is software maintenance important?

    Why is software maintenance important?

    In the last instalment of our Newsletter series we discussed 'What is Software Maintenance?' Now that we understand the…

    2 条评论
  • What is Software Maintenance?

    What is Software Maintenance?

    In the last series of posts we discussed 'Legacy Software', now let's dive deep into what software maintenance. Our…

    2 条评论
  • Outsourcing Versus In-House Software Development

    Outsourcing Versus In-House Software Development

    The demand for software development has grown massively over the last 5 years. So much so we have consistent flow of…

    4 条评论
  • Legacy Software - Love It!

    Legacy Software - Love It!

    As we usher in the new, lets just take a moment to talk about the "old", and why we love it like it's new. Because in…

  • Legacy Software - The Big Rebuild

    Legacy Software - The Big Rebuild

    In our last post we discussed what legacy software is, why it exists, the risks in using it and a quick overview of…

  • What is Legacy Software?

    What is Legacy Software?

    It is no longer be receiving regular updates or scheduled maintenance from the software developers. The original…

    5 条评论
  • Building a safety .NET

    Building a safety .NET

    We often refer to ourselves as .NET developers and that often leads people to think that all we do is web applications,…

    6 条评论

社区洞察

其他会员也浏览了