Atitit.研发管理--提升效率--软件开发方法DSM总结o99
Atitit.研发管理--提升效率--软件开发方法DSM总结o99
1. 什么是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所做的正如将代码编译成汇编语言的编译器所做的。
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
2. DSM使用的语言DSL
domain-specific languages (领域 建模语言)。
使用 XML 在应用组件中传递数据,使用 SQL 存取数据,使用 WSDL 来说明面向 Web 应用的组件的接口等等,但是它们中没有一个直接针对最终用户所面对的业务问题。
DSL 被设计为直接面向它所要解决的问题领域。在某种程度上,它能够代替编码,数据交换,配置等工作,我们常把这类语言称为建模语言
Anno+html>>>uml
3. 模型的优点
模型受欢迎是因为它能够很好地表述问题从而避免陷入技术细节中。当技术变得越来越复杂的时候,模型是提高生产力的必须手段。
模型的另一个好处是可以让程序 员和问题领域的专家使用同样的表述方法,这有助于团队成员间的沟通。
我们也可以把使用模型看作弥合技术和业务之间缝隙的方法。
4. DSM 跟与MDA区别
DSM规避了MDA发展中的难题,不苛求在PIM这个层面完全表达模型的细节。如果不限定领域的话,现有的模型描述语言以及约束描述如OCL,模型转换语言QVT等都不能满足一方面表达能力足够,描述精确,一方面又足够抽象,同时还能够简单易用的要求。这种情况下,DSM不失为一个好办法。
DSM与MDA主要区别是:MDA工具商自己定义代码产生器,这些代码产生器第一次看非常好,但是以后就变样走味了,难以适应需求的变化。.
DSM中,由你控制DSL和代码产生器,这些工具可以被调整以适应你自己的系统,作为开发者,你只需要定义DSL和实现自己的代码产生器,所有这一切都是由你来定义控制,正所谓定制性强
5. MDA的实现
系统业务逻辑和实现技术的分离,我们都认为它是支持 MDA 的,比如 VSTS
不管白猫黑猫,抓到老鼠就是好猫。对软件开发者以及各种涉众而言,只要实现了业务逻辑和底层技术平台的分离,能够保证当年辛苦辛苦建模的成果不随着技术平台的变化而像西西弗斯推石头上山那样一遍一遍不可避免地重来,它就是 MDA (其实不叫 MDA 也没啥 :D )。
图 3 基于 MDA 的开发过程
如图 3 所示,对应传统的需求-分析-设计-开发-测试-交付过程,基于 MDA 的开发过程由模型和模型之间的转换组成。最终的应用程序也可看做模型,它是对应最终实现平台(如机器码)的 PSM
微软的 VSTS 中,提供了定义领域特定语言 DSL ( Domain Specific Language ),也就是我们上面所说的领域元模型,的方便的环境,并支持从基于 DSL 的模型到程序代码的生成以及双向工程。微软是典型的背叛标准者,把 MDA 的思想全盘接受,换个名字,然后决然抛弃了 MDA 的核心标准 UML 和 MOF J 。同时,微软又是绝对的现实主义者,他从切实提高开发效率出发,提供至少在目前阶段更容易被开发者所接受的 MDA 开发支持。我认为,从这个意义上说, VSTS 是广义的 MDA 工具。
其他很多工具,由于商业宣传等因素,只要和模型转换、代码生成等挂上钩的,往往也声称自己是 MDA 工具。这些都可以理解,也没有必要较真。按照上文我们分析的,只要实现或者部分实现了业务逻辑和技术细节的分离,都可以说是广义的 MDA 工具,比如基于 Velocity 面向特定平台如 J2EE 的代码生成工具 XDoclet 、 Middlegen 等。
6. DSL案例
TSS上最近的文章“Improving Developer Productivity with Lightweight Domain Specific Modeling”演示了如何使用DSM实现轻量建模的过程,共分五步:
ArgoUML 能够用作定义DSL模型,开发人员能够设计DSL模型适合问题域。
将 ArgoUML模型转为Eclipse模型格式的Ecore.
使用Eclipse的插件JET模板定义代码如何产生。
Ecore模型输入到模板定义中,然后再定义Ecore模型中的模型元素和带有Merlin的JET模板之间映射。
最后结果是产生最终代码。
7. 参考
模型驱动架构(MDA,Model Driven Architecture)浅述 - - 博客频道 - CSDN.NET.htm
什么是DSM_百度知道.htm
DSM与MDA - 阿Ben的日志 - 网易博客.htm
[摘译] 面向领域建模 - 研究与实践:智慧城市、云计算、物联网和软件工程 - 博客频道 - CSDN.NET.htm
Atitit.研发管理--提升效率--软件开发方法DSM总结o99的更多相关文章
- Atitit.研发管理---TOGAF架构跟 (ADM开发方法)总结
Atitit.研发管理---TOGAF架构跟 (ADM开发方法)总结 1. TOGAF是在过去二十年间出现的企业架构框架 1 2. TOGAF内容结构 1 3. TOGAF 实现过程 2 4. 参考 ...
- atitit.研发管理--标准化流程总结---java开发环境与项目部署环境的搭建工具包总结
atitit.研发管理--标准化流程总结---java开发环境与项目部署环境的搭建工具包总结 1. ide系列(只开发环境需要,但部署环境也做好放上,很有用) 1 2. web服务器+sdk+网站程序 ...
- Atitit.研发管理软件公司的软资产列表指南
Atitit.研发管理软件公司的软资产列表指南 1. Isv模型下的软资产1 2. 实现层面implet1 3. 规范spec层1 4. 法则定律等val层的总结2 1. Isv模型下的软资产 Sof ...
- atitit 研发管理 要不要自己做引擎自己实现架构?.docx
atitit 研发管理 要不要自己做引擎自己实现架构?.docx 1.1. 目前已经有很多引擎了,还要自己做吗??1 1.2. 答案是自己做更好,利大于弊1 2. 为什么要自己做??1 2.1. 从历 ...
- atitit. 研发管理---如何根据自己的特挑选 产业、行业、职业、岗位与自己发展的关系
atitit. 研发管理---如何根据自己的特挑选 产业.行业.职业.岗位与自己发展的关系 1. 产业及分类 1 2. 二.行业 2 3. 职业概念- 3 4. 职业划分 3 5. 职业兴趣分类 4 ...
- Atitit.研发管理---api版本号策略与版本控制
Atitit.研发管理---api版本号策略与版本控制 1. 1.2.1版本概述1 2. 3主版本号策略2 3. 1PATCH版本策略2 3.1. 1.2.2.1次版本号策略2 表3-1 APR中支持 ...
- atitit.提高开发效率---mda 革命性的软件开发方法
atitit.提高开发效率---mda 革命性的软件开发方法 1. 软件开发方式的革命开发工具的抽象层次将再次提升 1 2. 应用框架和事实上现相分离 2 3. 眼下的问题模型和代码不同步 2 4. ...
- DevOps | 如何快速提升团队软件开发成熟度,快速提升研发效能?
今天一个小伙伴问我,如何「快速提升」一个团队的软件开发成熟度?我犯难了.我个人理解一个团队的软件开发成熟度涉及的东西很多,但最简单最直接的方法就是发钱涨工资,可是估计很多公司不愿意,那就只有扣了. 快 ...
- [ZZ]39条更好的软件开发方法
1.重构是程序员的主力技能. 2.工作日志能提升脑容量. 3.先用profiler调查,才有脸谈优化. 4.注释贵精不贵多.杜绝大姨妈般的“例注”.漫山遍野的碎碎念注释,实际就是背景噪音. 5.普通程 ...
随机推荐
- 介绍开源的.net通信框架NetworkComms框架 源码分析(十三)ThreadSafeStream
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- Origin9.1如何使用原始数据(Raw Data)绘制风向玫瑰图
核心提示:今天为大家简单介绍下如何使用原始数据绘制风向玫瑰图.本例以Origin 9.1进行演示.1.本例所用数据截图如下,列A为风向,列B为风速.2.选中两列数据,进入Plot下的Specializ ...
- MySQL里的wait_timeout
如果你没有修改过MySQL的配置,缺省情况下,wait_timeout的初始值是28800. wait_timeout过大有弊端,其体现就是MySQL里大量的SLEEP进程无法及时释放,拖累系统性能, ...
- shell脚本实现数据库自动备份和删除备份
为了安全起见,我们每天都需要备份数据库,但是备份数据库的时间往往是在凌晨左右,大家都休息,没人使用的时候,这样我们就需要linux系统实现自动备份,即定时自动执行脚本.但是我们又不能让所有的备份一直保 ...
- 关于 tomcat nio connector, servlet 3.0 async, spring mvc async 的关系
tomcat 的 org.apache.coyote.http11.Http11NioProtocol Connector 是一个使用 Java NIO 实现的异步 accept 请求的 connec ...
- IT公司笔试题(一)
1. 已知一个递归算法的算法复杂度计算公式为T(n) = T(n/2) + n,则T(n)的算法复杂度为多少? 解:O(n) T(n) = T(n/2) + n = T(n/4) + n/2 + n ...
- iOS.ReactNative-4-react-native-command-line-tool
Command line tool: react-native 1. react-native 是一个命令行工具 1.1 react-native简介 运行以下命令: ls -lt `which re ...
- Oracle 索引<七>
Oracle 索引 管理索引-原理介绍 介绍 索引是用于加速数据存取的数据对象.合理的使用索引可以大大降低 i/o 次数,从而提高数据访问性能.索引有很多种我们主要介绍常用的几种: 为什么添加了索 ...
- VB.NET上传附件代码
'附件添加 按钮 点击事件 吴翰哲 2013年7月23日 16:53:19 Protected Sub BtnAddFile_Click(ByVal sender As Object, ByVal e ...
- css3之转换
1.2D转换 2.3D转换 transform-style属性(设置三维/二维效果) 值: flat表示子元素不保留3D设置(默认) preserve-3d表示子元素保留3D设置 transform属 ...