Evolution is not a force but a process. Not a cause but a law.
In the early 1970s, the term “maintenance” was used to refer to tasks for making intentional modifications to the existing software at IBM. Those who performed maintenance tasks had not carried out the software development work. The idea behind having a different set of personnel to carry out maintenance work was to free the development engineers from support activities. The aforementioned model continued to influence the activities that are collectively known as “software maintenance.” In circa 1972, in his landmark article “The Maintenance ‘Iceberg’,” R. G. Canning  used the iceberg metaphor to describe the enormous mass of potential problems facing practitioners of software maintenance. Practitioners took a narrow view of maintenance as correcting errors and expanding the functionalities of the system. In other words, maintenance consisted of two kinds of activities: correcting errors and enhancing functionalities of the software. Hence, maintenance can be inappropriately seen as a continuation of software development with an extra input—the existing software system .
The ISO/IEC 14764 standard  defines software maintenance as “… the totality of activities required to provide cost-effective support to a software system. Activities are performed during the pre-delivery stage as well as the post-delivery stage” (p. 4). Post-delivery ...