第三章 模型驱动开发概述

上传人:笛音 文档编号:51471426 上传时间:2018-08-14 格式:PPT 页数:55 大小:3.19MB
返回 下载 相关 举报
第三章 模型驱动开发概述_第1页
第1页 / 共55页
第三章 模型驱动开发概述_第2页
第2页 / 共55页
第三章 模型驱动开发概述_第3页
第3页 / 共55页
第三章 模型驱动开发概述_第4页
第4页 / 共55页
第三章 模型驱动开发概述_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《第三章 模型驱动开发概述》由会员分享,可在线阅读,更多相关《第三章 模型驱动开发概述(55页珍藏版)》请在金锄头文库上搜索。

1、基于模型驱动的安全系统开发基于模型驱动的安全系统开发第三章:模型驱动开发概述第三章:模型驱动开发概述主讲:徐田华主讲:徐田华mail: mail: 内容o模型及其意义o模型驱动的开发及其意图o模型驱动开发的定义和关键问题o模型驱动开发授课内容3什么是模型?o模型是对现实世界的一个简化4什么是模型?5什么是模型?6为什么要有模型?o建模可以达到以下四个目的:n把目前正在构建的系统可视化n描述系统的结构和行为n为构建系统提供模板和指导n记录在开发过程所形成的设计决策o管理系统复杂度n复杂的系统很难被认识和理解,建模可以 很好的管理这种复杂度o帮助团队成员之间的沟通n模型可以帮助开发人员之间相互理解

2、对方 的设计意图7什么是 MDD?oMDD 是一种抽象的软件开发设计流程 ,主要包括以下特点:n抽象(提高层次)、封装和信息隐藏o通过模型的多个层次(横向和纵向)来隐藏和展 现信息,从而使模型更容易被理解n以模型为中心o开发过程始终以模型为工作中心n不依赖于任何一种特定的实现o模型独立于运行平台的实现细节,这部份往往是 最容易发生变化的8软件开发方法的演化(抽象)纯粹基于模型的 开发ModelModel只有模型什么是模型?CodeCode只有代码代码就是模型ModelModelCodeCode代码可视化visualize模型就是代码ModelModelCodeCode以模型为中心generat

3、e抽象和 自动化程度同步代码和模型ModelModelCodeCode双向工程synchronize软件开发 发展方向软件开发 实践现状9什么是 MDD?oMDD 是一种抽象的软件开发设计流程 ,主要包括以下特点:n双向工程o新应用开发 - 通过正向工程来生成代码o针对遗留系统的开发 通过逆向工程来从代码中 抽象出模型n应用系统的自动生成o能够从模型生成完全可运行的应用系统o我们可以把 MDD 看作是一种使用模型 来进行编程的开发技术10什么是 MDA?oMDA Model Driven ArchitecturenMDA 是 OMG (Object Management Group) 制 定的

4、一种 MDD 实现nMDA 包括了一组实现 MDD 方法的标准和工 具集合nMDA 定义了关于 MDD 软件开发方法的一种 概念框架为什么需要MDAoOMG提出的MDA方法的三个主要目标: 轻便性、互操性和可重用性。具体解决以 下问题:n扭转以代码为中心的软件开发方法;n解决不同平台,不同技术路线之间的集成和互 操作问题;n便于适应将来出现的新技术和新平台; Inconsistency between document and code Difficulty maintainability, poor adaptation of new technology Poor in interoper

5、ationDeveloper like?Iterative processCode driven developmentrequirementSystem analysisdesigncodeAcceptanceTestdocumentDocument, diagram codecodeDocument, diagramCode Driven Developmento传统软件开发的问题o随着软件系统的复杂程度越来越高,传统的软件开发开 始面临有以下几个o问题n疲于应付需求的不断变更;n文档迅速地失效、维护困难;n项目二期开发生产力无法提升。n每当一种新的技术产生的时候,必须做许多重复的工作。o

6、系统永远不可能只用一种技术实现,且不跟其它系统交 互。不断变更的需求同样也给系统带来困难。下面将分 析在软件开发过程中遇到的问题,随后会介绍是如何来 解决这些问题的opublic interface Book extends EObjecto o String getTitle();o void setTitle(String value);o int getPages();o void setPages(int value);o opublic class BookImpl extends EObjectImpl implements Booko o .o protected static

