Caixa Mágica Team ·
A development budget ends at handover. The life of the system does not. Neither does the software maintenance cost.
That is why the one-year view of software maintenance cost misleads so badly. A system costing €80,000 to build, affordable-looking in year one, becomes a commitment of €200,000 or more across its working life. That number exists whether or not anyone budgeted it. The decision that most affects it is neither the hourly rate nor the technology. It is who keeps the knowledge on delivery day.
| Figure | What it means |
|---|---|
| 15–20% | Of build cost, per year, in maintenance. Some sources give 10 to 20 per cent |
| €200–1,500 | Per month in hosting and infrastructure, depending on system size |
| €150–200k | Ten years of maintenance on a €100,000 build, before any new feature |
| 1.5–2× | What maintenance costs relative to the original build across a decade |
What is software maintenance cost spent on?
Software maintenance cost splits across four kinds of work, distinguished in ISO/IEC 14764 and behaving very differently in practice. Corrective maintenance is the one everyone budgets for. Adaptive maintenance is the one that breaks budgets.
| Type | What it covers | In practice |
|---|---|---|
| Corrective | Fixing what surfaces | Defects that appear under real use. Not predictable, concentrated in the first months, then it settles. |
| Adaptive | Keeping up with the outside | Operating systems, dependencies, integrations, law. It arrives from outside, unannounced, and on someone else's schedule. |
| Perfective | Improving what exists | Performance, usability, small adjustments. The only one you can genuinely defer. |
| Preventive | Reducing debt before it costs | Predictable, and the first to be cut, because it is the only one with no visible symptom. |
What actually forces change?
Worth seeing with concrete examples rather than abstract categories. Both of these come from work we do and are publicly verifiable.
A hardware generation changes. Portugal began issuing the Cartão de Cidadão v2 in June 2024, redesigned to meet the security and format standards of Regulation (EU) 2019/1157. The v2 card uses ECDSA keys where v1 used RSA, and it supports contactless reading. Any integration built before mid-2024 and untouched since is running against assumptions the card no longer satisfies. No line of the client's code changed. The context did.
A distribution updates a dependency. On distributions shipping pcsc-lite 2.3.0, such as Ubuntu 24.10 and Fedora 41, a specific flatpak package became necessary for the middleware to work. A decision taken upstream, by people maintaining a Linux distribution, and a real cost to anyone running that software in production.
These two illustrate the general pattern. Adaptive maintenance is not triggered by you. It is triggered by hardware manufacturers, operating system maintainers, regulators and integration partners.
What moves software maintenance cost up or down?
Six factors move software maintenance cost, ordered by impact across a decade. The first is dominant and the least discussed.
-
1Who keeps the knowledge. If the team that built the system disperses at handover, the first year of maintenance is spent rediscovering decisions. Continuity is cheaper than documentation, and documentation is far cheaper than archaeology.
-
2Number of integrations. Every third-party system is a change surface outside your control. Integrations add 20 to 30 per cent to the initial build and keep charging for the system's whole life.
-
3Technology choices. Not modern versus old, but supported versus abandoned. A boring technology with ten years of guaranteed support costs less to maintain than an exciting framework whose maintainers move on in year three.
-
4Test coverage. A system with tests can be changed with confidence. A system without tests requires manual verification of every change, every time, forever. This is where the ten-year number is decided, and it is the line most often cut from the build budget.
-
5Compliance requirements. Regulated sectors add evidence, audits and retention. It is real and predictable cost, which is preferable to real and unpredictable cost.
-
6Size of the user base. More users means more edge cases found, more support, and more pressure on performance.
When is rewriting cheaper than maintaining?
There is a point where maintaining stops making sense, and it arrives later than most engineering teams would like. A rewrite is justified when the technology has lost security support with no upgrade path, when every change breaks three things elsewhere consistently, when nobody in the organisation understands significant parts of the system, or when annual maintenance approaches the cost of building it again.
Three bad reasons appear far more often. The technology is old, but old and working is an asset rather than a problem. The current team would rather work on something else, which is a management question and not an architecture one. And it is easier to get budget for a new project than for maintenance, which is true, and is how organisations end up rewriting systems that worked.
A rewrite restarts the clock: a new build cost, a new wave of early defects, and the same 15 to 20 per cent per year from then on. It pays only when the maintenance bill is genuinely worse.
The proof that is hard to have
Most software companies cannot show what happens to a system at year ten, because they were not there. We have worked on Portuguese national digital identity middleware, including the Citizen Card software, for over a decade. In that period the middleware absorbed a card generation change with a different cryptographic algorithm, the introduction of contactless reading, several versions of the applicable European regulation, and dependency changes at the Linux distribution level.
None of those changes was requested by a customer. All of them had to be absorbed for the system to keep working. That is what maintenance is, and it is why the annual percentage is not a service fee: it is the price of the system continuing to exist in a world that does not hold still.
How do you budget for software maintenance cost?
What should a software maintenance contract cover?
The four kinds of work, each named separately. A contract that only says "maintenance" usually covers corrective work and leaves adaptive work to be negotiated each time. That is where software maintenance cost becomes unpredictable.
Beyond scope, three clauses matter most. Response times by severity, so that a production failure and a cosmetic issue are not handled the same way. Responsibility for dependencies and platform changes, so it is clear who acts when an operating system or a library moves. Knowledge transfer on exit, so the system can be handed to another team without starting from zero.
A monthly or quarterly report on what was done, broken down by type, closes the loop. It shows whether preventive work is happening or only being promised.


