Characteristics of Legacy System Reengineering
Rick Dewar
Division of Informatics, The University of Edinburgh, EH9
3JZ, UK.
Email: Rick.Dewar@ed.ac.uk, Tel: +44 (0)131 650 5139, Fax: +44
(0)131 667 7209
Abstract
This paper presents five patterns which demonstrate some of the characteristic
forms and forces associated with the reengineering of legacy systems. A
discussion of some of these characteristics is included with the intention
that they may ultimately provide a useful means of evolving and navigating
the pattern catalogue. The patterns here are all drawn from observation
of real industrial case studies.
Introduction
| Pattern: |
Stepping Stone. |
Live & Let Die. |
Divide & Modernise. |
Middleware. |
Swaying Palms & Shifting Sand. |
| Problem: |
How do you move towards the corporate preferred packages? |
How do you move towards the corporate preferred packages? |
How can the system be migrated to supportable technology? |
How can new applications communicate and cooperate with the legacy
and access its services? |
How can the upheaval of the inevitable change in IT systems be minimised? |
| Solution: |
Migrate to an interim package that is readily compatible with the legacy
and target systems. |
Run the target and legacy in parallel for some time, letting the legacy
gradually
die. |
Translate the relevant part of the database to a modern format and
rewrite/translate the associated code. Whilst handling any consistency
and gateway issues, remove the redundant data and code from the original
legacy. Now reengineer the separated component. |
Purchase a message oriented middleware product. Provide gateways on
the legacy and new applications to allow the distributed systems to connect,
interoperate and cooperate. |
Develop separate applications in lieu of adding complexity to the legacy.
Model the domain to capture business objects. Introduce a translation layer
between BPs and legacy, communicating through business objects as much
as possible. |
Table 1 - Pattern Synopses
The author has recently observed a number of different reengineering
efforts involving legacy systems. This paper considers the characteristics
of some of these projects and presents, in a pattern form, the associated
problems and solutions discovered in such situations. Five patterns are
presented which are likely to be seen a number of times in forthcoming
work in some form or other - see Table 1.
Characteristics
It is reasonable to assume that characteristics of the case studies seen
so far will recur in a variety of combinations and permutations in other
reengineering efforts. With this in mind, this section documents the forces
that have provoked the projects, as well as the forms of the legacies that
have been encountered. More generally, this section also discusses the
often conflicting forces that can influence the direction of reengineering.
Specific Characteristics
The characteristic forces seen so far that have instigated
the reengineering of legacy systems have been:
-
new or changing business processes affecting the legacy IT systems. For
instance, combinations of existing products or services being offered which
the legacy cannot handle without modification;
-
large corporations influencing the standard packages that satellite business
units have been expected to adopt;
-
the legacy's hardware and/or software no longer being supported;
-
it is difficult/costly/dangerous to maintain the legacy;
-
a need to provide customers with up to date information (ie., moving from
batch to on-line processing);
-
the disparate data items in the legacy had to be made more accessible to
provide customer profiles and market information;
-
to reduce the amount of user training required to operate the system.
The characteristic forms of legacy systems have been:
-
highly customised, generic products purchased from third parties;
-
systems which have a certain degree of decomposability in terms
of interface, functionality and data;
-
those which are stable and have viable futures.
-
systems which do not readily decompose or communicate;
-
processes are run in batches, as opposed to on line;
-
monolithic legacies, developed in-house over many years.
As case study evidence grows, so will these lists of characteristics.
Broader Issues
Generic Forces: The current and future states of legacies
are a function of many forces including, but not limited to: what already
exists; what resources are and will be available; the culture of the organisation
in which they exist; the history of the legacy's development; the organisation's
market; and the business processes being supported. These are in addition
to the more common project management pressures of time, cost, quality
and risk.
Make or Buy: In manufacturing industry there is a recurring
dilemma of whether to make a part in-house or to buy it from a third party.
A parallel exists in the development of IT solutions. For a large organisation,
there may be economies of scale if off-the-shelf applications are in widespread
use. However, such standardisation may stifle creativity and cause disruption
to business functions trying to conform. On the other hand, smaller more
dynamic companies may find the chaotic evolution of ad hoc solutions allow
faster responses to market conditions. They would have to balance this
flexibility with not being able to share risks with a vendor and having
to retain expensive support personnel. Still another circumstance occurs
when an off-the-shelf product does not exist and the company were forced
to develop their own systems.
Legacy - Friend or Foe? It is interesting to note that
a legacy system need not always constitute a malevolent presence - after
all they probably embody a great deal of organisational knowledge and intent.
As long as they do not hinder the business and can actively support its
activities, they can have a long and successful tenure. However, the company
legacy can be malevolent if it is inflexible and dictates business processes
which may not be helpful to the company. In addition, the malevolent legacy
may consume considerable maintenance resources, process workflow too slowly
or be prone to excessive downtime.
Fashion Victims: The author has recently heard of one
instance where a legacy's programming language was so obscure that employees
were threatening to leave the company since their skill set was not marketable.
This meant problems with training, retaining and recruiting staff. In this
case, the company is seriously considering major reengineering in order
that the applications be written in a more common (fashionable)
language.
Roles: The different roles within an organisation can
also influence the direction reengineering takes. For instance the IT function
may favour a more strategic migration which will improve the maintainability
of the legacy and position it better for future developments. However,
the marketing function can demand such a quick turn around of new functionality
and services to make such proactive measures difficult. In addition, the
accounting regime may demand project payback in such a short space of time
that more costly future proofing cannot be supported.
Stepping Stone
Context
Your company is part of a group of companies. The group has a strategic
IT policy, part of which prescribes the standard packages which business
units should adopt. Your business unit has one or more legacy system which
do not conform to the group's strategic preferences. It is difficult to
migrate to the target systems due the legacies' data and/or functionality
being incompatible with the target, however, you have identified a package
which is readily compatible with both the legacy and target systems. Group
predicts overall savings by moving to specific products, but you and your
users may experience inconvenience during the change. Group understands
that there are difficulties and expects migrations to take a number of
years.
Problem
How do you move towards the corporate preferred packages?
Solution
Migrate to an interim package that is readily compatible with the legacy
and target systems. See Figure 1.
Figure 1 - Moving to Corporate Preferred Packages via an Interim
Package
Consequences
By providing an interim package, work can proceed in manageable, stable
phases. However, having to purchase it, as well as the target system, will
increase overall costs. In an effort to keep down training costs and disruption,
minimise changes to the system's external views, for example print-outs
and screen formats. You may want to consider Divide &
Modernise during the migrations, in order to phase the project.
Since the interim solution is transient, and in order to manage expectations,
make it clear to users that the change is
like for like. However,
it is unlikely that system enhancements can cease during the tenure of
the interim solution and training will be needed for development personnel.
When no interim solution exists, you may wish to consider Live
& Let Die. In addition, you could adopt Divide
& Modernise and Middleware to rationalise
the responsibilities of the legacy.
Known uses
This pattern has been seen in a small business unit of a large manufacturing
group. Their existing main business system was a highly customised database
product on an ageing mainframe. Its software and hardware were no longer
supported since the original vendor had gone out of business. The target
system was an MRP II package specified by group. It would have been difficult
and risky to convert the legacy's code and data to the target directly
and so an interim package was purchased. This package was supported and
would easily accept the functionality and data from the legacy. In addition,
its database was ODBC which would make the eventual migration to the target
MRP II package more straightforward. The final migration step is still
difficult since the MRP II package would necessitate changes to existing
business processes and product structures, but the overhead of having to
deal with data extraction and consistency has been reduced.
Live & Let Die
Context
Your company is part of a group of companies. The group has a strategic
IT policy, part of which prescribes the standard packages which business
units should adopt. Your business unit has one or more legacy system which
do not conform to the group's strategic preferences. It is difficult to
migrate to the target systems due the legacies' data and/or functionality
being incompatible with the target. Group predicts overall savings by moving
to specific products, but you and your users may experience inconvenience
during the change. Group understands that there are difficulties and expects
migrations to take a number of years.
Problem
How do you move towards the corporate preferred packages?
Solution
Run the target and legacy in parallel for some time, letting the legacy
gradually die. See Figure 2.
Figure 2 - Moving to Corporate Preferred Packages, Letting Legacy
Die
Consequences
You can conduct all new business on the target system, introducing training
and interfaces as necessary, and handle referencing and existing contracts
on the legacy. As old contracts come to an end, the legacy will fall into
disuse and the target system will take over. Maintaining two systems which
work in parallel, carry out the same function, but do not communicate,
will increase running costs. A certain discipline will have to be applied
to stop users falling back on the legacy with which they may have more
familiarity and confidence - particularly in the beginning. This discipline
could be brought about by identifying a specific date at which the legacy
will no longer by accessible for editing (see Deprecation
[1]).
This solution may not be desirable for situations where legacy data
needs to be maintained for a considerable time, for instance life insurance
contracts. An alternative is to adopt Stepping Stone.
In addition, you may wish to consider rationalising the responsibilities
of the legacy in which case Divide & Modernise
and Middleware may be of interest.
Known uses
This pattern has been seen in a small business unit of a large manufacturing
group. They possessed an ageing Computer-Aided Design (CAD) package which
was no longer supported in terms of hardware or software. The data on this
system could not be converted into a form which would allow its useful
deployment on the group preferred CAD system. In this case, the company
chose to run the two systems in parallel. The legacy gradually fell into
disuse and now there is only one terminal left to access its data for reference
purposes.
Divide
& Modernise [1]
Context
You have a legacy system whose technology is obsolete and soon to be unsupported.
An area of functionality, such as a payroll component, has been identified
which is relatively decomposable from the rest of the legacy. You have
decided that significant modifications to the dying legacy system are undesirable.
You may also have considered wrapping the system. Although this is sometimes
useful, is not a good solution here because it perpetuates the use of the
unsupported technology. If a new system is developed to replace part of
the old one, the developers will be expected to provide ideal functionality.
Consequently, it will be impossible to manage expectations and the project
will become large and risky.
Problem
How can the system be migrated to supportable technology?
Solution
Translate the relevant part of the database to a modern format and rewrite/translate
the associated code. Whilst handling any consistency and gateway
issues, remove the redundant data and code from the original legacy. Now
reengineer the separated component.
Consequences
You should consider whether to migrate the code or the data first depending
on your own priorities and resources. Once the code (or data) is migrated
you have a stable working system using an interim gateway. When the migration
of the data (or code) starts, the gateway will have to be replaced or modified.
Whichever you choose to migrate first, constructing the gateways is non-trivial,
requiring careful planning.
Nevertheless, by not attempting to change the code you have acquired
a new system providing part of the functionality of the original legacy.
You are now left with a smaller legacy and a separate, manageably sized
component of the original legacy on which you can consider further reengineering.
See Figure 3.
Figure 3 - Divide & Modernise
Overall, work proceeds in distinct manageable phases. Even if a requirements
explosion does overtake the final restructuring step, the main aim, that
of removing the dependency of the functionality on the obsolete technology,
will have been achieved. On the negative side, code and data are
migrated before the new requirements of the system are analysed, which
means that some of this effort may turn out to have been wasted.
Known uses
This pattern is being used in BT (British Telecommunications plc) as they
attempt to migrate data and functionality away from their monolithic customer
service system [2]. It is only one of a number of strategies being pursued,
such as Middleware. The various forces for change
in BT include: a need to provide better customer profiles and market information;
and to reduce the amount of training required by operators of the system.
Another example comes from literature where Brodie & Stonebraker
[3, pp. 67 & 87] have followed such a strategy. They used a combination
of moving the data first (forward migration) and the applications first
(reverse migration) to achieve their aims. Two case studies are provided
where the pattern has been applied iteratively until all the legacy has
been migrated. The catalyst for both reengineering projects mentioned in
the case studies was that maintenance of the legacy was difficult, costly
and/or dangerous. One of the projects also wanted to provide customers
with up to date information and therefore wished to move away from batch
processing. That legacy could not handle on-line transactions.
Middleware
Context
A legacy system exists that is stable and successful. It is in constant
use and there are no immediate plans to significantly alter or replace
it. However, there are separate systems being developed which could usefully
exploit the functionality of and data on the legacy.
Problem
How can new applications communicate and cooperate with the legacy and
access its services?
Solution
Purchase a message oriented middleware product. Provide gateways on the
legacy and other applications to allow the distributed systems to connect,
interoperate and cooperate.
Consequences
The legacy has effectively been wrapped. You will have new applications
separate from the legacy which can re-use the existing valuable functionality
and data but will not add coupling and complexity to the legacy system
(see Figure 4).
Figure 4 - Middleware Architecture
Middleware products can experience capacity problems so the volume of
transactions must be anticipated. Instruct the vendors who are tendering
that they should supply a basic, working prototype to your own specification
and test on your systems to ensure the product can handle the volume of
transactions that you have predicted. By having a prototype, you may add
cost to the project but will gain a good basis for future development as
well as a sound comparative metric for purchasing decisions.
Care should be taken with security and integrity so that the loose coupling
between applications and legacy data does not allow data corruption or
unnecessary duplication.
Known uses
A major UK financial services organisation has recently followed this strategy
after an abortive start where no prototype was procured and capacity issues
produced problems for the organisation.
This pattern is also being used in BT (British Telecommunications plc)
as they attempt to migrate away from their monolithic customer service
system by implementing existing and additional functionality and data in
new systems [2]. It is only one of a number of strategies being pursued,
such as Divide & Modernise. The
main difference here is that BT have developed their own middleware systems.
In house development was necessary in 1984 when they began producing middleware
due to there not being any commercially available alternatives [4]. However,
the principle of prototyping has been followed since their middleware only
had a limited application to begin with. The various forces for change
in BT include: a need to provide better customer profiles and market information;
and to reduce the amount of training required by operators of the system.
Swaying Palms & Shifting Sand
Context
At some time in the future, you will replace your legacy system. The circumstances
under which this will happen cannot be predicted and the nature of that
change process is unclear, but it will happen and it will cause problems.
Your organisation has Business Processes (BPs) which are constantly changing
to meet market demands (the swaying palms). The IT legacy (the shifting
sand) is based on a widely used generic, domain specific package, but this
is being constantly customised to accommodate the changing BPs. When the
legacy system is replaced, another domain specific package will take its
place. This package will have to have (or be given) similar company specific
functionality as the legacy. The organisation would resist developing their
own package. Because of it fluid state, the current legacy is poorly documented
and knowledge about it resides in the minds and notebooks of the programmers.
The customisation is complex and maintenance is expensive.
Problem
How can the upheaval of the inevitable change in IT systems be minimised?
Solution
Develop separate applications in lieu of adding complexity to the legacy.
Model the domain to capture business objects. Introduce a translation layer
between the BPs and the legacy, communicating through the business objects
as much as possible.
Consequences
This pattern offers a proactive strategy to help prepare for the unknown
circumstances under which the legacy is to be replaced. By having new and
distinct applications separate, the growth in the legacy's size and complexity
can be kept to a minimum. The translation layer can protect the BPs from
changes in the IT infrastructure to a certain extent and vice versa. Change
will still introduce problems but the effects will not be as great.
Figure 5 shows the legacy system supporting the organisation's BPs.
The communication between the business and the legacy is conducted through
the generic, unchanging business objects - when such objects exist. Since
circumstances are constantly changing and the business objects only reflect
part of the organisational artefact, the BPs need to communicate directly
with the legacy as well. In other words, the legacy is partially wrapped.
Figure 5 - Swaying Palms & Shifting Sand
You may wish to consider rationalising the responsibilities of the legacy
in which case Divide & Modernise and Middleware
may be of interest.
When modelling the domain, bear in mind that any resulting model will
soon be out of date and that only certain entities (for instance invoice
or
customer)
may be all that is of use.
Known uses
A project in a UK bank is employing just such a strategy. Their legacy
system is expensive to maintain and will be replaced at some time in the
future. Traders in the bank are constantly creating new types of deals
as markets and opportunities appear and evolve. These deals are difficult
to reconcile with the legacy system until the code has been amended to
accommodate them. Their business constants are concepts such as price.
Conclusions
The five patterns presented are:
-
Stepping Stone and Live & Let Die deal
with how to move towards corporate preferred packaged solutions;
-
Divide & Modernise - this pattern provides a means
to incrementally migrate a decomposable legacy;
-
Middleware has a role to play when independent applications
grow up around a legacy and need to communicate with that legacy;
-
Swaying Palms & Shifting Sand highlights a difficult
situation where business processes and the IT legacy are changing and indicates
one strategy for minimising the unavoidable problems that will occur when
the legacy is replaced.
The paper has also tried to categorise some of the case study experiences.
At this stage these characteristics are little more than interesting and
they provide a higher level of context than any specific pattern. However,
it is hoped that such characteristics will help map between related and
alternative patterns as the catalogue grows. In addition, they may even
be useful to users of the catalogue as they navigate through the alternatives.
There are still opportunities to categorise the change process and the
target systems in the future as the evidence grows. Again, these may help
in cataloguing and accessing the patterns.
As for validating the patterns, there seems to be reason for having
some confidence in Divide & Modernise and
Middleware
by virtue of the evidence seen in their known uses. Furthermore, due to
corporations merging, consolidating and globalising (as has been increasingly
seen in the oil, automotive and banking sectors), the Stepping
Stone and Live & Let Die patterns
can only become more common.
Of course, these have been high-level patterns. It is expected that
there will be a number of lower level supporting patterns involved in reengineering.
For instance the author has already seen examples of problems with vendor
management - one of the solutions being to require prototypes before and
during the contract. Indeed the organisational patterns of Jim Coplien
[5] and the requirements patterns of Bruce Whitenack [6] may prove to have
a useful application in supporting reengineering projects.
Acknowledgements
The author would like to acknowledge the support of the UK EPSRC (grant
GR/M02491) and his colleagues Perdita Stevens, Rob Pooley and Ashley Lloyd.
In particular, thanks must be paid to this paper's EuroPLoP'99 shepherd,
Wolfgang Keller.
References
-
Deprecation and Divide & Modernise have already been
published in a similar form: Stevens, P., Pooley, R. (1998) Systems
Reengineering Patterns, in proceedings ACM-SIGSOFT 6th International
Symposium on the Foundations of Software Engineering, Orlando, Florida,
pp.17-23, ISBN 1-58113-108-9.
-
Harrison, P.F. (1997 ) Customer Service System - past, present and future
, "BT Technology Journal", vol.15 , no.1 , pp.29-45.
-
Brodie, M.L., Stonebraker, M. (1995) "Migrating Legacy Systems : Gateways,
Interfaces & the Incremental Approach", Morgan Kaufmann Publishers;
ISBN: 1558603301.
-
Calladine, J. (1997 ) BT Middleware - software as infrastructure , "BT
Technology Journal", vol.15 , no.1 , pp.135-146.
-
Coplien, J.O., A Development Process Generative Pattern Language, http://www.bell-labs.com/people/cope/Patterns/Process/index.html.
-
Whitenack, B.G., RAPPeL: A Requirements Analysis Process Pattern Language
for Object Oriented Development, http://www.bell-labs.com/people/cope/Patterns/Process/RAPPeL/rapel.html.
Further information and other reengineering patterns can be found in [1]
or via the group's web page at: http://www.dcs.ed.ac.uk/home/pxs/reengineering-patterns.html.
Copyright (c) 1999 by Rick Dewar. Permission is hereby granted to copy
and distribute this paper for the purposes of the EuroPLoP '99 conference.