Software maintenance is the process of modifying existing operational software by correcting errors, migration of the software to new technologies and platforms, and adapting it to deal with new environmental requirements. It denotes any change made to a software product before and after delivery to customer or user. Software maintenance is an important activity of many of organizations today. This is no surprise given the rate of hardware obsolescence, the immortality of a software product, and the demand of users to ensure that existing software products run on newer platforms, run on newer environments, and or with enhanced features. Software maintenance forms an essential component of software development. Therefore, with an increasing use of computers in almost every organization whether big or small, there has emerged the need for software maintenance. In this paper, we argue that software maintenance and evolution are characterized by huge costs, slow speed of implementation, increased complexity, requires technical expertise, be in line with new technologies, may introduce new faults, yet changes and improvements are inevitable if software must stand the test of time.
Keywords: Software, software maintenance, software evolution, reverse engineering,