Software re-engineering is one of the solutions advocated for the problems that are encountered during maintenance. The three major phases of a re-engineering process are (i) reverse engineering the code into an abstraction, (ii) modifying the abstraction and (iii) implementing the modified abstraction. This paper is a contribution to the second phase of a re-engineering project. We present a methodology to transform a functional abstraction, obtained by reversing legacy software, into an object-oriented abstraction. This methodology has been applied to a case study that can be scaled to an industry-sized problem. Advantages of the object-oriented approach for developing the reengineered product are briefly discussed. We used the Z and Object-Z formal notations for representing the functional and object-oriented abstractions respectively.Our methodology consists of two phases: (i) the naive transformation that transforms the Z paragraphs into Object-Z class definitions and concentrates on preserving the application domain information; (ii) the modification of Object-Z class definitions, if necessary, to take advantage of object-oriented features. The latter phase concentrates on using inheritance, encapsulation, and polymorphism while preserving the application domain information. We also discuss the limitations of the current approach, automation of the transformation process, and continuing work in this direction.
[1]
Daniel G. Bobrow,et al.
Object-Oriented Programming: Themes and Variations
,
1989,
AI Mag..
[2]
Brian Henderson-Sellers,et al.
The object-oriented systems life cycle
,
1990,
CACM.
[3]
Peter Wegner,et al.
Learning the language
,
1989
.
[4]
Kasilingam Periyasamy,et al.
Mapping a functional specification to an object-oriented specification in software re-engineering
,
1996,
CSC '96.
[5]
Alan Snyder,et al.
The essence of objects: concepts and terms
,
1993,
IEEE Software.
[6]
Hausi A. Müller,et al.
Domain-retargetable reverse engineering
,
1993,
1993 Conference on Software Maintenance.
[7]
Timothy A. Budd,et al.
An introduction to object-oriented programming
,
1991
.
[8]
William E. Lorensen,et al.
Object-Oriented Modeling and Design
,
1991,
TOOLS.
[9]
J. Michael Spivey,et al.
The Z notation - a reference manual
,
1992,
Prentice Hall International Series in Computer Science.
[10]
Graeme Smith,et al.
An object-oriented approach to formal specification
,
1992
.
[11]
Kevin Lano,et al.
Object-oriented specification case studies
,
1994
.
[12]
R Duke,et al.
Aspects of Object-oriented Formal Specifications
,
1990
.