While off-the-shelf, standards-based modeling platforms provide
countless built-in model interpreters (such as code generators of
various sophistication levels in UML environments), current MDE
platforms do not provide built-in interpreters for analysis and code
generation. Instead, they require software engineers to implement
their own model interpreters.
To use an MDE platform to create domain-specific models, software
engineers first specify a metamodel using a metamodel editor.
Metamodel specification consists of instantiating the types available
in the metamodeling language (the metatypes) and defining
their relationships. Each metatype instance captures the type definition
for a domain-specific modeling element.
A metamodel interpreter, which is built into the MDE platform,
uses the metamodel to generate configuration files and/or plug-ins
for the platform’s model editor framework. The model editor framework
uses the configuration files and plug-ins to visually render the
domain-specific model types, manage an internal representation of
the model, and enforce constraints on model well-formedness, according
to the metamodel specification.
With existing MDE platforms, software engineers have to manually
develop a model interpreter, e.g., in order to generate executable
code for a run-time platform. The model interpreter applies
a set of run-time semantics, defined by the software engineer, to the
elements of domain-specific models by defining the consequences
of the use of those elements within the context of the target runtime
platform. The model interpreter outputs a specification or model
that can be directly executed by the target platform.
Replaced/Superseded by document(s)
Domain-specific languages (DSLs) are able to concisely and intuitively express the essential features of system designs because they use the abstractions and patterns that are most useful and natural for the system under development. However, leveraging system models specified in a DSL for automated analysis and code generation requires the implementation of specialized analysis and code generation tools for each DSL. In this paper, we describe a strategy for creating model analysis and code generation tools that can be applied to a large family of DSLs, and can consequently be easily reused off-the-shelf with new languages and applied in new contexts. The key innovation underlying our strategy is the use of metamodels to automatically synthesize configurations and plug-ins for flexible analysis and code generation frameworks. The result is that software engineers utilizing a DSL can perform automated model analysis and code generation without having to develop custom tools, greatly reducing the effort required to utilize a DSL.