Content deleted Content added
→Further reading: trimmed section |
Some more intro |
||
Line 1:
'''Domain-specific modeling (DSM)''' is a specific category of [[software engineering]] [[Methodology (software engineering)|methodology]] for designing and developing systems, such as [[computer software]]. It involves systematic use of a [[___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.
== 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 models. Being free from the manual creation and maintenance of source code means DSM 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.
DSM 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}} While it is possible for a tool vendor to create a DSM language and generators, it is more normal for DSM 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.
|