The main types of software maintenance are as follows:
1. Fault repairs: Coding errors are usually relatively cheap to correct; design errors are more expensive as they may involve rewriting several program components. Requirements errors are the most expensive to repair because of the expensive system redesign which be necessary.
2. Environmental adaptation: This type of maintenance is required when some aspect of the system’s environment such as the hardware, the platform operating system, or other support software changes the application system must be modified to adapt it to cope with these environmental changes.
3. Functionality addition: This type of maintenance is necessary when the system requirements change in response to organizational or business change .the scale of the changes required to the software is often much greater than for the other types of maintenance.
Why is it difficult to differentiate between the types of maintenance?
In practice, there is not a clear-cut distinction between these types of maintenance, when the system adapt to new environment, then add functionality to take advantage of new environmental features. Software faults are often exposed because users use the system in unanticipated ways. These types of maintenance are recognized but a different person sometimes gives them different names.
"Corrective maintenance" is universally used to refer to maintenance for fault repair’
“Adaptive maintenance" sometimes means adapting to new environment and sometimes means adapting the software to new requirements.
"Perfective maintenance" sometimes means perfecting the software by implementing new requirements; in other cases it means maintaining the functionality of the system but improving its structure and performance.