Code generation
To generate code, ME uses "maps". A map is in fact a library (DLL) or a XME file
(xme) which implements a visitor. Thus, the visitor implemented in the map will
be able to traverse the elements of the metamodel and to progressively generate
the associated code.
The interest of this system is to make it possible to the user to personalize
the generated code, but also to develop new maps by using the C# language
available in the .NET framework, or by using the ME map format, namely the XME,
which is a XML file.
Reverse-engineering
To recover the UML model from the code, ME uses regular expressions which will
enable us to identify the structure of the packages, the classes, the methods
and the attributes.
Any text being found between the elements identified by the regular expressions
is attached, thanks to the tags, to the element at side of which it was found.
Thus, if it finds the following Java code:
public whole String method(int)/* comment */
{
return "Hello world!";
}
/* comment */ will be attached at the end of the method declaration, and return
"Hello world!";
will be attached to the block corresponding to the body of the method.
Generation of UML model
To generate UML model, ME also uses the XMI. It could thus be imported in a tool
of UML modeling, be modified, and re-exported towards ME.
To generate the model into XMI, ME derives its functionnment from the "standard
one": ME uses a map quite simply implementing the generation into XMI instead
of code.
That shows that ME can be used for all the transformations of the XMI and not
only to generate code, even if that remains the main goal. One could for
example import diagrams of use cases to transform them into images via the
appropiated library of the .NET framework. Description
Project team
The project team is composed of