Abstract. Using domain-specific modelling environments maximally constrains users, matching their mental model of the problem domain, and allows them to only build syntactically correct models. Anecdotal evidence shows that domainspecific modelling can drastically improve productivity as well as product quality. In this paper, the foundations of (domain-specific) modelling language design are presented. Our guiding principle is to "model everything". It is indeed shown how all aspects of language design can be explicitly (meta-)modelled enabling the efficient synthesis of domain-specific, visual, modelling environments. The case of AToM 3 , A Tool for Multi-formalism and Meta Modelling, is elaborated. Concepts are illustrated by modelling, analysis, simulation, and eventual synthesis of software for Traffic networks.
Dissecting a Modelling LanguageTo explicitly model domain-specific modelling languages and ultimately synthesize visual modelling environments for those, we will break down a modelling language into its basic constituents. The following is based on a description by Harel and Rumpe [1], taking common programming language concepts and putting them in a more general modelling context. An earlier version of this section appeared as a tutorial at a 2006 MoDELS workshop [2].The two main aspects of a model are its syntax (how it is represented) on the one hand and its semantics (what it means) on the other hand. The syntax of modelling languages is traditionally partitioned into concrete syntax and abstract syntax. In textual languages for example, the concrete syntax is made up of sequences of characters taken from an alphabet. These characters are typically grouped into words or tokens. Certain sequences of words or sentences are considered valid (i.e., belong to the language). The (possibly infinite) set of all valid sentences is said to make up the language. Costagliola et. al.[3] present a framework of visual language classes in which the analogy between textual and visual characters, words, and sentences becomes apparent. Visual languages are those languages whose concrete syntax is visual (graphical, geometrical, topological, . . . ) as opposed to textual. For practical reasons, models are often stripped of irrelevant concrete syntax information during syntax checking. This results in an "abstract" representation which captures the "essence" of the model. This is called the abstract syntax. Obviously, a single abstract syntax may be represented using multiple concrete syntaxes. In programming language compilers, abstract syntax of models (due to the nature of programs) is typically represented in Abstract Syntax Trees (ASTs). As in the context of general modelling, models are often graph-like, this representation can be generalized to Abstract Syntax Graphs (ASGs). Once the syntactic correctness of a model has been established, its meaning must be specified. This meaning must be unique and precise (to allow correct model exchange and code synthesis for example). Meaning can be expressed by specifyin...