Software maintenance is inevitable, software changes will lead to the degradation of software, development efficiency and input resources independent. Software maintenance refers to modifications made to software products during the operation or maintenance phase of the software. Software maintenance is divided into corrective maintenance, adaptive maintenance, perfect maintenance. Software maintenance is affected by the development process, many difficulties and high cost. The software maintenance process includes maintenance application, maintenance classification, impact analysis, version planning, change implementation, software release and other steps. Software re-engineering is the re-construction of the existing system into a new form. Software re-engineering includes activities such as Object selection, reverse engineering (Design recovery), document refactoring, code refactoring (common), data refactoring, and forward engineering.
Reading "Software Engineering-theory method and Practice" 11th chapter Experience