Automated support of software maintenance

Abstract Software maintenance is the general name given to the set of activities undertaken on a software system following its release for operational use. Surveys have shown that for many projects, software maintenance consumes the majority of the overall software life-cycle costs, and there are indications that the proportion is increasing. Inability to cope with software maintenance can also result in a backlog of application modifications. Despite the importance of software maintenance, it has acquired the reputation of being a second-class area in which to work. The paper defines in more detail the term software maintenance, and then addresses the issues of maintaining existing code, and producing maintainable systems, stressing the role of reengineering. Three projects that focus on software maintenance are then summarized. All three aim to provide automated assistance to the software maintainer, but in contrasting ways. The ReForm project is based on a formal method to extract specifications from code using transformations. MACS and REDO are both transnational European projects funded by the Esprit collaborative programme of research; the former uses expert system technology to assist the maintainer, while REDO aims to provide a set of integratable tools within a single environment, to support the reverse engineering process.