hide all comments

DSM

Keeping the language alive

May 30, 2006 09:32:56 +0300 (EEST)

I don’t remember a single business case where the first language version would not need to be changed at some point. Either the domain changes or more likely our understanding of the domain becomes more complete. For maintaining DSM we definitely need tool support. However, most tools that support domain-specific languages focus just on getting the editor running. This may be because they don’t have much experience from the industry yet - or they have some clever ways to define the DSM correctly in the first place ;-).

After having the editor running (let’s forget other tools like generators now), you next recognize the need to share the language and its updates for the developers. While updating the language you also need to establish mappings to previously made models (and update them too) to keep your application development running in parallel with language evolution. Language refinement and language use must be concurrent as applications developers usually can’t wait long for the updated editors (and languages).

15 years ago, in the first version of MetaEdit+ (we called it MetaEdit Personal), we used an updating policy where partly generated and partly hand-written language definition (metamodel) and generators where compiled and passed as metamodel files to developers. They had then responsibility to update the editor and models made so far individually. That led to management and maintenance problems so we moved towards automating the language sharing and evolution. This was simply needed to make it safe for industry use. If language developer modifies the language all models made by others will be updated too (no separate file conversions, passing files to team members and other hassle). I personally believe that DSM creation and maintenance must be made easy with tools: the expert should only focus on his language, not on programming the DSM editor. Similarly sharing the updated version of the DSM should be automatic, if so wanted. The same applies also for updating existing models and generators to the new version of the modeling language.