The object-oriented systems life cycle
Communications of the ACM
The Z notation: a reference manual
The Z notation: a reference manual
Object-oriented modeling and design
Object-oriented modeling and design
An introduction to object-oriented programming
An introduction to object-oriented programming
Object-oriented specification case studies
Object-oriented specification case studies
Mapping a functional specification to an object-oriented specification in software re-engineering
CSC '96 Proceedings of the 1996 ACM 24th annual conference on Computer science
Specification of Software Systems
Specification of Software Systems
The Essence of Objects: Concepts and Terms
IEEE Software
Domain-Retargetable Reverse Engineering
ICSM '93 Proceedings of the Conference on Software Maintenance
An influence model for factors in outsourced software maintenance: Research Articles
Journal of Software Maintenance and Evolution: Research and Practice
Hi-index | 0.00 |
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.