What Do You Need to Know about Software Maintenance Types as an Engineer

Alex Omeyer
Apr 23 · 5 min read
Image credit: Unsplash.

Software developers need to constantly nurture their product to enhance its functionality, and reduce deterioration, satisfy the needs of users and ensure the success of their product. This is achieved through software maintenance.

Software maintenance is a critical part of the software development lifecycle. Many companies are embracing DevOps principles and processes. This includes shifting left, performing testing early in the development cycle to be able to identify and respond to problems as soon as possible. But even when software is released, it’s not a case of launch and forget.

Software developers need to constantly nurture their product to enhance its functionality, and reduce deterioration, satisfy the needs of users and ensure the continued success of their product. This is achieved through software maintenance.

Software maintenance tasks can be classified under four types:

  1. Corrective Software Maintenance
  2. Adaptive Software Maintenance
  3. Perfective Software Maintenance
  4. Preventive Software Maintenance

This article takes a look at each one in detail.

Corrective Software Maintenance

Image credit: Scott Adams.

Corrective maintenance should be about resolving the underlying problems impacting software but there’s also the temptation of a company opting for patching which only solves the problem in this instance. If corrective maintenance is a persistent, increasingly time-consuming task for developers, it could indicate wider problems with developer skills, code quality, testing practices, or the existence of significant technical debt. Corrective maintenance can be automated with automatic bug fixing.

Adaptive Software Maintenance

Adaptive software maintenance may also be a result of new company policies, changes in vendors, app stores, or payment processes. It may be caused by things outside the company’s control such as a change of regulations such as GDPR or Tax in regard to payment processes. However, it’s not about simply fixing a specific problem but being able to anticipate change and thus making your software flexible enough to adapt to a plethora of changes.

A common example is the infamous Y2K bug of 1999 where companies believed their software would no longer function as the date shifted from 31/12/1999 to 1/1/2000. In response, developers worked to prepare their software in anticipation of Y2K problems. If they failed to do so, they would be dealing with a corrective maintenance problem on January 1. (There’s now talk of Y3K in 2030 so stay tuned…)

Perfective Software Maintenance

Examples are code functionality enhancements, usability changes, or speed optimisation. All of these improve the value of software and enhance the user experience.

Perfective changes also include removing features from a system that are not effective and functional to the end goal of the system.

Image credit: the author is unknown.

Preventive Software Maintenance

Examples include new features to improve software reliability and performance and refining software to reduce software complexity to make it easier to maintain and understand.

Software systems age. Preventive software is about future-proofing its longevity and efficacy by implementing good practices for long-term gain.

All types of software maintenance are critical

It’s a fine balance between the different types. Even the best efforts to release bug-free code can require corrective maintenance but if this is a constant pain point that is impacting the quality of the software released, it suggests the need for improved bug testing practices. It also may signify processes that preference speed over efficacy — good code may take longer initially to produce but can result in less bug fixing and refactoring and remove the long-term pain of technical debt.

Good quality code makes long-term development and maintainability easier. An overall commitment to perfective tasks such as reducing technical debt and code refactoring helps to maintain a baseline that makes it easier to expand upon existing code and add new features faster. A company that makes the effort to continuously track and prioritise technical debt increases not only the quality of its offering but its health over the years to come.

Today’s software companies need to be agile and visionary. Software maintenance can signify growth as a company adds product features or responds to a vastly expanding customer base. It should also be emblematic of a company with a good knowledge of the ecosystem around its products including the customer and wider business challenges faced as well as the pace of competitor evolution. It’s not enough to create a great product from the first release, but also to be able to support and nurture it in the wild throughout its lifespan.

Originally published on Managing Tech Debt.

Geek Culture

Proud to geek out.

Sign up for Geek Culture Hits

By Geek Culture

Subscribe to receive top 10 most read stories of Geek Culture — delivered straight into your inbox, once a week. Take a look.

By signing up, you will create a Medium account if you don’t already have one. Review our Privacy Policy for more information about our privacy practices.

Check your inbox
Medium sent you an email at to complete your subscription.

Geek Culture

A new tech publication by Start it up (https://medium.com/swlh).

Alex Omeyer

Written by

Building Stepsize, a SaaS company to measure and manage technical debt.

Geek Culture

A new tech publication by Start it up (https://medium.com/swlh).

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store