What Is Software Maintenance?
Software maintenance is the ongoing work that keeps an already-built application running correctly after launch — fixing defects, adapting it to new environments, preventing failures before they happen, and making small improvements. It differs from a warranty period and from a new project, and most working software needs some of it every month.
The Four Types of Maintenance Work
Software engineers generally group ongoing maintenance work into four categories. Corrective maintenance fixes defects that surface after release — a report that miscalculates a total, a screen that crashes on a particular phone. Adaptive maintenance changes the software so it keeps working as the world around it changes — a payment gateway updates its API, a mobile OS drops support for an old permission model, a tax rule changes. Preventive maintenance finds and fixes problems before they cause an outage — patching a library with a known vulnerability, adding monitoring, cleaning up a query that is close to timing out under load. Improvement (sometimes called perfective) maintenance is smaller-scale polish that was not urgent enough to hold up the original launch — a clearer error message, a faster report, a screen that needed one more field.
Imagine a logistics company running a dispatch app that routes drivers to daily deliveries. In its first year of maintenance, that same app might see a corrective fix for a bug that double-counts fuel costs, an adaptive change when the map provider changes its pricing API, a preventive upgrade to its authentication library after a security bulletin, and an improvement that lets dispatchers filter routes by driver instead of only by zone. All four are maintenance — none of them is a new project.
How Maintenance Differs From a Warranty or a New Project
A warranty period, when a vendor offers one, is narrow by design: it covers defects that existed in the code at handover, for a fixed window, usually at no extra cost. It does not cover new operating system versions released after handover, a browser vendor changing how cookies work, or a business process that has evolved since launch — those fall outside what a warranty was ever meant to include, even though they still need fixing.
Maintenance is different in scope and structure. It is an ongoing, usually paid, relationship that covers whatever keeps the software correct and current over its life — including problems that did not exist at launch and only appeared because something outside the code changed. A new project, by contrast, adds capability the software never had: a new reporting module, support for a second business location, an integration with a system that did not exist when the original app was built. Maintenance keeps what exists working; a new project extends what exists.
What Maintenance Looks Like Day to Day
In practice, most maintenance work is unglamorous and recurring rather than a single big event. A team — in-house or outsourced — typically runs uptime and error monitoring so problems are caught before a customer reports them, applies security patches to the framework and its dependencies on a regular cycle, takes and periodically tests backups, and works through a queue of support tickets raised by staff or customers.
None of these activities is dramatic on its own, which is exactly why they are easy to let slip when a business gets busy. The businesses that manage maintenance well tend to treat this list as a fixed operating rhythm — patching on a schedule, checking backups on a schedule — rather than as a set of tasks that only happen when someone remembers or something goes wrong.
- Monitoring uptime, error rates and performance so issues surface before they become outages.
- Applying security patches to the framework, libraries and server software on a set schedule.
- Taking backups and periodically testing that they actually restore.
- Triaging and resolving support tickets raised by staff or customers.
- Reviewing logs and usage patterns to catch slow-building problems early.
Who Is Responsible for What
A maintenance arrangement works best when both sides know exactly where the line sits. The maintenance provider is usually responsible for the application code, its dependencies, and the fixes and changes agreed in scope. The business typically retains ownership of its own data, its hosting or cloud account, and any decisions about which third-party services the software depends on — even when the maintenance provider manages those services day to day on the business's behalf.
What falls outside the boundary matters just as much as what falls inside it. A well-written scope states explicitly whether it covers new features, third-party service outages, custom hardware, or work needed after a data-loss event caused by something outside the software itself. Business owners who skip this step often assume maintenance covers everything that could possibly go wrong with 'the app' — and are surprised later to find a specific problem was never included.
Building a Recurring Review Habit
Maintenance stays manageable when it is reviewed on a fixed schedule rather than only when something breaks. A short recurring review — monthly for a business-critical system, quarterly for something lower-stakes — that looks at open support tickets, upcoming end-of-support dates for the software's core technologies, and any preventive work that has been deferred, keeps small issues from accumulating into a backlog no one has time to clear.
The output of that review does not need to be complicated: a short prioritised list, reviewed with whoever owns the budget, is usually enough. What matters is that the review happens on a calendar, not only in response to a support ticket — because the preventive work that saves the most cost in the long run is almost always the least urgent-looking item on the list.
Maintenance activity map
A simple map plotting each maintenance activity — corrective, adaptive, preventive, improvement — against whether it is reactive or scheduled, so a business can see at a glance which quadrant most of its current maintenance spend falls into, and whether it is too reactive.
Frequently asked questions
Is maintenance only bug fixing?
No — corrective fixes (bug fixing) are only one of four categories. Adaptive changes keep the software working as its environment changes, preventive work heads off failures before they happen, and improvement work is smaller-scale polish. A plan that only ever does corrective work tends to cost more over time, because preventive issues get caught late, as outages, instead of early, as scheduled fixes.
Why does working software need updates?
Because the environment around the software keeps changing even when the software itself does not — operating systems update, browsers change how they handle security, payment and mapping APIs get new terms, and known vulnerabilities are published in libraries the software depends on. An application that looks unchanged on the outside can still drift out of date underneath, quietly building up risk until one of those changes causes a visible failure.
Have a specific situation to work through?
This article covers the general case. Tell us what you're actually dealing with and we'll respond directly.