
_START_ARTICLE_
特定域建模
_START_SECTION_
概况
_START_PARAGRAPH_
特定域建模（DSM）往往还包括代码生成的想法：直接从DSM模型自动创建可执行源代码。摆脱手工创建和维护源代码，意味着DSM可以显著提高开发人员的工作效率。与手工编码相比，自动生成的代码比较可靠、生成的程序可减少缺陷从而提高质量。_NEWLINE_DSM不同于1980年代的CASE工具生成代码尝试或90年代的UML工具。两者的代码生成器和建模语言都是由工具供应商建立。工具供应商建立DSM语言和生成器是有可能的，并且在一个组织内出现DSM是比较正常的情况。一个或几个专家开发者创造了建模语言和生成器，其他开发者使用它们。_NEWLINE_由某一组织来建立建模语言和生成器，可以使它们严格符合其确切的域和需要。由于可以使用熟悉的术语和概念，也减少了开发者学习建模语言所需的时间。最后，由于只有一个组织的需求需要考虑，因此建模语言响应领域的变化是比较容易的。_NEWLINE_DSM语言通常可以涵盖特定领域的一系列抽象。例如，手机DSM语言可以让用户指定用户界面的高级抽象，以及存储数据的低级抽象，如电话号码或设置。同样，金融服务DSM语言可以允许用户指定客户的高级抽象，以及实现股票和债券交易算法的低级抽象。
_START_SECTION_
特定域建模专题
_START_PARAGRAPH_
定义DSM语言_NEWLINE_要定义一种语言，就需要一种描述定义的语言。模型语言通常被称为元模型，因此定义建模语言的语言就是一个元元模型。元模型可以分为两类：一类是衍生或自定义现有语言的，另一类是明确做为元元模型发展的。_NEWLINE_衍生元模型包括实体关系图表，正式语言，EBNF，本体语言，XML概要和MOF。这些语言的优点是对原语言的熟悉和标准化。_NEWLINE_特定域建模主张为特定任务建立一个新的语言，所以毫不奇怪出现新的语言-—元元模型。最广泛使用的这种语言就是OPRR，GOPRR，以及GOPPRR，致力于以最小的努力支持建模语言。_NEWLINE_支持DSM语言的工具_NEWLINE_许多通用建模语言已经有CASE工具形式的工具支持。DSM语言由于市场规模太小而往往缺少一个从零开始构建CASE工具的支持。相反，大多数支持DSM语言的工具是基于现有的DSM框架或通过DSM环境建立。_NEWLINE_DSM环境可以看作一种元建模工具，即用于定义建模工具或个案工具的建模工具。由此产生的工具，或在DSM环境工作，或作为一个单独的独立程序。通常情况下，与传统的CASE工具相比，DSM环境支持一个额外的抽象层。_NEWLINE_采用DSM环境可以大大降低获取支持DSM语言工具的成本，因为设计良好的DSM环境将自动生成从零开始费用高昂的部分程序，如特定域的编辑器，浏览器和构件。域专家只需要指定特定域的构造和规则，DSM环境将提供一个专为目标域的建模工具，。_NEWLINE_大多数现有的DSM都出现在DSM环境中，无论是商业的，如MetaEdit+，开源的，如GEMS，或学术的，如GME。随着DSM日益普及，DSM框架可能被加入现有的集成开发环境，如包含EMF和GMF的Eclipse建模项目（EMP），或者微软的软件工厂DSL工具。
_START_SECTION_
DSM和UML
_START_PARAGRAPH_
统一建模语言（UML）是一种软件密集型系统的通用建模语言，目的是支持大多数面向对象编程。因此，与DSM相比，UML可以以各种目的用于广泛的领域。UML提供的原始（primitives）是面向对象编程的这些，而特定域语言提供的原始，其语义被这一领域的所有从业人员所熟悉。例如，在汽车工程领域，软件模型表现防锁制动系统，或方向盘等属性。_NEWLINE_UML包括profile机制，可以约束，和在特定领域、平台被定制。UML profiles使用构造型，标记值和约束，以限制或扩大UML在特定领域的范围。一个特定领域定制UML的最著名例子是SysML—系统工程的域特定语言。