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.
Arie van Deursen - CWI
Tel: +31 20 592 4007