Perfective maintenance is necessary when the software needs to implement new or updated requirements. These types of changes are mostly focused on the functionality of the software. An example of perfective maintenance is a new enhancement to the software system.
Software that has a higher level of maintainability will allow for perfective changes to be made with less effort, and therefore at a lower total cost.