7、final int PAGES_EDEFAULT = 0;o protected int pages = PAGES_EDEFAULT;o public int getPages()o o return pages;o o public void setPages(int newPages)o o int oldPages = pages;o pages = newPages;o if (eNotificationRequired()o eNotify(new ENotificationImpl(this, Notification.SET, ., oldPages, pages);o o .

8、o Code Driven Developmento1. 生产力和维护性问题o 当今的软件开发过程是以概要设 计和编码为驱动。无论是采用增 量开发还是迭代开发,或者是传 统的瀑布式开发途径,文档和相 关的设计图表都是在前三个阶段 中产生。需求分析往往使用文本 和图的方式来描述,其中的图经 常采用图,如用例图、类图、交 互图、活动图等。设计过程会产 生大量的设计文档,但往往仅存 在于文档中。Code Driven Developmento当编码开始的时候,前三个阶段产生的文档和相关 图片就迅速失去了它们的价值。随着编码阶段的继 续进行,图片和代码之间的关联逐渐减弱甚至消失 ,它们不再是对代码的精

9、确描述,或多或少地成为 了无关的图片。o随着时间的推移,系统不断地被修改,文档、设计 图表和代码之间的距离就越来越疏远。一般来说仅 仅是修改代码,因为修改文档和设计图表所要花费 的代价是令人无法容忍的。同时,即使修改了图和 文档,这样的工作是否有效也值得怀疑,因为还会 不断地修改代码。Code Driven DevelopmentCode Driven Developmento当一个团队初始开发一个系统的时候,保存在它们大脑 中的设计思想足以使它们理解这个系统。问题是当第一 版发布之后,团队可能会解散,其它来维护这个系统的 人可能是一个新人,那么它就只有代码和测试结果,这 就使得系统维护极其困

10、难。如果一个系统的代码多达万 行,而缺少原始的设计、分析文档的话,将是非常难以 维护的。o所以,要么在前三个阶段花费时间,写出详细设计文档 和设计图表或者在维护阶段花费时间,来发现系统是如 何工作的。这些方式都是不能直接产出代码的,也是花 费比较高昂的。许多开发人员认为直接书写代码才是有 产出的,设计模型和文档则不能。但是,在一个程序的 项目团队中,这些任务都是必须被完成的。文档写到什 么粒度,既能很好地指导编码和测试,又能不降低生产 率一直是困扰开发人员的一个难题。o软件工业与传统工业相比,有一个特定就 是其发展速度非常快。每年都会出现各种 新技术并迅速流行起来,例如Java, linux,

11、 XML, HTML, SOAP, UML, J2EE, .NET, JSP, ASP, Flash, Web Service等等。许多公 司必须跟从这种改变,这是因为n用户提出使用新技术的需求n新技术能够真正解决一些问题例如,XML解 决异构系统间的数据交换n软件供应商停止对旧的技术提供支持Code Driven DevelopmentCode Driven DevelopmentCode Driven Developmento新技术能够使得一些公司获得一些切实的好处,但是人 们必须面临的困境就是,他们必须快速跳跃前进,而且 必须忍受前期投资失去价值的现实,这无疑是非常痛苦 的。情况更加复杂

12、的是,新技术本身也在发生变化。它 们也会不断推出不同的版本,而且并不能保证能完全做 到向后兼容。软件供应商通常也只是对最近版本提供支 持。o 现存的一些系统要么提供接口与新技术开发的系统连接 ,要么转向新技术。那些仍然使用旧技术的遗产系统必 然需要和使用新技术开发的系统进行互连。如果系统和 某种技术紧密绑定,那么注定这个系统在跟随技术发展 的道路上是步履沉重的,通过模型驱动开发的方式可以 使得系统足够地技术中立性,能够跟上技术前进的步伐 。Code Driven Developmento3. 互操作性问题o软件系统很少能够孤立地存在,大多数都需要和其它系 统进行通信。一个典型的例子就是,很多公

13、司在他们的 现存系统上构建了基于Web的新系统;基于HTML, ASP, JSP等的Web应用程序需要从现存的后端系统中获取信息 等。系统往往要使用多种技术来实现,他们之间也存在 互操作的问题。现在往往在系统中使用组件,不同的组 件使用各自最佳的技术来实现,他们之间也需要互操作 。不同的工具对于元数据的管理均有自己的策略,这就 给元数据的共享形成了障碍,也降低了不同软件的互操 作性。通过模型驱动开发的能够应对这些互操作的需求 。Code Driven Developmento4。文档问题o许多的开发人员总是认为编码才是他们的主要任务,文 档可用性的支持可以延后。最终写文档成了强制的任务 ,而不

14、是出于激励的目的,不是出于自愿的工作当然不 能做好。这个是文档为什么质量总是不够高的原因之一 。o能够检查文档质量的也只能是开发团队的人员,而他们 自己却不喜欢写文档的工作,这也是文档总是不能得到 更新的原因。每次代码改变之后必须手工地在一堆文档 中找出设计中需要更改的地方,这是非常烦琐的工作。 其实开发人员的这种想法是错误的,开发一个容易修改 和便于将来维护的系统可以大大提高软件的质量。o如何能够保持文档和代码的同步,而又不额外增加很多 工作量是个难以解决的问题RequirementSystem analysisDetail DesignCode Deployment acceptTestR

15、equirement documentPIMPSMcodecodePIM driven development Flexible implementation: platform changes Simpler and more effective maintenance Increased productivity: Automation; Increases reuse; Reduction of rework Updated documentation of the system. Ensures customers, designers and architects understan

16、ding.MDAabstract DesignRefinementModel Driven DevelopmentComputation Independent ModelPlatform Independent ModelPlatform Specific ModelCode generationModeling LayerCIMPIMPSMCGModel Driven DevelopmentoMDA是以模型为中心的软件开发模式,将模型 分为三类:平台独立模型(PIM)、平台相关模 型(PSM)和代码。传统的开发过程也可能分了 这三个部分,甚至有些开发工具也实现了到PSM 到代码的自动变换,但MDA的创新之处在于把 PIM到PSM的变换也自动化了,这样开发者只需 要专注于建立平台独立的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号