

- Description
- A ship carpenter’s workshop
- Source
- Christoph Braun · original page
- Licence
- CC0 Public domain
Matrix: Application maintenance
How the installed product is maintained: defects, fixes, versions, technical debt, compatibility, third-party components, knowledge, end of life.
In brief
- 8 dimensions, levels 0 to 5, 112 criteria.
- Tool: self-assessment, choosing "Application maintenance".
- Levels and criteria: original synthesis, references cited at the bottom of the page.
The life of the installed product: handling of defects, fixes and maintained versions, numbering and release notes, technical debt, compatibility and version upgrades, third-party components and libraries, technical knowledge and documentation, end of life. The planning of enhancements falls under the "Project management" theme, and getting changes into production under the "Deployments" theme.
8 dimensions, six levels (0 to 5) and 112 observable criteria. To place your product: open the self-assessment for this theme. The calculation rules are here.
Overview#
Each cell is the level's signature for the dimension.
| Dimension | 0 · Handcrafted | 1 · Locally tooled | 2 · Shared | 3 · Industrialized | 4 · Integrated and governed | 5 · Autonomous |
|---|---|---|---|---|---|---|
| Defect management | Defects are fixed as requests come in, with no trace. | Defects recorded. | Triage and severity. | Complete process. | Defects analyzed. | Defects prevented. |
| Fixes and supported versions | Only one state of the product: the fix is applied to whatever exists. | Versions identified. | Versions maintained. | Fixes under control. | Fixes tracked. | Fixes automated. |
| Numbering and release notes | Versions named by date or by habit, with no rule. | Simple numbering. | Meaningful numbering. | Useful notes. | Notes produced from the work done. | Automated release communication. |
| Technical debt | Debt piles up without anyone seeing it. | Debt perceived. | Debt listed. | Debt arbitrated. | Debt measured. | Debt under control. |
| Compatibility and version upgrades | Every version upgrade is an adventure. | Upgrades documented. | Upgrades verified. | Migration paths. | Compatibility managed. | Frictionless upgrades. |
| Third-party components and libraries | The third-party components are whatever a developer once installed. | Components listed. | Components tracked. | Updates planned. | Supply chain under control. | Dependencies monitored. |
| Technical knowledge and documentation | How the product works is known to one person. | Personal notes. | Technical documentation. | Documentation maintained. | Documentation generated and verified. | Knowledge accessible. |
| End of life and retirement | A feature disappears because it broke and no one repairs it. | Retirements decided. | Retirements announced. | Support policy. | Retirement supported. | Lifecycle steered. |
Dimensions of the global model most concerned: Testing and fixes, Industrialization and deployment, Documentation and traceability and Project management and roadmap.
Fixes and versions#
Defect management#
How is a defect received, qualified, fixed and tracked?
| Level | Signature | Criteria to meet |
|---|---|---|
| 0 · Handcrafted | Defects are fixed as requests come in, with no trace. | Starting point: no criteria. |
| 1 · Locally tooled | Defects recorded. |
|
| 2 · Shared | Triage and severity. |
|
| 3 · Industrialized | Complete process. |
|
| 4 · Integrated and governed | Defects analyzed. |
|
| 5 · Autonomous | Defects prevented. |
|
A reported defect has a number, an owner and a deadline; you know where it stands.
Fixes and supported versions#
Which versions are maintained, and how is a fix delivered to them?
| Level | Signature | Criteria to meet |
|---|---|---|
| 0 · Handcrafted | Only one state of the product: the fix is applied to whatever exists. | Starting point: no criteria. |
| 1 · Locally tooled | Versions identified. |
|
| 2 · Shared | Versions maintained. |
|
| 3 · Industrialized | Fixes under control. |
|
| 4 · Integrated and governed | Fixes tracked. |
|
| 5 · Autonomous | Fixes automated. |
|
A customer on a supported version receives their fix without having to change version.
Numbering and release notes#
Are versions numbered meaningfully and accompanied by clear explanations?
| Level | Signature | Criteria to meet |
|---|---|---|
| 0 · Handcrafted | Versions named by date or by habit, with no rule. | Starting point: no criteria. |
| 1 · Locally tooled | Simple numbering. |
|
| 2 · Shared | Meaningful numbering. |
|
| 3 · Industrialized | Useful notes. |
|
| 4 · Integrated and governed | Notes produced from the work done. |
|
| 5 · Autonomous | Automated release communication. |
|
A version's number tells you whether installing it is risky, and the notes tell you what changes.
Debt and compatibility#
Technical debt#
Do you know where the shortcuts were taken, what they cost, and when to pay them back?
| Level | Signature | Criteria to meet |
|---|---|---|
| 0 · Handcrafted | Debt piles up without anyone seeing it. | Starting point: no criteria. |
| 1 · Locally tooled | Debt perceived. |
|
| 2 · Shared | Debt listed. |
|
| 3 · Industrialized | Debt arbitrated. |
|
| 4 · Integrated and governed | Debt measured. |
|
| 5 · Autonomous | Debt under control. |
|
The product remains easy to evolve, and speed is not gained on credit without anyone knowing.
Compatibility and version upgrades#
Is moving from one version to another predictable, tested and reversible?
| Level | Signature | Criteria to meet |
|---|---|---|
| 0 · Handcrafted | Every version upgrade is an adventure. | Starting point: no criteria. |
| 1 · Locally tooled | Upgrades documented. |
|
| 2 · Shared | Upgrades verified. |
|
| 3 · Industrialized | Migration paths. |
|
| 4 · Integrated and governed | Compatibility managed. |
|
| 5 · Autonomous | Frictionless upgrades. |
|
A version upgrade loses nothing: no data, no customization, no report.
Third-party components and libraries#
Are the components used known, up to date and free of known vulnerabilities?
| Level | Signature | Criteria to meet |
|---|---|---|
| 0 · Handcrafted | The third-party components are whatever a developer once installed. | Starting point: no criteria. |
| 1 · Locally tooled | Components listed. |
|
| 2 · Shared | Components tracked. |
|
| 3 · Industrialized | Updates planned. |
|
| 4 · Integrated and governed | Supply chain under control. |
|
| 5 · Autonomous | Dependencies monitored. |
|
A flaw published in a component is spotted and fixed before it becomes an incident.
Knowledge and life of the product#
Technical knowledge and documentation#
Does knowledge of the product depend on a few people, or is it shared and written down?
| Level | Signature | Criteria to meet |
|---|---|---|
| 0 · Handcrafted | How the product works is known to one person. | Starting point: no criteria. |
| 1 · Locally tooled | Personal notes. |
|
| 2 · Shared | Technical documentation. |
|
| 3 · Industrialized | Documentation maintained. |
|
| 4 · Integrated and governed | Documentation generated and verified. |
|
| 5 · Autonomous | Knowledge accessible. |
|
The departure of one person blocks neither a fix nor an enhancement.
End of life and retirement#
How do you retire a feature, a version or a product without surprises for users?
| Level | Signature | Criteria to meet |
|---|---|---|
| 0 · Handcrafted | A feature disappears because it broke and no one repairs it. | Starting point: no criteria. |
| 1 · Locally tooled | Retirements decided. |
|
| 2 · Shared | Retirements announced. |
|
| 3 · Industrialized | Support policy. |
|
| 4 · Integrated and governed | Retirement supported. |
|
| 5 · Autonomous | Lifecycle steered. |
|
A retirement is announced, explained and supported; no one discovers that a feature has disappeared.
The dimensions are inspired by the references cited below; the levels and criteria are an original synthesis, not a reproduction of a framework. They are offered for discussion and adaptation, not as authoritative.
Sources and verification#
- Martin Fowler — Technical Debt — technical debt: "interest" (extra effort on every change) and "principal" (the repayment); repay frequently modified code first
- Semantic Versioning 2.0.0 (French version) — MAJOR.MINOR.PATCH number; a published version must no longer be modified
- Martin Fowler — Parallel Change — expand (old and new coexist), migrate, then contract; also applicable to the evolution of a database schema
- DORA — Software delivery performance metrics — time to restore service after a failed deployment, change failure rate
- ISO/IEC 25010:2023 — Product quality model (SQuaRE) — maintainability among the quality characteristics of a software product; only the number of characteristics (nine) was verified, the standard is paid