只有提高抽象层次,将软件直接面向建模专家或系统分析师,然后运用自动化代码生成技术,这样才能高质量大幅度快速开发出软件系统,在OOPSLA(领先的软件工程会议),大家认为DSM可能是一种解决方案。Bill Gates 和 Grady Booch也发表过同样观点。
DSM意味Domain-Specific Modeling领域定义建模,通过使用领域概念直接指定解决方案,DSM提高了超越程序代码之上的抽象层次,最终软件产品将从高层次的设计中直接自动产生,这样一个自动过程是可以实现的,因为 语言和代码产生器可以满足某一个公司或领域的需求,建模专家使用定义这个自动机器,而程序员只管使用即可。
实践经验已经证明:DSM比现有方式(包括基于UML的MDA)效率提高5-10倍,正如Booch说的那样: ”当建模概念可以直接映射到领域Domain,而不是计算机具体技术概念时,MDA的价值已经完成“,这句话的意思是: MDA已经证明我们可以直接从领域专家Domain观点直接建模,而不必拘束于具体的计算机技术概念,或者说:直接由有经验的系统分析师/建模专家分析设计进而生产出软件系统已经被MDA证明是可行的了,MDA的价值也就在于此,
Booch等人寄希望于使用DSM替代MDA。
由建模专家定义有关领域和组件的代码产生器,这样做的结果要好于大多数开发者手工开发。从MDA教训来看,大家认识到:不可能有“一种尺寸适合所有身材”的代码产生方案,不必象MDA那样疲于往来返工,DSM所做的正如将代码编译成汇编语言的编译器所做的。
首先,每个行业都有一些经验丰富行业专家,俗成系统分析师,他们对业务系统非常熟悉,但是不太了解软件技术,由这些专家定义一个包含域概念和规则的域定义语言(domain-specific language),并且定义这些域概念和规则映射到代码产生器的映射;实际上这些建模专家所要表达的就是:我们的需求应该看上去是怎样?我是怎么写代码的。
然后,其他开发者就使用建模语言根据前面定义的规则制作模型,最后,代码将自动产生,因为建模专家参与了定义代码生产器,这样最后产生的代码质量要高于正常程序员手工完成的代码质量。更重要的是,制作模型将比手工写代码更快。
DSM与MDA主要区别是:MDA工具商自己定义代码产生器,这些代码产生器第一次看非常好,但是以后就变样走味了,难以适应需求的变化。.
DSM中,由你控制DSL和代码产生器,这些工具可以被调整以适应你自己的系统,作为开发者,你只需要定义DSL和实现自己的代码产生器,所有这一切都是由你来定义控制,正所谓定制性强。
Dynamic Studio音乐模块(MOD)文件的后缀名为DSM
汽车销售管理系统
应用的是上海通用汽车经销商销售管理系统。