在读书笔记:Visual Studio DSL工具特定领域开发指南中介绍了特定领域开发的一些相关技术有:模型驱动开发 MDA、面向语言编程 LOP 、语言工作平台 Language Workbenches 、特定领域建模 DSM 、产生式编程 Generative Rrogramming 、意图软件 Intentional Software 、软件工厂 SOftware Factories。本篇通过书籍Domain-Specific Modeling来给大家介绍一下特定领域建模DSM,这也是OpenExpressApp采用的特定领域开发方法。如果你想提高软件开发的产量和质量,那么这本书你应该看看。
Domain-Specific Modeling (DSM)是软件开发中新的方法,它有希望能够大幅度的提高开发速度并简化软件开发。在过去十年中,早期采用DSM的人已经提高了五到十倍的速度,这本书是第一本介绍DSM的书籍,涉及领域建模、语言定义、代码生成和DSL工具等内容,它还向大家介绍了不同领域的示例 ,展示了在团队中如何使用DSM来改善软件开发。
这本书介绍了DSM是什么,为什么它有用,以及如何成功的生成和使用DSM方案来提高产量和质量。全书分为四部分:
以下我与大家分享一下DSM的主要内容。
有经验的开发人员都会有下面简单的实践,也可以说是三个基本的开发实践价值观:
DSM完成符合上面的实践,通过定制化的建模方式去应对问题领域,通过抽象和生成解决了产量和质量的问题。它需要有经验的业务和开发人员开发三种东西:可以在建模工具中基于特定领域的模型语言来对应用进行建模,然后DSM引擎会使用特定领域的代码生成器来生成框架代码或可执行的模型在领域框架上运行。
DSM是一种模型驱动开发方法,所以它的核心就是模型,从模型定义到建模到模型运行,这几步中模型一个分为四个级别:
书中介绍了不同行业的一些示例,读者可以有针对性看与自己类似行业的示例。更多示例见:http://www.metacase.com/cases/dsm_examples.html
DSM先期投入的成本比通用模型要多,实际上有时成本会更低,因为前期投入的人力会比通用目的建模的人少。但是,到了后期可以看出明显使用特定领域建模比通用目的建模所需要的成本要低很多。
基于产品框架演变出来的产品变数越多,则构建一个DSM方案所带来价值越大:很多管理软件都是基于变量来做的个性化需求,这其实是项目型产品,做的项目越多,投资回报率越大
在以前的基于组件开发技术中,有人开发组件,有人使用组件。在产品线开发中,一部分人开发所有项目通用的平台,一部分人使用这些资产进行开发。DSM开发组织机构与这些方法类似,也区分两种不同的角色:开发DSM解决方案的角色和使用DSM进行开发的角色。
在DSM中我们可以定义出以下几种角色:
DSM定义都是元模型的定义,包括语言、生成器以及领域框架的编写。DSM定义完成后,通过建模生成模型,生成代码,运行在领域框架上。由于不可能所有代码都完成生成,所有还需要开发人员编写一些代码,这部分代码有可能会独立存在,也有可能会并入领域框架。
以上几步其实也是技术推广的较为通用的步骤,都是小范围验证、项目试验、大范围推广再就是持续应用完善。OpenExpressApp目前处在第2步,系统的DSM方案支持才刚开始。
在以前我也介绍过软件工厂包括以下几部分:产品线工程、架构框架、模型驱动开发和指导。而DSM是一种模型驱动开发方法,它属于软件工程的一个模型驱动方法,这也是OpenExpressApp采用的主要方法
在软件产品线工程方法 - 四个主要方法原则中介绍过产品线工程的成本(规模化产品开发方法-产品线工程 .pdf),DSM作为模型驱动开发的一种方法支持产品线工程,所以产品线工程的经济图与上面介绍的DSM成本图也有所相似,都是必须有前期的投入成本,一般等做到三个项目后才可以见到回报:
DSM:使用MetaEdit+编写Family Tree Modeling Language
MetaModelEngine:元模型引擎开发思路
Domain-specific modelling language and code generator for developing repository-based Eclipse plug-ins
欢迎转载,转载请注明:转载自周金根 [ http://zhoujg.cnblogs.com/ ]