Reverse engineering of Java code is not new. Many tools offer some kind of model-based visualization of a given set of Java classes, most times in the form of a static UML class diagram.
However, new model-driven reverse engineering approaches as MoDisco and JaMoPP follow a different (and, in my opinion, more-interesting) approach. Instead of parsing the Java code to produce a single model-based representation, they have proposed a complete Java metamodel. This metamodel is used as a pivot metamodel between the code and any model-based representation that we may be interested in.
The idea is to use first their parser to represent the java code as a Java model instance of the Java metamodel. Then, as a model, all existing techniques for model-to-model and model-to-text transformations (among many others) can be used to manipulate the java application. For instance, we can write a Java-to-UML transformation that derives a UML model from the generated Java model (similar to what previous tools did) but now, this is just one of the endless possibilities we have.
If you enjoyed this post you can subscribe to this Software Modeling blog and/or follow me on twitter . And if you really liked it help me pass it on to others by bookmarking and sharing the post using the links below: