|
Managing and changing existing systems is
critical to industry because more and more of their
activities are dependent on their software systems.
As the business environment changes, these
systems must reflect these changes. Furthermore,
organisations now realise that their software
systems are valuable assets and they wish to
increase their return on investment in these
assets.
This requires the reuse of significant
sub-systems across many different applications.
These sub-systems must therefore evolve to meet a
range of different requirements.
Finally, systems must evolve as new business
processes are developed. Indeed, the difficulties
of changing existing software is perhaps the most
significant barrier to process change in current
industrial, commercial and public organisations.
The scale of this problem is immense. It has
been estimated (Ulrich 1990, The evolutionary
growth of software re-engineering and the decade
ahead, W.M. Ulrich, American Programmer, Oct 1990),
that there were approximately 120 billion lines of
source code in current operational systems which
must be maintained. This number has undoubtably
increased and is increasing at an accelerating
rate. Organisations spend an increasing proportion
of their resources (65%+ of software effort) on
system evolution so that, in Europe alone, the
annual costs of system evolution are of the order
of 16 BECUs (based on a Europe-wide software
project spend of 25 BECUs).
The market for tool support for software
evolution which has resulted has been addressed by
a number of research projects and commercial
products which have focused on software
re-engineering. Software re-engineering is
principally concerned with code comprehension and
evolution. Tools are available which allow
information to be extracted from existing
undocumented source code and which reorganise code
with a tangled control structure into a more
structured form. These products e.g. IBM Cobol SF
(IBM), Retrofit (Peat Marwick), have mostly been
concerned with COBOL programs in the business
domain although language-independent meta-tools,
such as REFINE (Reasoning Systems) are also
available. There are also tools available, such as
Bachman re-engineering Product Set (Bachman
Information Systems), which may be used for
database re-engineering from hierarchical or
CODASYL databases to more modern relational
systems.
Some CASE systems (e.g. HoodNICE with the
ReverseNICE capability) include reverse engineering
facilities where a system design can be recreated
(with some manual assistance) from source code.
However, we do not know of any current tools which
can handle the reverse engineering of system
families. System families are created when systems
evolve and new versions are created. In source
code, these different versions are often
represented using conditional compiler directives.
The lack of support for system family
re-engineering represents a significant gap in the
current market for CASE and re-engineering tools.
Most existing re-engineering products are based
on source-code analysis and restructuring. However,
we perceive a number of market trends which require
support which goes beyond the facilities offered by
code-oriented re-engineering tools. These trends
are:
- The move from centralised to distributed
systems. Increasingly, companies are moving to
client-server systems based on PCs or
workstations. This requires existing centralised
applications to evolve into a distributed
client-server form operating within some
object-orientated framework
- The trend from internal maintenance to
outsourcing of application management.
Specialised companies such as Cap Sesa Hoskyns
and debis Systemhaus (partners in this project)
are taking over the management of applications
from the companies which use these applications.
These application management companies are
dependent for their profitability and even their
survival on cost-effective application
management.
- The need for companies to reduce software
costs, reduce time to market and increase
product quality. All of these factors mean that
more and more companies are realising that
software is a very valuable asset and that
evolution methods are required to ensure that
software can be modified and reused across a
range of applications.
- Business process re-engineering. As
organisations review their business processes
and reengineer these processes into more
efficient forms, the constraints placed on
change by existing software are becoming
increasingly significant. In some cases,
evolution can be accomplished by software
re-engineering. In others, essential business
objects must be identified and extracted from
that software to be used as a basis for
constructing new systems to support the
re-engineered business processes.
|