In a software lifetime, type of maintenance may vary based on its nature It may be just a routine maintenance tasks as some bug discovered by some user or it may be a large event in itself based on maintenance size or nature Following are some types of maintenance based on their characteristics Corrective Maintenance Adaptive Maintenance Perfective Maintenance Preventive Maintenance Corrective Maintenance This includes modifications done in order to fix problems Corrective maintenance deals with the repair of defects found in day-to-day system functions Adaptive Maintenance This includes modifications applied to keep the software product up-to-date Adaptive maintenance is the implementation of changes in a part of the system, which has been affected by a change that occurred in some other part of the system Perfective Maintenance This includes modifications done in order to keep the software usable over long period of time It includes new features, new user requirements for refining the software and improve its reliability and performance. This includes changing the functionalities of as per the user’s changing needs Preventive Maintenance Modifications to prevent future problems of software It aims to attend problems, which are not significant at this moment but may cause serious issues in future It comprises documentation updating, code optimization and code restructuring.