Maintenance involves making changes to software after it has been delivered to the client. There are three main types of maintenance: corrective (fixing bugs), adaptive (changing code due to environment changes), and perfective (adding new features). Perfective maintenance accounts for 65% of maintenance time on average. Factors that can affect maintenance include new user requests, staff turnover, too many software versions, insufficient documentation, external changes, and the high estimated costs of maintenance which is between 40-70% of total development costs.