Software Renovation - Y2000, Euro, and All That
by Henk Nieland
Renovation of large so-called legacy systems becomes imperative for
many companies. In the Resolver project (1996-1998) generic and pragmatic
approaches to system renovation are explored. The research is performed
by CWI, ID Research and the University of Amsterdam. Resolver is financed
and supported by ABN AMRO Bank and Roccade (DPFinance) and subsidized by
the Dutch Ministry of Economic Affairs.
Legacy systems are typically large, administrative, mainframe-oriented,
often poorly documented systems. While still indispensable for the company's
operation, their ever increasing maintenance costs hamper further organisational
and business development, in particular migration to more open and flexible
architectures. Until now progress in system renovation was limited: available
commercial solutions are very rigid, technology specific, and based on
poor program analysis techniques, relevant academic knowledge is not known
to or applied by many companies, and system renovation as a research discipline
is not recognized as such in academia.
Apart from creating awareness of existing research results and commercial
tools, Resolver addresses three practical current problems in a generic
system renovation approach:
- the Year 2000 systems compliance
- the conversion to the Euro single currency
- the COBOL migration to object orientation.
The research in these case studies focuses on the analysis of existing
legacy programs, and includes issues such as program structure, interdependence
of variables, clustering of programs, formulation of queries on program
sources, and repository models.
Results of Resolver are concentrated in Releases, of which the first
one was issued end 1996. Some of these results follow below.
An introductory document Validating Year 2000 Compliance summarizes
existing knowledge, with an emphasis on validation and quality control.
After defining the 'millennium bug' problem, examples of COBOL fragments
with and without date problems are given, followed by an overview of solution
techniques and tools.
In a document Euro Conversion the problems of introducing the Single
European Currency are treated. Starting with a survey of the expected consequences
(considering politics, legislation, business risks and the like) several
conversion scenarios are presented for single- and multi-currency systems.
The difficulties of transforming legacy code into object-oriented code
were studied in a migration from COBOL to OO-COBOL. Four scenarios were
tested on an existing mortgage administration system HYPOS. One scenario
- data objectification - yielded the best results in terms of application
flexibility and reuse.
An annotated bibliography of more than hundred articles on reverse engineering
and system renovation revealed that, although re-engineering very much
needs compiler technology, interaction of these fields is not extensive.

Figure: Steps in the renovation process:
(1) System analysis using language technology
(2) Global restructuring
(3) Incremental renovation per component.
Software Refinery (developed by Reasoning Systems) and the ASF+SDF Meta-Environment
(developed by CWI and the University of Amsterdam) are generic systems
for building tools for software analysis and conversion. A comparison revealed
that the first system suits present-day re-engineering projects, whereas
ASF+SDF has a great potential for developing new, sophisticated re-engineering
techniques.
Resolver advocates a generic approach to renovation problems in which
solutions can be instantiated for specific languages. In this approach
the following necessary ingredients are studied:
- syntax analysis of the low-level textual structure of source programs
and their deeper hierarchical structure
- data flow analysis for collecting run-time information about the data
in programs without actually executing them
- clustering - a statistical technique for partitioning and clustering
experimental data
- a repository model for storing all information regarding the sources
of legacy systems as well as all (intermediate) analysis results
- source code queries for formulating questions about given source code,
regarding for example calling or inclusion relationships, data flow and
control flow, or code metrics
- origin tracking, to establish backward relationships between the result
of a program conversion/translation and the original source text.
Please contact:
Arie van Deursen - CWI
Tel: +31 20 592 4007
E-mail: arie@cwi.nl