Technology: Domain-Specific Modeling explained
Domain-Specific Modeling (DSM) allows developers to become more productive by raising the abstraction level upon which they specify their solutions. It does this in a similar way as how (starting in the 1950's) 3rd generation programming languages raised the abstraction level from programming in Assembly language, which provided developers with an easier to understand syntax. A compiler facilitated the translation of instructions in the higher-level language to those in lower-level assembler and developers became an impressive 4 to 5 times more productive.
Drawing code (the solution) does not reduce its complexity
With the solutions that we want software to provide becoming ever more complex, many companies seek to raise abstraction further and manage complexity better. Often they do this by using frameworks, component libraries and platforms that provide reusable assets upon which they program their solutions, and by adopting a modeling notation (e.g. UML) in order to design and check the software graphically, prior to writing the code for it.
Although helpful, these approaches do not provide developers with a significant raise in the abstraction level and therefore do not reduce complexity. UML uses the same programming concepts and rules that we find in the programming languages it supports: it merely visualizes them. A problem encountered with current mainstream and general-purpose modeling languages is that due to their generic nature, these do not allow developers to capture aspects like interaction, dynamic application behavior and user actions. Another problem is the lack of support for following the unique architecture and design rules that make software development different from company to company and product-line to product-line. Because of this, designs lack essential information and often fail to adhere to the architecture, performance and quality requirements imposed by the problem domain. The result is an inability to generate automatically final, production-quality code, something that compilers did achieve with assembler. This leads to a need for manual editing of code and models, reverse and roundtrip engineering and intensive testing cycles.
DSM: draw the problem and generate the solution
DSM takes another approach at modeling and generating code from models. It moves the focus of modeling languages from general-purpose programming toward single problem domains. Every problem domain differs from another, from company to company, product to product or system to system. By using the concepts and rules that are valid for one problem domain directly as modeling language concepts and rules, such domain-specific modeling languages become more expressive and raise the abstraction level of specification work beyond code (the solution) toward that of the problem domain. This allows developers to capture efficiently all needed information to describe an application completely, while the modeling language supports them in following valid architecture and design rules. Because of this narrow focus, final products in code, configuration files and documentation can be generated automatically from the higher-level designs. This allows developers to be significantly more effective, thus accelerating development cycles.
The idea behind DSM is to allow a company expert, or a small team of them, to define the domain-specific modeling language and the generators that transform designs in that language into the artifacts they need (i.e. code, configuration files, documentation etc.). After all, a company's expert knows better than its' other developers or any tool vendor how to describe the company's products and what the rules of the problem domain are. A company's expert also knows better than a tool vendor how to write code for the company's problem domain. With DSM, the company's expert has total freedom to define the model-driven development mechanism and make changes to it when needed, while mainstream UML-based model-driven development tools offer a one-size-fits-all mechanism.
DSM offers the largest improvement in software development productivity since the move from assembler to 3GL. Industrial experiences of DSM consistently show it to be 5-10 times faster than current practices, including UML-based implementations of MDA. However, building a tool that offers support for a domain-specific language is a large undertaking, often preventing a company from adopting DSM.
MetaEdit+ from MetaCase changes this, reducing the time needed from years to days. MetaEdit+ is the most advanced visual modeling environment to offer full support for DSM. As such, a rapidly growing number of companies in industries ranging from telecommunications to financial services and medical devices to automotive are using it to improve their software development process. The results are no less than remarkable. For example mobile phone manufacturer Nokia states that with MetaEdit+/DSM it now develops mobile phone applications 10 times faster than with traditional modeling and coding methods!


