BrayHess95

PublicReengineering Wiki

Sandia National Labs have been maintaining and developing a configuration-management system for thirty years. the system supports the management of engineering documentation for weapons systems. It is batch oriented and implemented on a Unisys mainframe, written in COBOL. There was a desire to move to a Unix client-server environment and to reduce maintenance costs, without changing the functionality. Maintenance and obsolete documentation left the system relatively incomprehensible. However, through studying the source code, data and available documentation, plus interviewing domain experts, they were able to gain an understanding of the legacy and plan forward reengineering. Data migration was a significant issue. The data was difficult to understand, contained redundancy and invalid constructs, was poorly defined and often inconsistent. They studied source code and data files and generated entity relationships which were checked with system and domain experts. They used a CASE tool to turn the model of relationships into a RDBMS schema. The resultant 200 tables needed 600 SQL modules to insert, update and delete data. In an attempt to automate the creation of the SQL, they used scripts which acted on event (insert, update, delete) templates. The scripts took the table name as input, retieved the table's definition and outputted the table-specific SQL modules. Other SQL modules were required for integrity constraints. The code migration was achieved in two steps. First the COBOL was restructured (eg removing gotos) to aid program comprehension and to improve its structure ahead of forward engeineering. This restructuring was carried out manually and involved walk throughs with in-house experts. The system was then re-implemented using a 4GL language and ANSI C. The poject was a success. The authors atrribute this to using sofwtare experts in the reengineering team (one of which was a domain expert), relying heavily on domain experts to provide feedback and the use of tools.


Related pages: Bibliography
This page last edited on 28 October 1999
 
 
  • Search for: