Domain-specific modeling
Domain-Specific Modelling (DSM) is the systematic use of a Domain Specific Language (DSL) to represent the various facets of an object or a system. DSM languages tend to support higher level abstractions than DSLs, and may or may not be executable.
Modeling tools that support executable DSM languages can automate the generation of executable source code from higher-level abstractions, which can significantly improve developer productivity. This is possible because each DSM language and code generator are defined for a particular domain by a domain expert.
One way to define a DSM language is to use a metalanguage like the OMG's Meta-Object Facility (MOF). The Eclipse community is supporting DSMs and MOF in its Eclipse Modeling Project (EMP). The Eclipse Modeling Framework (EMF) includes a pragmatic implementation of MOF, and the Graphical Modeling Framework (GMF) supports the development of DSM tools.
Differences between DSM tools and traditional CASE tools
A DSM tool may be thought of as a metamodeling tool, i.e., a modeling tool used to define a modeling tool or CASE tool. Since a DSM tool is a metamodeling tool, it supports an additional layer of abstraction when compared to a traditional CASE tool. In some cases, traditional CASE tools are adequate for specific domains, e.g., mobile phones, financial services. However, in many cases CASE tools are too generic and inefficient. Using a DSM tool can significantly improve productivity and efficiency, since a well-designed DSM tool will automate 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 DSM tool generates a modeling tool tailored for the target domain.
DSM example
DSM languages can usually generate a range of abstraction levels for a particular domain. For example, a DSM language for mobile phones should allow users to specify high-level abstractions for the user interface, as well as lower-level abstractions for the implementation of logic gates. Likewise, a DSM language for financial services should permit users to specify high-level abstractions for clients, as well as lower-level abstractions for implementing stock and bond trading algorithms.
Comparison between DSM languages and UML
The Unified Modeling Language (UML) is a General-purpose modeling language for software-intensive systems that is designed to support most object oriented. Consequently, in contrast to DSM languages, UML is used for a wide variety of purposes across a broad range of domains.
However, the UML includes a profile mechanism that allows it to be constrained and customized for specific domains and platforms. UML profiles use stereotypes, tagged values and constraints to restrict and extend the scope of UML to a particular domain. Perhaps the best known example of customizing UML for a specific domain SysML, an DSM langauge for systems engineering.
Formal languages and libraries
Formal languages provide a rigorous basis for defining DSM languages. DSM languages can also be defined using EBNF, Ontology languages, XML Schema, MOF, etc. Although no large library of DSM languages is yet available, a large library of DSLs is available in the Eclipse metamodel open source library.
See also
- General-Purpose Modeling GPM
- Model Driven Engineering MDE
- Domain Specific Language DSL
- Model-driven architecture MDA
- Meta-Object Facility MOF
- Systems Modeling Language SysML is a DSM for systems engineering applications.
- Eclipse (software) Eclipse project, including EMP (Eclipse Modeling Project, Top Level project), EMF, GMF, GMT, etc.
- Computer-aided software engineering CASE
- QVT A Domain Specific Model Transformation Language specification defined by OMG
- ATL An open-source implementation of QVT
- Acceleo An open-source code generator for DSM
External links
- DSM Forum An independent organization of DSM tool vendors, practitioners and experts.
- Domain-Specific Modeling Resources DSM resources, including modeling tools, publications, mailing lists, and blogs.
- Eclipse Graphic Modeling Framework GMF provides a set of open-source tools to build DSM editors.
- Eclipse Modeling Framework EMF provides partial support for DSM.
- SysML Forum A web community dedicated to SysML, a DSM language for systems engineering applications with widespread modeling tool support.
- Modelica and the Modelica Association A web dedicated to Modelica, a DSM language for modeling complex physical systems.
- Article "IT Architect magazine's article on DSM."
- Article "Application Development Advisor magazine's article on DSM"
- Article "ADT at Gartner ITxpo: Gates sees more modeling, less coding" by Rich Seeley
- Article "From coding to modelling: Past, Present and Future"