Maintenance involves making changes to software after it has been delivered to the client. There are three categories of maintenance: corrective, adaptive, and perfective. Corrective maintenance fixes bugs, adaptive maintenance makes changes due to environment changes like new hardware or software, and perfective maintenance adds new features or functionality. Factors like insufficient documentation, too many versions, staff mobility, and external changes can negatively impact maintenance. Maintenance is a significant cost, estimated to be between 40-70% of total software development costs.