特定域建模

特定域建模（Domain-specific modeling，DSM），是一种设计和开发系统（如电脑软件）的软件工程方法学。它系统使用图形化特定域语言（DSL），表现系统的各个方面。DSM的语言倾向于支持比更高级别的抽象，因此需要较少的effort和更少的底层细节来描述特定系统。

概况 

特定域建模（DSM）往往还包括代码生成的想法：直接从DSM模型自动创建可执行源代码。摆脱手工创建和维护源代码，意味着DSM可以显著提高开发人员的工作效率。与手工编码相比，自动生成的代码比较可靠、生成的程序可减少缺陷从而提高质量。

DSM不同于1980年代的CASE工具生成代码尝试或90年代的UML工具。两者的代码生成器和建模语言都是由工具供应商建立。工具供应商建立DSM语言和生成器是有可能的，并且在一个组织内出现DSM是比较正常的情况。一个或几个专家开发者创造了建模语言和生成器，其他开发者使用它们。

由某一组织来建立建模语言和生成器，可以使它们严格符合其确切的域和需要。由于可以使用熟悉的术语和概念，也减少了开发者学习建模语言所需的时间。最后，由于只有一个组织的需求需要考虑，因此建模语言响应领域的变化是比较容易的。

DSM语言通常可以涵盖特定领域的一系列抽象。例如，手机DSM语言可以让用户指定用户界面的高级抽象，以及存储数据的低级抽象，如电话号码或设置。同样，金融服务DSM语言可以允许用户指定客户的高级抽象，以及实现股票和债券交易算法的低级抽象。

特定域建模专题

定义DSM语言

要定义一种语言，就需要一种描述定义的语言。模型语言通常被称为元模型，因此定义建模语言的语言就是一个元元模型。元模型可以分为两类：一类是衍生或自定义现有语言的，另一类是明确做为元元模型发展的。

衍生元模型包括实体关系图表，正式语言，EBNF，本体语言，XML概要和MOF。这些语言的优点是对原语言的熟悉和标准化。

特定域建模主张为特定任务建立一个新的语言，所以毫不奇怪出现新的语言-—元元模型。最广泛使用的这种语言就是OPRR，GOPRR，以及GOPPRR，致力于以最小的努力支持建模语言。

支持DSM语言的工具

许多通用建模语言已经有CASE工具形式的工具支持。DSM语言由于市场规模太小而往往缺少一个从零开始构建CASE工具的支持。相反，大多数支持DSM语言的工具是基于现有的DSM框架或通过DSM环境建立。

DSM环境可以看作一种元建模工具，即用于定义建模工具或个案工具的建模工具。由此产生的工具，或在DSM环境工作，或作为一个单独的独立程序。通常情况下，与传统的CASE工具相比，DSM环境支持一个额外的抽象层。

采用DSM环境可以大大降低获取支持DSM语言工具的成本，因为设计良好的DSM环境将自动生成从零开始费用高昂的部分程序，如特定域的编辑器，浏览器和构件。域专家只需要指定特定域的构造和规则，DSM环境将提供一个专为目标域的建模工具，。

大多数现有的DSM都出现在DSM环境中，无论是商业的，如MetaEdit+，开源的，如GEMS，或学术的，如GME。随着DSM日益普及，DSM框架可能被加入现有的集成开发环境，如包含EMF和GMF的Eclipse建模项目（EMP），或者微软的软件工厂DSL工具。

DSM和UML 

统一建模语言（UML）是一种软件密集型系统的通用建模语言，目的是支持大多数面向对象编程。因此，与DSM相比，UML可以以各种目的用于广泛的领域。UML提供的原始（primitives）是面向对象编程的这些，而特定域语言提供的原始，其语义被这一领域的所有从业人员所熟悉。例如，在汽车工程领域，软件模型表现防锁制动系统，或方向盘等属性。

UML包括profile机制，可以约束，和在特定领域、平台被定制。UML profiles使用构造型，标记值和约束，以限制或扩大UML在特定领域的范围。一个特定领域定制UML的最著名例子是SysML—系统工程的域特定语言。

软件工程
模拟器编程语言