I would take this opportunity to thank my research supervisor, family and friends for their support and guidance without which this research would not have been possible .
Declaration
I, [type your full first names and surname here], declare that the contents of this dissertation/thesis represent my own unaided work, and that the dissertation/thesis has not previously been submitted for academic examination towards any qualification. Furthermore, it represents my own opinions and not necessarily those of the University.
Signed __________________ Date _________________
Abstract
A legacy system is an old method, technology, computer system, or application program that continues to be used, typically because it still functions for the users' needs, even though newer technology or more efficient methods of performing a task are now available. A legacy system may include procedures or terminology which are no longer relevant in the current context, and may hinder or confuse understanding of the methods or technologies used. Three phases are included in such process, an object oriented reverse engineering phase, in which an object oriented analysis model of the legacy system is produced by Fusion/Rll; a segmentation phase, in which the original code is segmented into object oriented methods, keeping the procedural language; and finally a transformation phase, in which the segmented code is transformed to an object oriented language by the Draco-Put machine. The application of this process to a real mechanic and electric car repair shop system, with 20.000 lines of source code, is described. Samples of the Java code obtained by transforming the original Clipper code are supplied.
Table of Contents
ABSTRACT4
INTRODUCTION6
Aim of the Study7
Statement of the Problem8
Motivations for the Research8
Proposed Approach8
LITERATURE REVIEW9
An inter-disciplinary approach to legacy systems9
The SABA approach11
The organisational scenarios tool12
PROPOSED PROCESS16
PROPOSED RESEARCH DESIGN18
REFERENCES20
Software Evolution
Introduction
Software has become omnipresent and vital in our information-based society, so all software producers should assume responsibility for its reliability. While "reliable" originally assumed implementations that were effective and mainly error-free, additional issues like adaptability and maintainability have gained equal importance recently. For example, the 2004 ACM/IEEE Software Engineering Curriculum Guidelines list software evolution as one of ten key areas of software engineering education. The need of support tools to reengineer systems is widely claimed in the literature. Cremer and Fioravanti are examples. Sneed describes a tool-supported process applicable to procedural Cobol programs and Gall and others present Corem - a transformation process that uses application domain knowledge and the procedural source code to retrieve an object model. The authors stress that the complete automation of this transformation process is not feasible but that many steps can be supported by tools.
Part of the authors of this paper has been working in the reverse engineering of systems developed in procedural languages, to obtain the corresponding object oriented analysis model. Another part has been working in the development of the Draco-Put machine to do the automatic transformation of software from one language to another.
The recycling of systems towards object orientation has been the concern of several authors. For example, Sneed shows a process for reengineering Cobol programs, originally developed with ...