Software reuse: a key to the maintenance problem

Abstract Software maintenance is defined as the performance of all activities required to keep a software system operational and responsive after delivery. This includes adaptations to changing requirements and corrections of faults. Today, most practical maintenance environments have to spend a larger portion of their maintenance budget on fault corrections than they should have to, leaving not enough resources to respond to changing requirements properly. As a result, maintenance is widely viewed as an undesirable add-on to development. Improvement needs to be aimed at reducing the overall maintenance portion related to fault corrections and increasing the productivity and quality of the remaining maintenance activities. Maintenance is inherently reuse-oriented. It seems natural to explore how maintenance could benefit from recent advances in the area of software reuse. The article points out a number of crucial maintenance problems, presents a comprehensive framework that has been proposed to address similar problems in the area of reuse, and suggests how software maintenance may benefit from results produced in the reuse community by adopting a reuse-oriented framework.