Is maintenance ready for evolution?
Spencer Smith, Keith H. Bennett, Cornelia Boldyreff · 2002
Current solution strategies for coping with maintenance tend to be based around formalising and making explicit the interfaces between components. This can help to localise changes, and hence make a contribution to coping with the problem of altering systems in response to change. We investigate an alternative approach, using concepts from distributed artificial intelligence. We assume that software components do not have to have rigid interfaces; they can negotiate, make decisions, etc. The role of the maintainer is changed; we shift part of the responsibility for decision-making etc. onto the software itself using concepts from adaptive and self-modifying systems. Some of the work that would have been done during evolutionary development (i.e. maintenance) is now done during run-time. So, we have real evolution. New techniques are now required to deal with this new situation: the modelling of negotiation, feedback, system stability etc. is as important as the modelling of services and functions. Analytical techniques for understanding a system and its environment are central; analysis is carried out principally with regard for the goals that the system is expected to fulfil. The paper provides the outline of a new future strategy for software maintenance. These ideas result from some recent work carried out at the Centre for Software Maintenance at Durham.