Introduction to Domain-Specific Modeling

Domain-Specific Modeling (DSM) is a model-based software development approach that uses visual models as primary artifacts in the development process.

The process

With DSM, a company expert – or a small team of them – defines a Domain-Specific Modeling language and the generators that will transform designs made with that language into the artifacts the company needs (e.g. code, configuration files, documentation). Developers then use this modeling language to create high-level models.

Once these high-level models are created, full-code can then be automatically generated from them using customized code generators.

The results

DSM offers the largest improvement in software development productivity since the move from Assembler to 3GLs. Industrial experiences with DSM consistently show it to be 5-10 times faster

MetaEdit+ from MetaCase reduces the time needed to build a custom DSM solution from years to days. For example, mobile phone manufacturer Nokia states that with MetaEdit+/DSM it now develops mobile phone applications 10 times faster than it did before!

Key benefits of DSM with MetaEdit+

Increased productivity

MetaEdit+ users consistently report radical productivity improvements of 500-1000%!

Improved quality

MetaEdit+ not only radically improves productivity, but there is also a marked improvement in code quality. By relying on automatic generation, manual coding errors are completely eliminated.

Better communication and understanding

Because the language is created by the organization to meet their own needs, it is able to use concepts that would be more familiar to company stakeholders than jargon coming from the IT world.

MetaEdit+ Workbench - Build your own Domain-Specific Modeling language

MetaEdit+ Workbench allows you to build your own modeling tool — without having to write a single line of code. As soon as you define a modeling language, you and your team can start to use it in MetaEdit+.

Design your modeling language / Use your modeling language

MetaEdit+ Workbench provides a simple yet powerful metamodeling language and tool suite for designing your modeling language. Using these tools you can easily define the language concepts, their properties, associated rules, symbols, checking reports and generators. The extensive library of reusable modeling language components allows you to get started straight away.

1) Define domain-specific concepts

Language development starts by defining the concepts of your modeling language Depending on your domain

Define concepts / Use them in designs

You create the language's concepts and their associated properties and rules by filling in the forms or by specifying them graphically. There are six metamodeling concepts and related tool for specifying languages into MetaEdit+:

  • Object Tool: here you specify the basic concepts of your modeling language. Objects are the main elements of your design, symbols you connect together and often reuse, such as Process, Message, Button and State.
  • Property Tool: here you define the properties (attributes) which characterize other language concepts. Properties can be of different data types (string, text, number, Boolean, collection etc.)
  • Relationship Tool: here you define properties and symbols for the objects’ connections, such as Inheritance, Message, Call and Transition.
  • Role Tool: here you specify the lines and end-points of relationships, like the Superclass part of Inheritance relationships and the Client part of Message Connections.
  • Port Tool: here you define possible interfacing constraints when connecting objects, like digital input at hardware card or control flow attached to the bottom of the process elements.
  • Graph Tool: here you manage specifications of whole modeling techniques, such as State Diagram and Component Diagram. Techniques are composed of the Objects, Relationships and Roles defined with other tools, together with bindings and rules on how these can be connected. Different techniques can be integrated with explosions, decompositions and reusable modeling concepts.

2) Pick rules

Your domain includes many rules about how the concepts are identified and connected to each other., MetaEdit+ identifies several rules from which you can pick. You can later change the rules, even while developers are using your language.

Choose rules / Tool follows them while modeling

For one modeling language you can define how its concepts can be related to each other and how many connections (of certain type) are allowed between each instance.

3) Draw symbols

Draw symbols / Use them in models

Drawing the graphical representations is easy with the Symbol Editor. It includes the shapes and tools you are familiar with from standard graphics programs. You can choose different shapes, colours, line widths, font styles, text wrapping, alignment, import graphic files etc. Symbol elements can be conditional on property values and can display values calculated by generators, allowing dynamic graphical behavior. Commonly used symbols or parts of symbols can be stored in the Symbol Library for reuse.

4) Make generators

With MetaEdit+ you can make reports which check the consistency of the models, produce metrics, create data dictionaries, produce documentation, generate code, or configuration information and export models to other programs.

Make generators / Run them to your designs

5) Start to use your language

MetaEdit+ delivers your language and generators immediately to the developers of your team. The created development tool supports your modeling language, generates your code the way you want, and produces documents following your standards.

Use your modeling language, generate products and documentation

Even while developers are using your language, you can make changes to it.