Abstract
Reverse engineering has presented solution to a major problem in the development and maintenance of the legacy software which is the process of understanding these software types, It is a difficult task because most of legacy software lacked a proper documentation or a correct design model. Unified Modeling Language has an important and great role in determine (extract) the specifications of the software in accordance with the principles of the reverse engineering and modeling it using one of its types which is a Class Diagram. Reverse Engineering Class Diagram is an abstract representation gives an overview of the software structure and it does not give full information about the internal details and the relationships of software components.
In this research a computer aided software engineering tool has been constructed which is called RMDT (Relational Meta Data Table). It bases on constructing an interpreter of an entered software source code analyzing to extract an information that assist in understanding the structure of the software and to clarify its components and the relationships that bind its parts (internal structural of the entered software).
The RMDT tool represents the information in tables which have been designed in a highly flexible manner and be suitable for use in the future when applying software re-engineering on the entered software. Furthermore ,the research has studied and tested several of most common software engineering tools which used to implement reverse engineering like (Reverse, ArgoUML, Rational rose, Enterprise Architecture (EA), class2uml, Together). The analysis focused on these tools to produce class diagram of the software source code written in Java. The produced class diagram includes the number of classes, relationship types among classes and the common classes.
However, the obtained results from the RMDT tool has been compared with those obtained from others. The produced tables from RMDT tool includes all the information required to recover the design, as they used to produce a class diagram, due to the availability of class, method, variables names, method parameter names, interface, relationships (association, dependency and Generalization) and identify visibility while no such details found in a class diagram that produced by other tools.