Skip to content

Maintainability

Maintainability is how making changes are easy and fast (and, by extension, cheap).

It's not necessarily flexibility, because a system can be inflexible by design but still need to be maintainable.

Scenario

  • Source: developer, sysadmin, user
  • Stimulus: add/delete/modify function or quality
  • Artifact: UI, platform, environment, external system
  • Environment: design, compile, build, runtime, server in maintenance
  • Response: make change, test it, deploy it
  • Measure: effort, implementation time, cost, risk

Tactics

  • Responsibility: which component handle which operation ? Keep module size small, limit responsibility
  • Cohesion: relevant distribution of responsibility (syntax and semantic)
  • Coupling: how dependents are components between them ?