Authors:
Ansgar Radermacher
;
Marcos Fabro
;
Shebli Anvar
and
Frédéric Chateau
Affiliation:
Université Paris-Saclay, CEA List, France
Keyword(s):
UML, Reverse Engineering, C++, Tool Support.
Abstract:
Model-driven engineering provides several advantages compared to a direct manual implementation of a system. In reverse-engineering applications, an existing code basis needs to be imported into the modeling language. However, there is an abstraction gap between the programming language (C++) and the modeling language, in our case UML. This gap implies that the model obtained via reverse engineering is a model that directly mirrors the object-oriented implementation structures and does not use higher-level modeling mechanisms such as component-based concepts or state-machines. In addition, some concepts of the implementation languages can not be expressed in UML, such as advanced templates. Therefore, new systems are often either developed from scratch or model-driven approaches are not applied. The latter has become more attractive recently, as IDEs offer powerful refactoring mechanisms and AI based code completion - model-driven approaches need to catch up with respect to AI suppo
rt to remain competitive. We present a set of challenges, based on examples, that need to be handled when reverse engineering C++ code. We describe how we handle them by improving reverse engineering capabilities of an existing tool.
(More)