Content deleted Content added
RandFreeman (talk | contribs) Importing Wikidata short description: "Software engineering methodology" |
|||
(48 intermediate revisions by 37 users not shown) | |||
Line 1:
{{Short description|Software engineering methodology}}
'''Domain-specific modeling''' ('''DSM
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
Having the modeling language and generator built by the organization that will use them allows a tight fit with their exact ___domain and
== 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.▼
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 [[
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
=== 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.[
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.▼
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.
▲A
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
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 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.▼
▲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
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>
* [[Computer-aided software engineering]] ▼
* [[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}}
==
*
*
*
*
▲* Article [http://www.methodsandtools.com/archive/archive.php?id=50 Creating a Domain-Specific Modeling Language for an Existing Framework]
▲* Article [http://www.pocomatic.com/docs/whitepapers/dsm Domain Specific Modeling in IoC frameworks]
[[Category:Programming language topics]]
[[Category:Simulation programming languages]]
|