Maintenance Types and Strategies

Research has shown that maintenance effort is roughly divided into: Effort on software system can involve:
Maintenance
Fixes and new functionality
Refactoring
Architectural changes without important functional changes
Re-engineering
Re-implementation often without new architectural or functional changes