Defining domain-specific languages To define a language, one needs a language to write the definition in. The language of a model is often called a
metamodel, hence the language for defining a modeling language is a meta-metamodel. Meta-metamodels can be divided into two groups: those that are derived from or customizations of existing languages, and those that have been developed specifically as meta-metamodels. Derived meta-metamodels include
entity–relationship diagrams,
formal languages,
extended Backus–Naur form (EBNF),
ontology languages,
XML schema, and
Meta-Object Facility (MOF). The strengths of these languages tend to be in the familiarity and standardization of the original language. The ethos of domain-specific modeling favors the creation of a new language for a specific task, and so there are unsurprisingly new languages designed as meta-metamodels. The most widely used family of such languages is that of OPRR, GOPRR, and GOPPRR, which focus on supporting things found in modeling languages with the minimum effort.
Tool support for domain-specific languages Many
General-Purpose Modeling languages already have tool support available in the form of
CASE tools. Domain-specific languages tend to have too small a market size to support the construction of a bespoke CASE tool from scratch. Instead, most tool support for domain-specific languages is built based on existing domain-specific language frameworks or through domain-specific language environments. A domain-specific language environment may be thought of as a metamodeling tool, i.e., a modeling tool used to define a modeling tool or CASE tool. The resulting tool may either work within the domain-specific language environment, or less commonly be produced as a separate stand-alone program. In the more common case, the domain-specific language environment supports an additional layer of
abstraction when compared to a traditional CASE tool. Using a domain-specific language environment can significantly lower the cost of obtaining tool support for a domain-specific language, since a well-designed domain-specific language environment will automate the creation of program parts that are costly to build from scratch, such as domain-specific editors, browsers and components. The domain expert only needs to specify the domain specific constructs and rules, and the domain-specific language environment provides a modeling tool tailored for the target domain. Most existing domain-specific language takes place with domain-specific language environments, either commercial such as
MetaEdit+ or
Actifsource, open source such as
GEMS, or academic such as
GME. The increasing popularity of domain-specific language has led to domain-specific language frameworks being added to existing IDEs, e.g. Eclipse Modeling Project (EMP) with
EMF and
GMF, or in Microsoft's DSL Tools for
Software Factories. == Domain-specific language and UML ==