Authors' email and home pages

Perdita Stevens' email and home page

Rob Pooley's email and home page

The home page of our project.

Abstract

The reengineering of legacy systems -- by which we mean those that ``significantly resist modification and evolution to meet new and constantly changing business requirements'' -- is widely recognised as one of the most significant challenges facing software engineers. The problem is widespread, affecting all kinds of organisations; serious, as failure to reengineer can hamper an organisation's attempts to remain competitive; and persistent, as there seems no reason to be confident that today's new systems are not also tomorrow's legacy systems. We suspect: A systems reengineering pattern is a description of an expert solution to a common systems reengineering problem, including its name, context, and advantages and disadvantages. We are principally concerned with the problem how reengineering should proceed, rather than with what the design of the reengineered artefact should be. The latter problem seems to be adequately addressed by existing techniques (not least, design patterns). A reengineering pattern embodies expertise about how to guide a reengineering project to a successful conclusion. Because this is not only or even principally a technical problem, the context of a reengineering pattern must be much broader than that of a design pattern. It includes business context as well as software context, and may even need to take into account factors such as the budgeting procedures of the organisation or the personalities of the managers whose support is needed. In this position paper we explain this point of view, and briefly describe two candidate systems reengineering patterns which are relevant to object oriented systems.