Maintainability

Maintainability is the degree of effectiveness and efficiency with which a product or system can be modified to improve it, to correct defects, or to adapt it to changes in its environment or requirements. It is a non-runtime quality attribute, observable only as a system changes over time, rather than while it runs.

ISO/IEC 25010 composes maintainability from five sub-characteristics: modularity, reusability, analysability, modifiability, and testability. Together these describe how easily a change can be understood, isolated, made, and verified without breaking something else. A highly modular system with well-covered tests supports change far more cheaply than one where every part depends on every other part.

Maintainability tends to decline over a system’s life unless it is actively defended, a decay generally called software rot or bit rot. Refactoring, keeping technical debt in check, and following design principles such as SOLID help to sustain maintainability.