How to Deal with your IT Legacy
MoDisco in a Nutshell! - Part 2
Reusability and Extensibility
In the two previous sections of this article, the different available MoDisco features have been largely presented, with a strong focus on the extensive Java support natively offered by the framework. Let's now try to have a more global vision of the different MoDisco components and see the benefits brought by the underlying architecture. As shown on Figure 4, the MoDisco framework is actually composed of three distinct but complementary layers.
The "Infrastructure" layer is the base of the framework. It provides the set of generic components (in the sense of legacy technology-independence) that can be reused in various and varied reverse engineering scenarios. It includes fundamental components such as the powerful Model Browser, the Discovery Manager & Workflow or the Query Manager. It also contains the reference implementations of generic OMG ADM standard metamodels, as presented before in this paper, as well as the corresponding tooling (related transformations, customizations, etc).
The "Technologies" layer is made to be used on top of components from the "Infrastructure". It implements the legacy technology-specific support via the corresponding reference metamodels, discoverers, generators, transformations, etc. As stated before, the Indigo MoDisco version notably offers an advanced support for the Java and JEE technologies. Additionally, a base support for XML is also provided. As relying on generic components from the "Infrastructure", the set of components available from this "Technologies" layer can be naturally extended with the support for other technologies, and the related components then plugged in the framework accordingly for future uses.
Finally, the "Use Cases" layer is just here to present a couple of sample scenarios showing how the different components, from the two previously described layers, can be integrated together via the framework in order to achieve a particular reverse engineering goal. Thus, two simple scenarios of this kind are currently provided to quickly demonstrate what can be done with MoDisco when starting from available Java artifacts in the Eclipse environment.
These three layers, and the natural complementarity between their contained generic and technology-specific components, give the MoDisco framework all the extensibility and reusability capabilities required to be able to elaborate on concrete reverse engineering solutions.
What's new in the Indigo version?
Different significant improvements have been performed on most of the existing MoDisco components (since the previous Helios version). Obviously, many of them relate to the provided support for the Java technology, as described before. The upgrades mainly concern regular bug fixing, feature enhancement requests, but also performance increases according to these items.
However, as part of MoDisco v0.9.0, brand new metamodels and discoverers can now be found. On the one hand, what's totally new in this year's Indigo version of the project, is the extension of the Java support with a set of JEE-dedicated components. They include notably:
A JSP metamodel and corresponding discoverer to automatically obtain models from existing JEE Web applications written in JSP (cf. example from Figure 5);
A specific framework to facilitate the development and use of discoverers for JEE descriptor files (e.g. for the different JEE framework configuration files);
Related to this, the already implemented support for two of these descriptor file types: "web.xml" and "ejb-jar.xml";
And a set of useful queries and facets for more easily extracting or presenting JEE-specific information from previously discovered Java models.
On the other hand, continuing collaborating with the OMG ADM Task Force, MoDisco now offers a reference implementation (in EMF Ecore) of another of their standards called OMG Abstract Syntax Tree Metamodel (ASTM), in addition to the already provided KDM OMG Knowledge Discovery Metamodel (KDM) and SMM OMG Software Metrics Metamodel (SMM) ones.
In its latest version for Indigo, the MoDisco project and its underlying framework now provide a significant support for the Java technology and related JEE ones, such as JSP. They also provide more reference implementations of relevant OMG ADM standards. Based on this set of components and offered features, either upgraded since the previous Helios version or completely new, complex (model driven) reverse engineering solutions can be designed, then built and finally executed effectively over different legacy systems. Of course, all these available resources are heavily supported by an active development team and continuously growing user community.
Moreover, the release of MoDisco v0.9.0 also opens a new exciting era in the history of the project. The Next version is planned to be v1.0.0, which will imply the project is "graduating" and getting rid of the "incubation" status to officially become a "mature" project (according to the Eclipse Foundation terminology). The required effort will be directly supported by the MoDisco team via its extension with additional dedicated resources. This is fully part of the ongoing project's industrialization process, driven in collaboration with AtlanMod and Mia-Software, which will be obviously continued and even strengthened in the coming months.
Reverse engineering and the understanding of legacy systems remain complex fields with some very interesting challenges still open. One of those which is particularly relevant in the context of MoDisco is scalability: how to deal efficiently with very big legacy systems and the huge amount of data (and metadata) this implies in corresponding reverse engineering processes? Let's focus a bit more on this during the coming year... So stay tuned, and of course see you next year for the MoDisco Juno version!
- A Short History
- Reusability and Extensibility