精华内容
下载资源
问答
  • 模型驱动开发MDD

    2019-01-08 04:59:01
    模型驱动设计承诺带来开发时间的缩短、bug的减少以及更好的可维护性。这是黄粱美梦吗?或许Matthew Overington会说不是。 软件开发行业花了数年功夫经历了大规模成本削减的历程,并开始新的进展。对软件开发过程而...

    模型驱动设计承诺带来开发时间的缩短、bug的减少以及更好的可维护性。这是黄粱美梦吗?或许Matthew Overington会说不是。

    软件开发行业花了数年功夫经历了大规模成本削减的历程,并开始新的进展。对软件开发过程而言,我们需要更好的预测性、透明性和可信性。

    建模并不是一个新的名词。它是软件设计和开发中的重要一环,但企业目前正在进行更聪明和野心勃勃的计划,应用模型来解决很多多年的老问题。

    其中一个问题就是当前的编码方法对建模的依赖-只有当模型经常更新维护时它才是有用的。过时的模型实质上是无用的,实际上有时候还是反生产力的,导致bug……。你觉得模型中应该有的功能在实际代码中没有。而现在的趋势是希望可以得到这么一个框架,允许模型通过各种方式进行转换和应用,允许开发者从这些资源(译注:指这些模型)中得到更多用途。

    Borland APAC产品线的主管Malcolm Groves认为模型驱动开发(MDD, Model Driven Development)是继90年代的RAD和OO之后下一个革新。尽管RAD工具允许开发者快速地开发实际可用的代码,但其中很多生成的代码却很垃圾。也有人认为RAD的困扰在于效率的不够,因此开始使用UML模型,并手工编码来生成结构良好的代码。这样确实可以得到不错的结果,但却损失了速度。MDD承诺搭起这两者之间的桥梁,允许开发人员在快速同时便于维护的基础上开发高质量的代码。

    在RAD中,通常是架构师驱动开发的进行,数据库的结构在很大程度上决定了应用的形式。而使用MDD,开发者可以方便地在数据库和代码之间来回转换。使用今年底将发布的ECO III, Borland将提供MDD for C#, 和MDD for Delphi .NET。

    Borland正在努力用MDD来取代RAD,Grove认为对建模的更多依赖将是现实的途径。开发人员可以在更高抽象级别上工作而无需担心底层细节。模型驱动架构MDA提升了抽象层次,使开发人员可以关注于业务逻辑。

    继在定义UML中扮演了非常重要的角色之后,Rational对MDD也持相同的观点。Rational在1990年左右开始提供Rational Rose和后来的Rational XDE。Eclipse项目目前已经开放源代码,这也再次证明了Rational在该领域的领先地位。

    根据IBM公司Rational分部的售前架构师Davyd Norris的说法,代码生成方面更多图形化工具的开发是很自然的进化方向。“MDD是关于向抽象级别的转换,它允许一个项目中具有不同经验和想法的不同的人在一起工作,而不管他们更适应于哪个抽象层次的工作”。

    Norris认为企业架构师需要使用UML的敏捷方法,“企业们正在变得更加敏捷。更多的应用正基于高级别的模型进行开发。”

    对Norris而言,从底层的代码到高层的模型这些不同的抽象层次都是模型的一部分。他对代码就是模型的说法非常不屑,企业架构中有很多东西是无法简单用代码来表示的。通过转换工具可以实现不同抽象级别之间的切换,但它们都是对同一个问题价值相同的不同片断。

    微软的姿态稍有不同。OMG官方定义MDA是使用UML开发应用的方式,而微软却不打算用UML来进行模型驱动开发,而取而代之的是DSL(领域特定语言,domain specific languages),它被设计来支持特定的任务。微软认为UML用来表达设计的大概意图是有效的,但用来作为源语言却不合适,因为UML在addressability、可扩展性和一致性上都存在不足。

    Jack Greenfield是微软企业架构和工具部门的架构师,根据他的说法,Redmond方法将模型作为“软件开发的源工件,这些工具可以被自动地处理,比如进行验证、分析、跟踪和代码生成等”。这些模型的用途并不是作为文档。

    动力(Momentum )

    尽管先锋部队是Rational和Borland,还有大量小一些的公司有着同样的热情,并给出了不少强大的工具。

    以Embarcadero公司为例。他们提供了模型驱动的数据管理解决方案,其中可以创建模型并且该模型被整个开发链中的所有人所理解。该公司的arsenal中包含了为一个分析数据库应用所提供的模型驱动应用(ER/Studio),一个可视化建模和数据流设计工具(DT/Studio),以及一个模型驱动的分析、设计和开发环境(Describe)。这三个部分之间互相交互,可以将ER/Studio中得到的数据模型导入Describe,并构建完整的应用模型。也就是,可以从模型直接生成代码。

    Embarcadero公司的APAC地区主管Philip Ball指出,当前的趋势是解决多年的开发老问题-“意大利面条问题-什么东西都纠缠在一起。你可以改动一处代码,但你不知道你影响了多少其它的地方。”

    他认为模型的使用有助于提高开发过程的透明性,这将缩短开发时间,并降低bug带来的冲击。

    Ball认为,MDD是将推动开发中对元数据的更多依赖。“存在存储元数据的需要,这样开发人员可以得到一个更全局的视图,看到自己负责的部分在整个软件生命周期中的位置。”

    随着近年来数据的大量增长,Ball感觉这个问题越来越成为如何来控制的数据的问题;如何保持一个全局的视图同时可以有效地使用。根据Ball的估计,知识工人(knowledge workers)在开始工作之前需要花费50%的时间来理解他们面前的数据。“如果有模型和元数据,他们可以看到这些数据在更大视图中的位置,这样就可以削减这部分时间开支。”

    Rational的Davyd Norris同样强调在一个软件生命周期中全局性的好处。软件开发并不终止于测试。部署、维护和文档化也是同样重要,并往往会导致项目的成本超支。Rational致力于在整个生命周期中使用模型。这是一个很有野心的项目,但Rational已经为此努力多年了。

    MDD的流行甚至MDA为软件开发中各个环节上的人提供了好处,从DB设计者到架构师、底层开发人员。它允许项目主管可以更透明地监控开发;允许开发人员可以更快地回滚代码的变动;允许DB设计者在代码生成中担任更重要的角色;开发人员可以架起纯技术和业务层之间的桥梁。Philip Ball指出,“建模和开发之间的界限开始模糊。”

    现实世界

    底层开发人员也开始追随这个趋势了。Granite Solutions的头头Dick Walker是一位Delphi开发者,在过去15个月中他应用MDD加速了Ski Hire Shop的开发速度。3层WinForms业务应用处理预定、打包、付费等工作。他使用.NET remoting来支持客户端和服务端的通信,并基于Borland的ECO工具构建了应用。Walker看到了MDD在未来开发中将担当的重要角色。他认为构建应用的经验在于“识别系统中的对象和他们之间的关系”,根据Walker的理解,书写的定义和方法的过程中常常会为代码带来错误,因此这个过程的自动化将缩短开发的时间。

    当然不光有鲜花,Walker在使用C#Builder 和ECO的初期也遇到了很多问题,ECO现在还有很多限制。他认为这是“从RAD和DB对象开发到MDD应用开发的范式转换”。现在他已经度过了这个学习阶段,而且将不再回到过去的开发方式上去了。“MDD不是玩具,你可以用它来开发真正的应用程序。”他认为随着工具开发商的努力,只有天空才是限制(译注:MDD的限制会越来越少)。

    魔术棒?

    上面的这些往往使人们不禁认为MDD就是今天各种编程问题的答案了。不幸的是,现在我们还远远没有到可以有一个一劳永逸的方案能够给牙齿增白、防止脱发的时候。我们也不会有什么可以替代有经验的开发人员来书写好的代码。这些建模工具的发展只是辅助好代码的书写,而不是替代。

    MDD的扩展使用可以帮助开发人员报告需求、在合并和收购时集成各种应用,当项目结束的时候生成文档。MDD最本质的一点就是帮助您提升资产的重用。

    期望用UML来定义一个应用,然后按下一个魔术按钮,得到最终的应用,这是不现实的。开发人员还是需要挽起袖子,老老实实地编代码,这样才能得到优美而高效的应用。Philip Ball的总结很棒,他认为MDD是“not automating good design methodology”。MDD只是将一个开发项目中涉及的各种人都团结在一起,允许大家在各自擅长的抽象层次上进行工作。

    展开全文
  • MDD 模型驱动

    2009-12-16 17:04:00
    MDD, Model-Driven Developement, 由模型驱动的开发方式,简单来说就是以建立模型为主要手段的开发。它可应用在软件、系统和数据开发的全过程。 MDD使用开发人员把更多的精力放在产品的模型和结构上,而不是程序语言...

    MDD, Model-Driven Developement, 由模型驱动的开发方式,简单来说就是以建立模型为主要手段的开发。它可应用在软件、系统和数据开发的全过程。

    MDD使用开发人员把更多的精力放在产品的模型和结构上,而不是程序语言和算法实现。

    UML是MDD概念的一个很好的实现。

    Model-Driven Development (MDD)已经被OMG组织注册为商标。

    转载于:https://www.cnblogs.com/SissyNong/archive/2009/12/16/1625789.html

    展开全文
  • 在本文中,在业界的其他相关活动的上下文中了解模型驱动开发(model-drivendevelopment,MDD)。比较软件工厂、领域特定语言和MDD方法。探索如何将开发构件可视化为模型,以及使用可执行的统一建模语言...
  •  模型驱动开发Model Driven Development (MDD) 是一种以模型作为主要工件的高级别抽象的开发方法,模型在工具的支持下,被作为核心资产被转换成代码或者可运行配置。现在软件业存在多种MDD开发方法,本篇将对MDD...

    本文已挪至  http://www.zhoujingen.cn/blog/2749.html

     

     

      模型驱动开发Model Driven Development  (MDD) 是一种以模型作为主要工件的高级别抽象的开发方法,模型在工具的支持下,被作为核心资产被转换成代码或者可运行配置。现在软件业存在多种MDD开发方法,本篇将对MDD进行概要介绍。

    定义

      在过去多年,软件开发面临了多个挑战,新的需求和存在系统不断增长,系统也变得越来越复杂,以至于我们很难及时的构建它们。为了解决这些问题,就出现了很多新的方法,其中最突出的一个就是模型驱动开发。 MDD代表了一套理论和工业化软件开发的方法框架,在软件开发全生命周期中系统的的使用模型作为主要工件,它主要为了解决软件的两个根本危机:复杂性和变更能力 。

      

      使用模型作为文档和规范是有价值的,但是它需要严格的管理方式来确保模型是持续更新的。在实际工作中,我们迫于时间压力经常会出现于实现不一致的模型,这对开发和项目其实是不利的。而MDD的基本思想是让开发中心从编程转移到高级别抽象中去,通过模型转成代码或其他工件来驱动部分或全部的自动化开发。

    模型是一种抽象的语言

    多种模型

       

       模型是一种建模语言,它需要我们自己根据业务和技术需要去设计它,在架构、分析、设计、实现等不同阶段都会存在多种模型, 如企业架构模型、技术架构模型、领域模型、UI模型、数据库建模、业务规则模型、系统部署模型、测试模型等。

      建模的过程是由不同阶段的成员来完成,有些模型之间有引用关系,应用软件通过所有人的建模工作而构建起来。

    三个阶段

    1. 建立模型


    2. 建模



    3. 模型转换
        

      模型和建模这两部分内容已经存在很多方法,它们在现在软件开发过程中已经处于重要位置,但是在需要哪些表达模型以及如何使用这些模型存在着差异。传统的模型只是一个设计蓝图,而MDD必须满足额外的要求,这些模型必须是可读的,也就是说必须存在第三个阶段,也就是模型转换:model  to  model  (M2M)  和 model  to  code  (M2C)

    优势

    • 提高产能:开发快、降低成本、提高质量
    • 可维护性:高级别模型与技术分类,技术架构的改变意味着只是模型的一种新的转换
    • 一致性:手工编码和架构决策容易出错,MDD可以确保生成的工件是一致的
    • 可重用性:模型、转换和架构都是可以重用的,由于架构和技术问题已经被解决,所以开发新功能的风险也低
    • 改善涉众沟通:模型忽略系统逻辑行为的底层实现,而直接展现问题域,这样可以保证和涉众使用同一种语言进行沟通
    • 改善设计沟通:模型与系统是匹配及时更新的,所以可以通过模型来改善系统设计的讨论和沟通
    • 捕获领域知识:可以加强领域专家对系统的直接影响,通过模型还可以帮助组织进行知识管理
    • Business-IT对齐:关注问题域,关联技术域,一种业务和IT对齐的方法
    • 模型作为一种长期的核心资产:高级别的模型作为核心资产管理起来,只有在业务需求变更时才会进行更改
    • 推迟技术决策:应用开发在早期关注业务逻辑问题,对于技术选择可以推迟到后期
    • 提供及时的文档:通过模型可以生成很多同步的文档,利于与不同涉众进行交流

    经济模型

    MDD方法相关

    一个参考的模型驱动DSL框架

     Eclipse Modeling Project

     

    模型驱动开发(MDD)的一些参考资料

    MDE - Model Driven Engineering - reference guide

     

    参考:Model Driven Development – Future or Failure of Software Development

     

    推荐:你可能需要的在线电子书

     

    欢迎转载,转载请注明:转载自周金根 [ http://zhoujg.cnblogs.com/ ]

    转载于:https://www.cnblogs.com/zhoujg/archive/2010/09/20/1831042.html

    展开全文
  • 什么是模型驱动开发(MDD)?为什么使用MDD?本文将回答这些问题,告诉您在软件项目中使用模型驱动开发的十五个理由。 AD: 【51CTO译文】什么是模型驱动开发(MDD)?为什么使用MDD?本文将回答...

    什么是模型驱动开发(MDD)?为什么使用MDD?本文将回答这些问题,告诉您在软件项目中使用模型驱动开发的十五个理由。

    AD:

    【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、RESTOSGi和最近一年云计算带来的技术变革。MDD可以确保我们的应用程序模型在迁移到其他技术平台时不会发生变化;我们只需根据所变更的技术平台相应的改版代码编译器或解释器。更换解释器后,所有的程序模型将直接被编译成新平台的代码。

    12、MDD使架构更加强壮

    公司经常会定义架构标准,软件开发必须按照这些标准行事。但当所有代码都用手创建时如何检查或执行这些架构标准?当选择MDD进行项目开发时,应用程序会遵守既定的架构标准。你可以确保IT架构的标准化,因为这些架构标准在MDD工具中被定义。

    一般,功能性的架构标准将指导功能设计。这些标准表现在你所采用的DSL(领域特定语言)。在MDD中,架构标准指导功能设计,并将在代码编译器和解释器中得到体现。

    13、MDD使开发人员获得更多行业知识

    MDD的另一个好处是你不只是建立一个软件,在高层的软件模型中,你将获得所建立软件的领域知识。在大多数软件项目中,领域需求的描述并不清晰,我们通常需要与行业专家或领域内不同的用户接触,用他们的专业知识来描述系统需求并建模。在MDD中,基于高度抽象的领域模型,我们可以通过行业专家对应用模型的描述获得深入了解具体应用领域的机会。

    14、MDD可以提供最新的文档

    当使用MDD进行项目开发时,我们无需再忍受不完整或不及时的文档,因为模型就是文档。当使用正确的抽象方法,模型的描述对行业专家和项目需求方具有很高的易读性(请参考第十三点)。

    15、MDD使项目重心放在业务问题,而不是技术

    就行前面提到的,MDD可以让我们更多的关注业务问题而不是如何将这些问题用技术实现。所以,不要再讨论我们该使用Java EE还是.NET,应该尽快开始MDD的学习和项目实践。

    展开全文
  • 模型驱动开发(MDD)介绍

    千次阅读 2010-11-15 10:18:00
    <br /> 模型驱动开发Model Driven Development (MDD) 是一种以模型作为主要工件的高级别抽象的开发方法,模型在工具的支持下,被作为核心资产被转换成代码或者可运行配置。现在软件业存在多种MDD开发方法,...
  • 本文解释了影响现代IT开发的业务推动力,并且向您介绍了模型驱动开发(model-drivendevelopment,MDD)。MDD是主流软件开发实践的提高,并且让您的IT系统能够对业务推动力更加敏感。了解MDD方法以及您如何可以将其...
  • MDSF:模型驱动开发(MDD)介绍 | 一群共同享有幸福生活的成长伙伴 MDSF:模型驱动开发(MDD)介绍 | 一群共同享有幸福生活的成长伙伴 posted ...
  • 目前公司所从事的项目是采用建模方式实现WiMAX的呼叫处理的,应当说是一个典型的MDD...我所在的公司采用MDD开发方法,所有的业务代码都是从UML模型生成,就目前公司对于MDD开发实践的经验来看,MDD还有很长的路...
  • 基于模型开发可以很好的提高开发效率和质量,最近也看到越来越多的这方面的研究和实践。以下推荐一些值得参考的软件和书籍。 书籍: Apress.Practical.Software.Factories.in.dot.NET 介绍软件工厂的概念和...
  • 模型驱动设计(MDD)之灵活设计 板桥里人 http://www.jdon.com 2006/8/12更新  灵活设计可以使我们随着项目开发的进行,感到速度越来越快,而不是越来越慢,甚至 停滞不前。灵活设计是对领域建模的补充,当我们从领域...
  • 提出问题 「领域驱动设计」之于微服务,好比麦当劳之于汉堡(个人更喜欢肯德基,汉堡要大些,麦当劳的汉堡,想吃顿饱饭,请先给我上6个
  • 在本文中,在业界的其他相关活动的上下文中了解模型驱动开发(model-driven development,MDD)。比较软件工厂、领域特定语言和 MDD 方法。探索如何将开发构件可视化为模型,以及使用可执行的统一建模语言(Unified ...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 217
精华内容 86
关键字:

模型驱动mdd