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.普通程 ...
随机推荐
- Codeforces Round #243
CF 243 DIV1 & DIV2 DIV2的A和B都太水,直接暴力搞就可以的. DIV2A /* ******************************************** ...
- Linux中安装和使用rz、sz命令
安装命令: yum install lrzsz 从服务端发送文件到客户端: sz filename 从客户端上传文件到服务端: rz在弹出的框中选择文件,上传文件的用户和组是当前登录的用户 Secur ...
- POJ2762 UV
题意:n个山洞,对于每两个山洞s,e,都满足s可以到达e或者e可以到达s,则输出Yes,否则输出No. ---------------------------------------- 第一个缩点的题 ...
- Linux系统下 解决Qt5工程打不开的方法
一.问题现象 打开Qt工程的时候,控制台报错:Could not find qmake configuration file default. 二.问题原因 我碰到这种问题的原因是我的Linux系统装 ...
- [整理][LaTex]小技巧之——首行缩进
0. 简介 在LaTex编辑时,有时会遇到这样一个有关于首行缩进的问题.在汉语环境的编辑下,习惯上每段会进行一个两个字的缩进.但是在默认编辑模式下,一个章节下的首段是没有首行缩进的,本文的目的主要是解 ...
- 技术英文单词贴--P
P pagination 分页,页码 parse 解析,从语法上描述或分析 partial 局部的 pattern 模式 populate 填充,居住于,构成人口 precedence 优先 pref ...
- Oracle 索引<七>
Oracle 索引 管理索引-原理介绍 介绍 索引是用于加速数据存取的数据对象.合理的使用索引可以大大降低 i/o 次数,从而提高数据访问性能.索引有很多种我们主要介绍常用的几种: 为什么添加了索 ...
- CGRectXXX笔记
CoreGraphics中有关CGRect相关函数笔记 1.CGRectInset //该结构体的应用是以原rect为中心,再参考dx,dy,进行缩放或者放大. CGRect rect = CGRec ...
- 状态机学习(三)解析JSON
来自 从零开始的 JSON 库教程 从零开始教授如何写一个符合标准的 C 语言 JSON 库 作者 Milo Yip https://zhuanlan.zhihu.com/json-tutorial ...
- 去除inline-block之间的间隙
在使用display: inline-block;时,这些inline-block之间会有间隙,根据无双 - <去除inline-block元素间的空隙>的说法,这个间隙是4px或者8px ...