Automating software evolution

Software maintenance and evolution are the most expensive activities in the software process, consuming 60% to 80% of the total time spent on a software system. However our understanding of maintenance activities has barely developed beyond arbitrary change to arbitrary things. The standard categories of maintenance are based on subjective characteristics (purpose), rather than objective attributes. Only by understanding the relationships and dependencies between entities in the software process (such as specification, design and implementation) can we begin to objectively categorise and potentially automate aspects of software evolution.