原文地址:http://www.jdon.com/mda/dsm.html(转载请表明原文地址)
当DSL(Domain-Specific Languages)诞生时,不少人比较激动,欢呼一个新的语言时代到临。其实,这不是计算机领域的新语言,而是一种新的建模语言。
DSL是一种专门供领域建模专家(也就是系统分析师)使用的语言,这些领域专家不同于程序高手,他们有一套自己认知世界和表达世界的思维和方式(如UML),因此,他们不感兴趣于软件设计细节,希望软件能够按照他们分析设计的结果去运行和执行就可以了。
其实,现如今在Java和.NET分治天下软件语言之时,不可能再有对和Java等同样层次的新语言的新需求, 因为大家都已经经历过优美动人的语言故事,新语言陷阱是每个人理性的认识。因此,聪明的专家发现,DSL特征不是发明新轮子,而是提供一种面向领域建模方便的工具语言,类似UML,但UML不能再胜任这样的工作(见UML和Java的阻抗),MDA有待进一步完善提高,建模专家需要的是DSM(Domain-Specific Modeling)。
提高开发生产效率
按照软件生产效率研究(Software Productivity Research), Java的平均生产率仅比BASIC高20%, C++不会好过Java,当今Java和.NET语言纷争带给程序员很多选择的痛苦,我们把更多注意力关注在对象、组件和框架(objects, components, and frameworks)等概念上,但是开发效率并没有比20年前有显著增长,从汇编语言到BASIC是400%的增长,在当前21世纪,我们应该怎样完成这样的跳跃式发展?
UML能否胜任?
象UML这样传统的建模语言并不能提高软件生产率,你需要在两处维护信息系统:语言代码和UML模型,为保持一致来回奔命,我们知道,java/C++/BASIC都将被编译器编译成汇编语言,可是有人看到过这样情形:开发者手工更改编译器并且试图使C++代码和汇编代码保持一致?可是这种现象会发生在UML模型和语言代码之间。
当然,UML有其优点:作为能够迅速被读懂的虚拟符号,UML世界现在吵吵嚷嚷,一半人发现UML并不能表达他们在建模时需要的一些概念,因此要求将入一些新的东西进入UML核心标准;可是还有另外一些人则认为UML太复杂,应该从UML核心元素中减去一些元素。当UML试图适合所有的人时,它就不能大力提高其抽象层次了。
这是目前基于UML的大多数MDA工具发生尴尬现象。MDA工具制造商发现它们仅仅能够比手工编码提高生产效率(study)35%,远没有我们希望的400%革命性跳跃。
什么是DSM?
只有提高抽象层次,将软件直接面向建模专家或系统分析师,然后运用自动化代码生成技术,这样才能高质量大幅度快速开发出软件系统,在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所做的正如将代码编译成汇编语言的编译器所做的。
DSM工作原理
首先,每个行业都有一些经验丰富行业专家,俗成系统分析师,他们对业务系统非常熟悉,但是不太了解软件技术,由这些专家定义一个包含域概念和规则的域定义语言(domain-specific language),并且定义这些域概念和规则映射到代码产生器的映射;实际上这些建模专家所要表达的就是:我们的需求应该看上去是怎样?我是怎么写代码的。
然后,其他开发者就使用建模语言根据前面定义的规则制作模型,最后,代码将自动产生,因为建模专家参与了定义代码生产器,这样最后产生的代码质量要高于正常程序员手工完成的代码质量。更重要的是,制作模型将比手工写代码更快。
与MDA区别
DSM与MDA主要区别是:MDA工具商自己定义代码产生器,这些代码产生器第一次看非常好,但是以后就变样走味了,难以适应需求的变化。.
DSM中,由你控制DSL和代码产生器,这些工具可以被调整以适应你自己的系统,作为开发者,你只需要定义DSL和实现自己的代码产生器,所有这一切都是由你来定义控制,正所谓定制性强。
DSL案例
TSS上最近的文章“Improving Developer Productivity with Lightweight Domain Specific Modeling”演示了如何使用DSM实现轻量建模的过程,共分五步:
ArgoUML 能够用作定义DSL模型,开发人员能够设计DSL模型适合问题域。
将 ArgoUML模型转为Eclipse模型格式的Ecore.
使用Eclipse的插件JET模板定义代码如何产生。
Ecore模型输入到模板定义中,然后再定义Ecore模型中的模型元素和带有Merlin的JET模板之间映射。
最后结果是产生最终代码。
参考文章:
Domain-Specific Modeling for Full Code Generation
Creating a Domain-Specific Modeling Language for an Existing Framework
UML和Java的阻抗
Improving Developer Productivity with Lightweight Domain Specific Modeling
Why DSM?
Ruby On Rails 与Jdon Framework架构比较
使用Jdon Framework进行模型驱动软件开发
原文地址:http://www.jdon.com/mda/dsm.html(转载请表明原文地址)
分享到:
相关推荐
【jdon-mvn-repo:jdon-mvn-repo】是一个与Java开发相关的资源库,主要服务于Maven构建系统。Maven是一个强大的项目管理和依赖管理工具,它通过使用XML格式的配置文件来管理项目的构建、报告和文档。在这个资源库中...
### Jdon框架使用详解 #### 一、Jdon框架概述 **Jdon框架**是一款针对J2EE(Java 2 Platform, Enterprise Edition)环境下的快速开发框架,旨在提高开发效率和降低开发难度。该框架由板桥里人(banq)创建并维护,自...
JF诞生于2004年底,作为中国第一个开源框架,创新地综合了当时两项新技术思想:领域建模(简称DDD: Domain-Driven Design)和Ioc(DI:Dependency Injection)及AOP构件管理;不仅如此,而且克服了同时期这两类框架的...
- JDon框架: 一种用于快速构建企业级Java应用的开源框架。 - 技术博客: 分享企业级Java应用的开发心得和技术文章。 - 开源项目: 汇集了一系列Java相关的开源项目。 ### 7. Groovy - **网址**: ...
【JBoss集群方案详解】 JBoss作为一款开源的Java企业级应用服务器,提供了对J2EE规范的强大支持,包括对EJB(Enterprise JavaBeans)的实现。在分布式计算环境中,JBoss集群方案能够帮助开发者构建高可用性、可伸缩...
- Jive 版本:Jdon版 - 数据库:SQL Server 2000 #### 准备工作 首先,确保已经安装了 JDK 1.4.1 和 JBoss 4.0.6。使用的 JBoss 版本为 jboss-3.0.6_tomcat-4.1.18.zip,其配置较为简单。 接下来,下载 Jive 软件...
《深入剖析DDD jDon源码:构建十年稳定架构的关键洞察》 DDD(领域驱动设计)是一种先进的软件开发方法,强调以业务领域为中心进行设计,通过将复杂的业务逻辑转化为清晰的模型来驱动系统的构建。jDon框架是基于DDD...
《Jdon完整源码及设计文档解析》 Jdon是一个基于Java语言的开源项目,它以其独特的设计思想和丰富的功能特性,在开源社区中备受关注。本文将深入探讨Jdon项目的源码结构、设计理念以及相关的设计文档,帮助读者理解...
- 文档资源: http://www.jdon.com/idea.html。 #### 三、Java 应用程序的开发与部署 **3.1 Java 应用程序** - **定义**: Java 应用程序是指可以在任何支持 Java 的平台上运行的程序。 - **开发环境**: 可以使用...
【标题】"jdon+structs+hibnate示例" 涉及到的是一个融合了三个核心技术的Java Web开发实例。jdon是一个国内开源的框架,它借鉴了Spring框架的设计理念,但针对中国的开发环境和需求进行了优化。在这个示例中,jdon...
### Jive(Jdon)安装详细指导 #### 一、前言 Jive是一款知名的开源社区软件,被广泛应用于企业内部沟通平台以及外部客户互动平台。本文档将详细讲解如何在Linux环境下安装配置Jive,包括数据库设置、Tomcat服务器...
Jive是一个开放源码的Java论坛软件,它允许在网站上进行线程化的讨论。它提供了性能优秀的用户定义的JSP文件(用Jive的外壳)来完全改变论坛的外观、形象和功能。并提供了一个可植入的API,这些API提供诸如及时翻译、...
【标题】"jdon_struts_hibernate_samples" 是一个整合了Jdon、Struts和Hibernate技术的示例项目。这个项目展示了如何在Java Web开发中有效地利用这三个框架进行业务逻辑处理、用户界面展示以及持久层操作。 【描述...
本Jive(Jdon版)可在Jbuilder 7/8直接打开,请失效Jbuilder的Jsp编译功能。 建议你用Jbuilder7打开后,编辑相应设置(注意,必须是JDK1.4以上版本) 本软件在linux+jdk1.4+tomcat 4以上环境运行正常,由于采取ISO...
本Jive(Jdon版)可在Jbuilder 7直接打开。 建议你用Jbuilder7打开后,编辑相应设置(JDK1.4) 本软件在linux+jdk1.4+tomcat 4以上环境运行正常,中文显示正常。 Jive是学习java设计模式的最好教材 Jive论坛的优点 ...
JiveJdon核心领域模型图如下,建模过程来自 实战DDD(Evans DDD:Domain-Driven Design领域驱动设计) : 新架构 JiveJdon 业务层采取了组件动态设计的面向构件架构,能够简单方便拓展新功能,不再发生牵一动百的错误...
《Jive Jdon Jbuilder7:深度探索Java设计模式与应用开发》 在软件开发领域,Jive Jdon Jbuilder7是一款备受瞩目的集成开发环境(IDE),它为Java开发者提供了强大的工具支持,特别是对于设计模式的应用和项目构建...
Struts、JDon和Hibernate是三个在Java EE(以前称为J2EE)开发中非常重要的框架,它们分别专注于Web层、领域驱动设计和持久化管理。让我们深入了解一下这三个框架及其结合使用的方式。 **Struts** Struts是一个开源...
说明:每个应用系统中存在大量重复的CRUD开发流程,通过本框架可快速完成这些基本基础工作量,将精力集中在特殊功能设计上。 CRUD快速开发主要简化了表现层的流程,将其固化,或者是模板化,以配置替代代码编制,...