Corrective maintenance
Changes made to a system to repair flaws in its design, coding, or implementation
Adaptive maintenance
Changes made to a system to evolve its functionality to changing business needs or technologies
Perfective maintenance
Changes made to a system to add new features or to improve performance
Preventive maintenance
Changes made to a system to avoid possible future problems