Rather like reliability, maintainability is a word we all know in testing but sometimes have difficulty explaining. It's generally regarded as something we would like to have in our software, but it's hard putting our finger on what maintainability actually is. The ISO 9126 Quality Model defines maintainability as "the ease with which a software product can be modified to correct defects, modified to meet new requirements, modified to make future maintenance easier or adapted to a changed environment:"
According to ISO 9126, maintainability can be described in terms of four sub attributes:
1) Analyzability: It relates to the effort required (usually by the developers) to diagnose defects or to identify parts of the software system requiring change.
2) Changeability: It relates to the effort required to actually fix defects or make improvements.
3) Stability: It is the likelihood that unexpected side effects occur as a result of making changes to the software. It's what we have in mind when we sometimes say that the software is brittle.
4) Testability: It describes the effort required for testing changed software. This is one of the principal software quality attributes that directly affect our work.