Authors:
Rania Mzid
1
;
2
;
Asma Charfi
3
and
Najmeddine Etteyeb
2
Affiliations:
1
CES Lab ENIS, University of Sfax, B.P:w.3, Sfax, Tunisia
;
2
ISI, University Tunis-El Manar, 2 Rue Abourraihan Al Bayrouni, Ariana, Tunisia
;
3
Université Paris-Saclay, CEA, List, F-91120, Palaiseau, France
Keyword(s):
Model-driven Engineering, Reverse-engineering, Compiler Intermediate Representation, GCC, Gimple, Control Flow Graph, UML Activity Diagram.
Abstract:
Nowadays systems are no longer made from scratch, they use existing third-party components or legacy software. Providing methods/techniques to facilitate the comprehension of existing software is beneficial to increase productivity, especially when dealing with their reuse and/or modernization. Model Driven Engineering (MDE) offers a set of guidelines to manage the complexity of software systems during their development. In that context, the reverse-engineering process aims to describe a source code at higher level of abstraction using automatic transformations. This paper proposes an extensible MDE approach for behavioural reverse engineering. The proposed approach aims to make the reverse transformation independent of the source programming language. Starting from a given source code written in any programming language, the proposed approach integrates an intermediate step based on compiler’s front-end to generate an intermediate representation. Then, it performs a model transforma
tion to extract behavioural aspects from the source code and generates a graph that describes its control flow. The different steps of the approach are automated. We apply the approach to case study using GCC and GIMPLE as intermediate representation and UML activity diagram as control flow graph to show its viability.
(More)