【51CTO译文】什么是模型驱动开发(MDD)?为什么使用MDD?本文将回答这些问题,告诉您在软件项目中使用模型驱动开发的十五个理由。
1、MDD开发更快速
相比传统软件开发,模型驱动开发(MDD)的软件项目中,应用程序被指定为一个更高层次的抽象模型。通过对模型的解释/执行或产生的代码,抽象模型会自动转化为可工作的软件应用。
在代码方面,因为模型具有更高的抽象层次,所以比相同实现的其他方式具有更小的代码量。换句话说,模型中的每个元素(符号或其它伪编程语言)可以代表多行代码;这样,我们可以在相同的时间内实现更多的功能。比如,对比Mendix和Java开发, MetaEdit+或其他MDD开发工具比传统开发方式快五倍的速度。
2、MDD使开发成本更低
MDD能够以更低的成本高效的实现项目。正如上文所说,MDD的开发速度更高,可以缩短软件产品的交付日期,提早上市时间。其次,使用MDD本身就可以用较低的成本完成开发;比如,可以用更少的工程师和非专业人士并保证软件高质量的完成。当然,能节约多少成本还取决于学习MDD的成本和开发或购买MDD开发工具的成本。
另外,使用MDD来改变正在开发和维护的项目也能够节约成本。在维护方面,阅读高抽象模型的应用程序行为更加容易(详细参考第六点),此外,我们还可以更快的使用高级语言添加或改进产品的功能。
3、MDD可以提高开发质量
在使用MDD的软件开发过程中,应用程序使用高级的抽象模型,而模型由一个引擎执行或被解释成代码;所以,该程序模块的质量将取决于执行引擎或解释器,而执行引擎或解释器一般是由一流软件公司和专家级程序员打造的。
此外,我们在项目中所使用的所有好的方法都可以包含在模型驱动开发(MDD)引擎中,并且在使用MDD工具开发软件时应用到你的项目中。如果你购买了一个MDD工具,你也同时购买了众多优秀的开发工具,因为MDD工具建立在过去所有软件项目的优秀技术总结。
4、MDD出错率更低
每个具有软件开发经验的人都知道,测试会花费开发人员大量的时间和精力。MDD可以确保我们专注于程序功能的测试,这意味这我们只需进行验收测试。技术细节的测试已经包含在MDD测试工具中。比如,对基础构造或安全问题的测试。
5、MDD的有效性验证
在使用MDD时,程序功能本身是低错误的,因为程序的有效性验证时在MDD的高层模型中完成的。我们知道,在使用传统的编程语言时,IDE会提供一些语法检查,甚至会进行静态代码的分析。但这并不能真正帮助我们避免程序的功能性错误。
当使用MDD方法时,对特定领域的有效性验证可以在系统设计时进行,由此产生的错误也可以控制在一定的范围内。比如对本文的一个静态文本验证。在使用Mendix模型环境中,我们可以使用实时的一致性检查以确保模型的一致性并保证其可以在运行时环境执行。
6、MDD使人在软件中的影响降低
在第二点中我们提到过使用MDD可以用更少的工程师和非专业人士并保证软件高质量的完成。当你不再需要技术专家来建立软件,你可以挑选更多人来为你工作。另外,与传统的开发方式相比,在使用MDD的项目中,如果有人中途加入,他可以更简单的理解软件应用的高级模型,因为他不必为搞懂程序的某些功能而阅读大量的源码。
7、MDD给行业专家更高多空间
MDD可以使行业专家专注于软件的行业特性,而技术专家将集中精力用于构建MDD的工具(详见第八点)。构建复杂的应用程序将不再是精英程序员的专利,在MDD项目中,将允许行业专家用他们自己的知识系统使用特定的符号构建一个模型,并使之融入高层的程序模型中。
8、MDD使高阶程序员只做他们该做的事
在使用MDD开发的项目中,开发人员很少进行重复性的工作。他们将有更多的机会在他们的工作中发挥创造性。比如,他们可以关注如何构建MDD工具;他们可以指导程序新手进行软件的初级开发或配合行业专家进行系统建模。高级程序将用更多的精力去解决应用程序中关键部分的技术攻关。比如,行业专家可以为图形用户接口、处理流程和商业规则创建模型。应用的集成部分(WebServices、API调用、数据库成等)对行业专家和开发新手存在困难,但这部分工作留给高级程序员去关注。高级程序员可以轻松而富有创造性的搞定这类项目中难度较大的部分。
9、MDD将消除业务和IT之间的隔阂
业务和IT的完美对接是在软件开发中经常被谈及的。MDD可以用以下方法使商业和IT之间走的更近:
◆行业专家或业务分析人员可以直接的参与开发过程(参考第七点)。软件的应用部分被定义为一个很高的抽象模型,这些模型将无限接近业务概念中的描述和定义。
◆因为MDD可以更快速的进行开发(参考第一点),软件的构建过程将更少的迭代,这将使软件更符最初的需求(软件交付日期缩短,从市场策划到最终用户的周期变短)。
◆业务和模型以及模型和IT系统之间的定义更加明确。比如,使用模型驱动的面向业务需求(SOA)的一个框架。
10、MDD使软件开发不再惧怕商业需求变更
软件开发界当前存在的一个问题是商业需求的经常变化,而且这种变化的速度远远高于软件系统本身所容纳的限度。这主要是目前企业的长期战略无法保持足够的时间就产生变化并导致核心IT业务经常变化。当前动态的商业环境不得使企业有足够的反应时间。
但MDD可以提供有效的解决方案,因为MDD可以使软件开发更加快速(参考第一点),它还可以是应用程序的改变更加容易(参考第二点和第六点)。如何商业需求和软件应用模型的关联足够明确,需求变化甚至可以自动传递到软件应用部分的变化(参考第九点)。
11、由技术产生的软件变化更少
技术的更新与变化越来越快。想想Java EE、 SOA/SOBA、WebServers、REST、OSGi和最近一年云计算带来的技术变革。MDD可以确保我们的应用程序模型在迁移到其他技术平台时不会发生变化;我们只需根据所变更的技术平台相应的改版代码编译器或解释器。更换解释器后,所有的程序模型将直接被编译成新平台的代码。
12、MDD使架构更加强壮
公司经常会定义架构标准,软件开发必须按照这些标准行事。但当所有代码都用手创建时如何检查或执行这些架构标准?当选择MDD进行项目开发时,应用程序会遵守既定的架构标准。你可以确保IT架构的标准化,因为这些架构标准在MDD工具中被定义。
一般,功能性的架构标准将指导功能设计。这些标准表现在你所采用的DSL(领域特定语言)。在MDD中,架构标准指导功能设计,并将在代码编译器和解释器中得到体现。
13、MDD使开发人员获得更多行业知识
MDD的另一个好处是你不只是建立一个软件,在高层的软件模型中,你将获得所建立软件的领域知识。在大多数软件项目中,领域需求的描述并不清晰,我们通常需要与行业专家或领域内不同的用户接触,用他们的专业知识来描述系统需求并建模。在MDD中,基于高度抽象的领域模型,我们可以通过行业专家对应用模型的描述获得深入了解具体应用领域的机会。
14、MDD可以提供最新的文档
当使用MDD进行项目开发时,我们无需再忍受不完整或不及时的文档,因为模型就是文档。当使用正确的抽象方法,模型的描述对行业专家和项目需求方具有很高的易读性(请参考第十三点)。
15、MDD使项目重心放在业务问题,而不是技术
就行前面提到的,MDD可以让我们更多的关注业务问题而不是如何将这些问题用技术实现。所以,不要再讨论我们该使用Java EE还是.NET,应该尽快开始MDD的学习和项目实践。
原文:15 reasons why you should start using Model Driven Development
链接:http://www.theenterprisearchitect.eu/archive/2009/11/25/15-reasons-why-you-should-start-using-model-driven-development