A common perception of maintenance is that it merely involves fixing defects. Software maintenance is a process that is triggered once a requirement has arisen to fix, change or adapt a software system. It is a very broad activity that includes error corrections, enhancements of capabilities, deletion of obsolete capabilities and optimization. Software maintenance is the modification of a software product after delivery to correct faults, to improve performance or other attributes.
Software maintenance is not like hardware maintenance, which is the return of the item to its original state. Software maintenance involves moving an item away from its original state. It encompasses all activities associated with the process of changing software that includes everything like functional and performance enhancements, providing backward compatibility and covering up hardware errors, creating user-interface access methods and other cosmetic changes.