Raise your level of abstraction
Hi everyone, I am relatively new to model driven development
Can you tell me:
1) the simplest way of developing a DSL
2) a nice tutorial to develop DSL
Thank you all
The Eclipse Modeling ecosystem proposes a lot of interesting tools/components with the Eclipse Marketplace Modeling category (http://marketplace.eclipse.org/search/apachesolr_search/?filters=ti...).
Your could find also interesting tools on the Language Workbench competition website: http://www.languageworkbenches.net/
Of course I'm interesting to tell you more about Obeo Designer, our solution to easily create your own DSL and associated modeling tools ;)
I invite you to take a look to this video that will quickly show you the tool in action: http://www.youtube.com/watch?v=SqVaMxXELnY&feature=player_embedded
A white is available here: http://www.obeo.fr/resources/WhitePaper_ObeoDesigner.pdf
And more details here: www.obeodesigner.com
Thank you for the reply. I saw the video and visited the website, tool is interesting, I need to play with it ;-)
Like Freddy mentioned, tools have a role on how simple it is to develop a domain-specific language. While LWC is a coming event you might be interested to check MDD-TIF that provides reviews and sample implemenation with different tools (see http://www.dsmforum.org/events/MDD-TIF07/).
However, like in software development, the initial creation is just a part of the effort as the DSL (and the created models) needs to be maintained too. I woudl thus argue that more important is to have tools that support evolution of the language and evolution of the models created with the language.
To answer your questions:
1) the simplest way of developing a DSL?
If you are creating your first language, pick a small, mature and familiar domain to target. If it looks too simple it does not matter as you can later extend the domain. Usually modeling some static structures or data is easier than creating a DSL that models functionality or behavior. Build the language incrementally and use some tool so you can test the language immediately (I don’t know anybody who gets it right in the first place). Often building is best to start from the core concepts. Give then the language early to potential users, or get them involved already in language definition phase (a longer discussion with various DSLs can be found from http://www.dsmbook.com).
2) a nice tutorial to develop DSL?
Code Generation 2011 (http://www.codegeneration.net/cg2011/programme.php) offers several tutorials on this topic and at least a couple are executed in a hands-on style. If you prefer to carry a tutorial with own pace and time then you might be interested to check the tutorials at http://www.metacase.com/support/45/manuals/ (in particular the Evaluation Tutorial).
Perhaps you will find my tutorial "Interactive DSML Design" useful (URL: http://tinyurl.com/5wcx5lu). It gives an overview of techniques to capture, simplify and make more expressive domain concepts, before going into DSL implementation (aka metamodel).
I agree with other comments that the choice of a language workbench is very important, as it affects the gap between your domain concepts and a working metamodel. From my experience I can recommend any of the following: AToM3, MetaEdit+ or Obeo Designer (free or free trials are available).
Good luck and please post about your experience.
Thank you for your concern and reply. You are right that the choice of a language workbench is very important. Secondly, thanks for suggesting me the URL. Allow me some time to go through it.