Domain-specific modeling: Difference between revisions

Content deleted Content added
Importing Wikidata short description: "Software engineering methodology"
 
(47 intermediate revisions by 36 users not shown)
Line 1:
{{Short description|Software engineering methodology}}
'''Domain-specific modeling''' ('''DSM)''') is a [[software engineering]] [[Methodology (software engineering)|methodology]] for designing and developing systems, such as [[computer software]]. It involves systematic use of a graphical [[___domain-specific language]] (DSL) to represent the various facets of a system. DSM languages tend to support higher-level [[Abstraction (computer science)|abstractions]] than [[general-purpose modeling]] languages, so they require less effort and fewer low-level details to specify a given system.
 
Domain-specific modeling languages tend to support higher-level [[Abstraction (computer science)|abstractions]] than [[general-purpose modeling]] languages, so they require less effort and fewer low-level details to specify a given system.
 
== Overview ==
Domain-specific modeling (DSM) often also includes the idea of [[Automatic programming|code generation]]: [[Automation|automating]] the creation of executable [[source code]] directly from the DSM___domain-specific language models. Being free from the manual creation and maintenance of source code means DSM___domain-specific language can significantly improve developer productivity.<ref name="dsmKelly">Kelly, S. and Tolvanen, J.-P., (2008) ''Domain-Specific Modeling: Enabling Full Code Generation,'' John Wiley & Sons, New Jersey. {{ISBN |978-0-470-03666-2}} [http://dsmbook.com]</ref>. The reliability of automatic generation compared to manual coding will also reduce the number of defects in the resulting programs thus improving quality.
 
DSMDomain-specific language differs from earlier code generation attempts in the [[Computer-aided software engineering|CASE]] tools of the 1980s or [[Unified Modeling Language|UML]] tools of the 1990s. In both of these, the code generators and modeling languages were built by tool vendors.{{fact|date=November 2012}} While it is possible for a tool vendor to create a DSM___domain-specific language and generators, it is more normal for DSM___domain-specific language to occur within one organization. One or a few expert developers creates the modeling language and generators, and the rest of the developers use them.
 
Having the modeling language and generator built by the organization that will use them allows a tight fit with their exact ___domain and needs. It also reduces the time needed for developers to learn the modeling language, since it can use familiar terms and concepts. Finally, since only one organization's requirements need be taken into account, it is easier for the modeling language to evolve in response to changes in the ___domain.
 
DSMDomain-specific languages can usually cover a range of abstraction levels for a particular ___domain. For example, a DSM___domain-specific modeling language for mobile phones could allow users to specify high-level abstractions for the [[user interface]], as well as lower-level abstractions for storing data such as phone numbers or settings. Likewise, a DSM___domain-specific modeling language for financial services could permit users to specify high-level abstractions for clients, as well as lower-level abstractions for implementing stock and bond trading algorithms.
 
== Topics ==
== Domain-specific modeling topics ==
=== Defining DSM 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.
 
=== Defining DSM___domain-specific languages ===
Derived meta-metamodels include [[Entity-relationship model|Entity Relationship Diagrams]], [[Formal languages]], [[Extended Backus-Naur form|EBNF]], [[Ontology language (computer science)|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.
To define a language, one needs a language to write the definition in. The language of a model is often called a [[metamodeling|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-relationshipentity–relationship model|Entity Relationshipentity–relationship Diagramsdiagrams]], [[Formalformal languages]], [[Extendedextended Backus-NaurBackus–Naur form|EBNF]] (EBNF), [[Ontologyontology language (computer science)|Ontologyontology languages]], [[XML Schemaschema]], and [[Meta-Object Facility|MOF]] (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<ref name="oprrWelke">R.J. Welke. The CASE Repository: More than another database application. In W.W. Cotterman and J.A. Senn, editors, Proceedings of 1988 INTEC Symposium Systems Analysis and Design: A Research Strategy, Atlanta, Georgia, 1988. Georgia State University. [http://www.dsmforum.org/papers/CASE_Repository.html]
</ref><ref name="oprrSmolander">Smolander, K., (1992) OPRR - A Model for Modeling Systems Development Methods. In: Next Generation CASE Tools (eds. K. Lyytinen, V.-P. Tahvanainen) IOS Press, Amsterdam, Netherlands, pp. 224-239.[http://books.google.com/books?id=tsbNn6auhm8C&pg=PA224]</ref>, GOPRR<ref name="GOPRR">Kelly, S., Lyytinen, K., and Rossi, M., "MetaEdit+: A Fully Configurable Multi-User and Multi-Tool CASE Environment," Proceedings of CAiSE'96, 8th Intl. Conference on Advanced Information Systems Engineering, Lecture Notes in Computer Science 1080, Springer-Verlag, pp. 1-21, 1996. (in [http://www.metacase.com/stevek.html Ph.D.] thesis as 3metools.pdf)</ref>, and GOPPRR, which focus on supporting things found in modeling languages with the minimum effort.
 
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,<ref name="oprrWelke">R.J. Welke. The CASE Repository: More than another database application. In W.W. Cotterman and J.A. Senn, editors, Proceedings of 1988 INTEC Symposium Systems Analysis and Design: A Research Strategy, Atlanta, Georgia, 1988. Georgia State University. [http://www.dsmforum.org/papers/CASE_Repository.html]
=== Tool support for DSM languages ===
</ref><ref name="oprrSmolander">Smolander, K., (1992) OPRR - A Model for Modeling Systems Development Methods. In: Next Generation CASE Tools (eds. K. Lyytinen, V.-P. Tahvanainen) IOS Press, Amsterdam, Netherlands, pp. 224-239.[httphttps://books.google.com/books?id=tsbNn6auhm8C&pg=PA224]</ref>, GOPRR,<ref name="GOPRR">Kelly, S., Lyytinen, K., and Rossi, M., "MetaEdit+: A Fully Configurable Multi-User and Multi-Tool CASE Environment," Proceedings of CAiSE'96, 8th Intl. Conference on Advanced Information Systems Engineering, Lecture Notes in Computer Science 1080, Springer-Verlag, pp. 1-21, 1996. (in [http://www.metacase.com/stevek.html Ph.D.] thesis as 3metools.pdf)</ref>, and GOPPRR, which focus on supporting things found in modeling languages with the minimum effort.
Many [[General-Purpose Modeling]] languages already have tool support available in the form of [[Computer-aided software engineering|CASE]] tools. DSM 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 DSM languages is built based on existing DSM frameworks or through DSM environments.
 
=== Tool support for DSM___domain-specific languages ===
A DSM 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 DSM environment, or less commonly be produced as a separate stand-alone program. In the more common case, the DSM environment supports an additional layer of [[Abstraction (computer science)|abstraction]] when compared to a traditional CASE tool.
Many [[General-Purpose Modeling]] languages already have tool support available in the form of [[Computer-aided software engineering|CASE]] tools. DSMDomain-specific language 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 DSM___domain-specific language languages is built based on existing DSM___domain-specific language frameworks or through DSM___domain-specific language environments.
 
A DSM___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 DSM___domain-specific language environment, or less commonly be produced as a separate stand-alone program. In the more common case, the DSM___domain-specific language environment supports an additional layer of [[Abstraction (computer science)|abstraction]] when compared to a traditional CASE tool.
Using a DSM environment can significantly lower the cost of obtaining tool support for a DSM language, since a well-designed DSM 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 DSM environment provides a modeling tool tailored for the target ___domain.
 
Using a DSM___domain-specific language environment can significantly lower the cost of obtaining tool support for a DSM___domain-specific language, since a well-designed DSM___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 DSM___domain-specific language environment provides a modeling tool tailored for the target ___domain.
Most existing DSM takes place with DSM environments, either commercial such as [[MetaEdit+]] or [[Actifsource]], open source such as [[Generic Eclipse Modeling System|GEMS]], or academic such as [[Generic Modeling Environment|GME]]. The increasing popularity of DSM has led to DSM frameworks being added to existing IDEs, e.g. [http://www.eclipse.org/modeling/ Eclipse Modeling Project] (EMP) with [[Eclipse Modeling Framework|EMF]] and [[Graphical Modeling Framework|GMF]], or in Microsoft's [http://msdn.microsoft.com/vstudio/DSLTools/ DSL Tools] for [[Software factory|Software Factories]].
 
Most existing DSM___domain-specific language takes place with DSM___domain-specific language environments, either commercial such as [[MetaEdit+]] or [[Actifsource]], open source such as [[Generic Eclipse Modeling System|GEMS]], or academic such as [[Generic Modeling Environment|GME]]. The increasing popularity of DSM___domain-specific language has led to DSM___domain-specific language frameworks being added to existing IDEs, e.g. [http://www.eclipse.org/modeling/ Eclipse Modeling Project] (EMP) with [[Eclipse Modeling Framework|EMF]] and [[Graphical Modeling Framework|GMF]], or in Microsoft's [https://web.archive.org/web/20060423095834/http://msdn.microsoft.com/vstudio/DSLToolsdsltools/ DSL Tools] for [[Software factory|Software Factories]].
== DSM and UML ==
 
The [[Unified Modeling Language]] (UML) is a [[general-purpose modeling]] language for software-intensive systems that is designed to support mostly [[Object-oriented programming|object oriented programming]]. Consequently, in contrast to DSM languages, UML is used for a wide variety of purposes across a broad range of domains. The primitives offered by UML are those of object oriented programming, while ___domain-specific languages offer primitives whose [[semantics]] are familiar to all practitioners in that ___domain. For example, in the ___domain of [[automotive engineering]], there will be software models to represent the properties of an [[anti-lock braking system]], or a [[steering wheel]], etc.
== Domain-specific modelinglanguage topicsand UML ==
The [[Unified Modeling Language]] (UML) is a [[general-purpose modeling]] language for software-intensive systems that is designed to support mostly [[Object-oriented programming|object oriented programming]]. Consequently, in contrast to DSM___domain-specific language languages, UML is used for a wide variety of purposes across a broad range of domains. The primitives offered by UML are those of object oriented programming, while ___domain-specific languages offer primitives whose [[semantics]] are familiar to all practitioners in that ___domain. For example, in the ___domain of [[automotive engineering]], there will be software models to represent the properties of an [[anti-lock braking system]], or a [[steering wheel]], etc.
 
UML includes a profile mechanism that allows it to be constrained and customized for specific domains and platforms. UML profiles use [[Stereotype (UML)|stereotypes]], stereotype attributes (known as tagged values before UML 2.0), 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 is [[SysML]], a ___domain specific language for [[systems engineering]].
 
UML is a popular choice for various model-driven development approaches whereby technical artifacts such as source code, documentation, tests, and more are generated algorithmically from a ___domain model. For instance, application profiles of the legal document standard [[Akoma Ntoso]] can be developed by representing legal concepts and ontologies in UML class objects.<ref>{{Cite book |last=Flatt |first=Amelie |title=Model-Driven Development of Akoma Ntoso Application Profiles - A Conceptual Framework for Model-Based Generation of XML Subschemas |last2=Langner |first2=Arne |last3=Leps |first3=Olof |publisher=Sprinter Nature |year=2022 |isbn=978-3-031-14131-7 |edition=1st |___location=Heidelberg |language=en}}</ref>
==See also==
 
* [[Computer-aided software engineering]]
== DSMSee and UMLalso ==
* [[Domain-driven design]]
* [[Computer-aided software engineering]]
* [[Domain-specific language]]
* [[Domain-driven design]]
* [[Domain-specific language]]
* [[Framework-specific modeling language]]
* [[General-purpose modeling]]
* [[Domain-specific multimodeling]]
* [[Model-driven engineering]]
* [[Model-driven architecture]]
* [[Software factories]]
* [[Service-oriented modeling#Discipline-specific modeling|Discipline-Specific Modeling]]
 
== References ==
{{Reflist}}
 
== FurtherExternal readinglinks ==
* Article "[http://www.itarchitect.co.uk/articles/display.asp?id=161 ITDomain-specific Architectmodeling magazine'sfor articlegenerative onsoftware DSM.development]" {{Webarchive|url=https://web.archive.org/web/20100131064439/http://www.itarchitect.co.uk/articles/display.asp?id=161 |date=2010-01-31 }}, Web-article by Martijn Iseger, 2010
* Article [https://web.archive.org/web/20151118021655/http://www.pocomatic.com/docs/whitepapers/dsm/ Domain Specific Modeling in IoC frameworks] Web-article by [[Ke Jin]], 2007
* Article "[http://www.appdevadvisor.co.uk/express/vendor/___domain.html Application Development Advisor magazine's article on DSM]"
* Article [http://www.methodsandtools.com/archive/archive.php?id=50 Creating a26 Domain-Specific Modeling Language for anFull ExistingCode FrameworkGeneration from Methods & Tools] Web-article by Juha-Pekka Tolvanen, 2005
* Article "[http://adtmag.com/article.asp?id=9166 ADT at Gartner ITxpo: Gates sees more modeling, less coding]" by Rich Seeley
* Article [http://www.methodsandtools.com/archive/archive.php?id=2650 Creating a Domain-Specific Modeling Language for Fullan CodeExisting GenerationFramework] fromWeb-article Methodsby &Juha-Pekka Tolvanen, 2006 Tools]
* Article [http://www.actifsource.com/_downloads/actifsource_code_generator_for_Eclipse_en.pdf Actifsource Code Generator for Eclipse]
* Article [http://www.acceleo.org/pages/using-acceleo-with-gmf/ Using Acceleo with GMF : Generating presentations from a MindMap DSM modeler]
* Article [http://www.methodsandtools.com/archive/archive.php?id=50 Creating a Domain-Specific Modeling Language for an Existing Framework]
* Article [http://www.devx.com/architect/Article/31351/0/page/1 Domain-specific Modeling: Making Code Generation Complete]
* Article [http://www.pocomatic.com/docs/whitepapers/dsm Domain Specific Modeling in IoC frameworks]
 
==External links==
* [http://www.actifsource.com actifsource] DSM Code Generator Tool for Eclipse. Supports any Programming Language.
* [http://www.dsmforum.org DSM Forum] Independent body made up of the leading DSM tool and solution providers
* [http://www.VisualModelingForum.com/DSM.htm Domain-Specific Modeling Resources] DSM resources, including modeling tools, publications, mailing lists, and blogs.
* [http://www.eclipse.org/emf/ Eclipse Modeling Framework] EMF provides partial support for DSM.
* [http://www.eclipse.org/gmf/ Eclipse Graphic Modeling Framework] GMF provides a set of open-source tools to build DSM editors.
* [http://www.sf.net/projects/gems Generic Eclipse Modeling System (GEMS)] is a tool for rapidly specifying graphical DSM languages using a visual metamodeling language and generating Eclipse plug-ins for editing the DSM.
* [http://www.obeo.fr/pages/obeo-designer/ Obeo Designer] is an Eclipse and GMF based tool to easily create DSM
* [http://www.metacase.com MetaCase] MetaEdit+ DSM environment.
* [http://nreco.googlecode.com NReco] DSM framework (.NET)
 
[[Category:Programming language topics]]
[[Category:Simulation programming languages]]
 
[[ja:ドメイン固有モデリング]]
[[zh:特定域建模]]