|
By Ron Charron
Contents
Where to go for MDA, MDD and DSL? On one of my recent projects, I was given an opportunity to look into tool options for Capability Requirements Development, Model Driven Development, and Domain Specific Languages. The organization had been using a number of commercial tools which did provide many of the required features individually, but left us with many challenges with respects to streamlining their integration. The modeling notations and presentation came close to meeting our requirements, but in many cases required us to abuse the intent of UML's metamodel. The trend towards DSLs (Domain Specific Languages) was getting increasing levels of attention in our group, sufficiently so that a project was created to look into the matter.
Although the commercial tool vendor's version of Eclipse did include EMF, I did not want to tie any decisions I would make to an aging release. Only a bit of browsing of newsgroups made it clear that a lot of work was being done on the EMF Tools side (EMFT) and that work was being done using newer releases of EMF. Also the Modeling Tools Project (MDT) and Graphical Modeling Framework (GMF) inspired possibilities which otherwise could not have been considered due to limited developer resources. Eclipse Packaged Distributions A first challenge when planning out the Eclipse stack to use is one of configuration management. The Release Train idea is an absolutely terrific one. Unfortunately, the features I was aiming to get where not yet available in the Callisto synchronized release, so I had to choose my releases piecemeal from the evolving pre-Europa GA. Be forewarned that this is not an easy undertaking as you are basically trying to patch together features of work in progress (in open heart surgery is one metaphor). The Eclipse Plug-In architecture and the evolving community conventions did lead to my deciding that it would be possible to make due until the Europa Release train came to town, so to speak.
There are a number of books on EMF and I suggest you scan through them on O'Reilly Safari and either buy or borrow. Some are getting a bit out of date, but still have good basics, examples, and ideas to offer. Integrating examples and tutorials right into Eclipse's Help system is a class act. People often disregard going to a help system because the content is often very anemic. In my experience working with Eclipse Callisto and Europa, I have to say that you should make sure that you go through what has been published in the Help systems. If anything the wealth of links will give you a good start. The GMF Mindmap example walks you through building a working graphical manipulation capable model editor. Make sure that your JRE is set to the right revision. This is absolutely essential with GMF examples.
Eclipse Benefits EMF allowed us to define our metamodels in a very intuitive fashion. Though you can get a lot done through the sample ECore Editors and property dialogs, you are best advised to have a Java programmer on hand. After you enter your models either by providing code stubs in Java, or through the sample ECore Editor, or through import of IBM Rational Rose or XML files, your next step is to generate the supporting code for the model, the editors, and if need-be the test case scaffolding. These features are comprehensive. The generated code is very readable and there are clean guidelines on where to introduce your own code. Once you have successfully generated the EMF supporting classes for your metamodel, you are ready to move on to building up the GMF model. An Eclipse cheat sheet is available for both EMF and GMF examples and are a good way to become familiar with the workflow. Once you have cut your teeth on the examples, you can then import your EMF model and start adding tool bar and graphical definitions in the supplied GMF editors. These editors do require a certain understanding of how the pieces fit together however, so do make sure you work through the examples before you commit to a delivery timeline. There are references to an "experimental SDK" for GMF which is supposed to allow you to do graphical editing of the GMF models, but I haven't tried it yet. One thing you should be aware of is that refactoring capabilities aren't really there yet. I suggest you get a reasonable amount of work done using just the GMF supplied editors before you start coding in extensions. The reason I say this is that the easiest way to deal with refactoring issues (until you start understanding how GMF behaves) will be to delete the generated code and then regenerate. Now let's take a moment to reflect. At the beginning of this article, I mentioned our need to find possible tooling solutions for Model Driven Development and Domain Specific Languages. With EMF alone, I think we have a really good base for building up our MDD foundations by allowing us to readily build up our metamodel and then our model instances in the runtime. Adding in GMF has given us the added possibility of graphically manipulating the model instances. These are capabilities which would have taken way more programmer resources than we have available. Sure it could be done, but nowhere near as extensive in features and maturity. There was obviously a lot of work and effort put in to these tools and there is a lot of "standing on the shoulders of giants" going on here.
If you are considering using Eclipse Europa for similar projects, be advised that a number of tool vendors are planning to build on top of this platform. From our experiences to date, the vendor's position on this could either qualify or dismiss them for certain projects. Certainly, it makes sense to work with fully tested products supported in all necessary geographies by a well established vendor. That is the nature of doing (software) business in many large corporations and also in public sector projects. However, given the thoroughness of the Eclipse community processes, the visibility offered by supporting communication tools, and the significant collaboration the Eclipse Foundation has managed to foster from major industry tool vendors and top notch developers, it would be silly to disregard Eclipse Europa as a possibly viable tool set on its own for many projects. As your needs grow, or if a vendor offers capabilities beyond that of the open-source projects, then you will have an upgrade path. To avoid vendor lock-in, I suggest you always have access to a SME that can let you know how dependent you may get on vendor-specific features. The extent to which the vendors are "good citizens" in the Eclipse community (and open-source in general) may be an indicator of the pains you may need to go through should you decide to change tool vendors. For example what is a custom vendor feature today may eventually seed an open-source project tomorrow. And even if there is a fork in the road, a good vendor should facilitate the migration of the vendor specific work products to the ever appearing new standard on the block. Conclusions Eclipse Europa has shown itself as providing the necessary ingredients for pursuing our MDD and DSL work. Though it is probable that we will eventually move on to a commercial stack (we need some commercially available features) it will need to sit on top of Eclipse. The Eclipse Foundation has fostered an excellent collaborative environment and a community which has been able to build a formidable toolset. The move from Eclipse Callisto to Europa has seen a tremendous growth in the number of projects and features. Many of the projects are starting to build on top of each other, limiting the amount of duplication. The Europa release of the tools we used are pretty solid and are definitely worth taking a look if you are in the market for new tooling. You would be doing yourself a disservice if you didn't. |