ModelExtractor an Automatic Parametric Model Extractor Jean Bézivin, Régis Chevrel, Hugo Brunelière, Albin Jossic, William Piers, Frédéric Jouault ATLAS Group (INRIA & LINA, University of Nantes) {bezivin | chevrel.regis | hugo.bruneliere| jossic.albin | william.piers | f.jouault}@gmail.com Abstract Building on previous experiments of reverse engineering with the Squeak language, we have designed a new prototype on the DotNet platform that should be able to exploit the full capabilities of the Visual Basic 9.0 language, including the facilities offered for dynamic typing. The objective of this work is to prove that we are able to implement an automatic model mining facility when the system consists of a legacy with good reflectivity capabilities. The initial work presented in this paper comforts the previous results obtained for Squeak and constitute the basis of a reverse engineering development toolkit that is intended to be extended in the coming months. General terms Reverse engineering, model extraction Keywords Parametric metamodel, tagged metamodel, dynamic model, MDRE 1. Introduction Industrial returns of experience show that software maintenance projects are difficult, especially when the managed projects include different domain programs written by different peoples. Model Driven Reverse Engineering (MDRE) is a powerful possible response. Reverse engineering is an attractive technique to assist the understanding of unknown programs but the lack of fixed standards increases the management effort. Model Driven Engineering (MDE) provides some answer to this interoperability problem by using models as representations. MDE, particularly the Model Driven Architecture (MDA™), suggests using models to represent systems. These models conform to metamodels. MDRE solutions have been already implemented, like (e.g. Modelisoft [6] in the DotNet environment), and are capable to extract models from a system (a program). This kind of work needs a reflexive language that permits introspection, like Smalltalk, DotNet or Java. But these extractions are limited to a specific fixed metamodel and produce static models based on a static point of view of the considered system. We describe a work which is in process at INRIA in the ATLAS team in Nantes. Our aim is to offer a new solution with a tool capable to extract models from dynamic systems with parametric metamodels. Our approach is to give a decorated metamodel to our extractor which can analyze a program in execution and produce a model conforming to any metamodel. The metamodel is a view definition on the system modeled by the produced model. The decorations will guide the exploration by giving information about the local step knowledge extraction and about the next step discovery. Another particularity is to implement this solution in the Microsoft DotNet technological space [4] while most of our tools are presently working on top of the Eclipse Modeling Framework (EMF) [5]. We permit inter-exchange between these two spaces by serializing the produced model in Ecore format and by providing an Ecore reader/writer for Visual Basic DotNet. So we can use the Atlas Model Management Architecture (AMMA) facilities [1] to define our models, in particular Kernel MetaMetaModel (KM3) to define metamodels and Atlas Transformation Language (ATL) to transform models.