• Corrective: Repair any kind of defect.
  • Adaptive: Porting to new hardware or a different OS, without affecting functionality.
  • Perfective: New requirements, and performance improvements.
  • Preventive: Improve maintainability itself, refactor awkward designs and comments.