第三章-模型驱动开发概述.课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第三章-模型驱动开发概述.课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 模型 驱动 开发 概述 课件
- 资源描述:
-
1、内容o模型及其意义o模型驱动的开发及其意图o模型驱动开发的定义和关键问题o模型驱动开发授课内容3什么是模型?o模型是对现实世界的一个简化4什么是模型?5什么是模型?6为什么要有模型?o建模可以达到以下四个目的:n把目前正在构建的系统可视化n描述系统的结构和行为n为构建系统提供模板和指导n记录在开发过程所形成的设计决策o管理系统复杂度n复杂的系统很难被认识和理解,建模可以很好的管理这种复杂度o帮助团队成员之间的沟通n模型可以帮助开发人员之间相互理解对方的设计意图7什么是 MDD?oMDD 是一种抽象的软件开发设计流程,主要包括以下特点:n抽象(提高层次提高层次)、封装和信息隐藏o通过模型的多个层
2、次(横向和纵向横向和纵向)来隐藏和展现信息,从而使模型更容易被理解n以模型为中心o开发过程始终以模型为工作中心n不依赖于任何一种特定的实现o模型独立于运行平台的实现细节,这部份往往是最容易发生变化的8软件开发方法的演化(抽象)纯粹基于模型的开发只有模型只有模型什么是模型?只有代码只有代码代码就是模型代码可视化代码可视化visualize模型就是代码以模型为中心以模型为中心generate抽象和自动化程度同步代码和模型双向工程双向工程synchronize软件开发软件开发发展方向发展方向软件开发软件开发实践现状实践现状9什么是 MDD?oMDD 是一种抽象的软件开发设计流程,主要包括以下特点:n
3、双向工程o新应用开发 - 通过正向工程来生成代码o针对遗留系统的开发 通过逆向工程来从代码中抽象出模型n应用系统的自动生成o能够从模型生成完全可运行的应用系统o我们可以把 MDD 看作是一种使用模型来进行编程的开发技术10什么是 MDA?oMDA Model Driven ArchitecturenMDA 是 OMG (Object Management Group) 制定的一种 MDD 实现nMDA 包括了一组实现 MDD 方法的标准和工具集合nMDA 定义了关于 MDD 软件开发方法的一种概念框架为什么需要MDAoOMG提出的MDA方法的三个主要目标三个主要目标:轻便性、互操性和可重用性。
4、具体解决以下问题:n扭转以代码为中心代码为中心的软件开发方法;n解决不同平台解决不同平台,不同技术路线之间的集成和互操作问题;n便于适应将来出现的新技术和新平台; Inconsistency between document and code Difficulty maintainability, poor adaptation of new technology Poor in interoperationDeveloper like?Iterative processCode driven developmentrequirementSystem analysisdesigncodeAcc
5、eptanceTestdocumentDocument, diagramcodecodeDocument, diagramCode Driven Developmento传统软件开发的问题o随着软件系统的复杂程度越来越高,传统的软件开发开始面临有以下几个o问题n疲于应付需求的不断变更;n文档迅速地失效、维护困难;n项目二期开发生产力无法提升。n每当一种新的技术产生的时候,必须做许多重复的工作。o系统永远不可能只用一种技术实现,且不跟其它系统交互。不断变更的需求同样也给系统带来困难。下面将分析在软件开发过程中遇到的问题,随后会介绍是如何来解决这些问题的opublic interface Book
6、 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 final int PAGES_EDEFAULT = 0;o protected int pages = PAGES_EDEFAULT;o public int getPages()o o return pa
7、ges;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 .o Code Driven Developmento1. 生产力和维护性问题o 当今的软件开发过程是以概要设概要设计计和编码编码为驱动。无论是采用增量开发还是迭代开发,或者是传统的瀑布式开发途径,文档和相关的
8、设计图表都是在前三个阶段前三个阶段中产生。需求分析往往使用文本和图的方式来描述,其中的图经常采用图,如用例图、类图、交互图、活动图等。设计过程会产生大量的设计文档,但往往仅存在于文档中。Code Driven Developmento当编码开始的时候,前三个阶段产生的文档和相关图片就迅速失去了它们的价值。随着编码阶段的继续进行,图片和代码之间的关联逐渐减弱甚至消失,它们不再是对代码的精确描述,或多或少地成为了无关的图片。o随着时间的推移,系统不断地被修改,文档、设计图表和代码之间的距离就越来越疏远。一般来说仅仅是修改代码,因为修改文档和设计图表所要花费的代价是令人无法容忍的。同时,即使修改了图
9、和文档,这样的工作是否有效也值得怀疑,因为还会不断地修改代码。Code Driven DevelopmentCode Driven Developmento当一个团队初始开发一个系统初始开发一个系统的时候,保存在它们大脑中的设计思想足以使它们理解理解这个系统。问题是当第一版发布之后,团队可能会解散团队可能会解散,其它来维护这个系统的人可能是一个新人,那么它就只有代码和测试结果只有代码和测试结果,这就使得系统维护极其困难系统维护极其困难。如果一个系统的代码多达万行,而缺少原始的设计、分析文档的话,将是非常难以维护的。o所以,要么在前三个阶段花费时间花费时间,写出详细设计文档写出详细设计文档和设计
10、图表或者在维护阶段花费时间,来发现系统是如何工作的。这些方式都是不能直接产出代码的,也是花花费比较高昂费比较高昂的。许多开发人员认为直接书写代码才是有直接书写代码才是有产出的,设计模型和文档则不能产出的,设计模型和文档则不能。但是,在一个程序的项目团队中,这些任务都是必须被完成的。文档写到什么粒度,既能很好地指导编码和测试,又能不降低生产率一直是困扰开发人员的一个难题。o软件工业与传统工业相比,有一个特定就是其发展速度非常快。每年都会出现各种新技术并迅速流行起来,例如Java, linux, XML, HTML, SOAP, UML, J2EE, .NET, JSP, ASP, Flash,
11、Web Service等等。许多公司必须跟从这种改变,这是因为n用户提出使用新技术的需求n新技术能够真正解决一些问题例如,XML解决异构系统间的数据交换n软件供应商停止对旧的技术提供支持Code Driven DevelopmentCode Driven DevelopmentCode Driven Developmento新技术能够使得一些公司获得一些切实的好处,但是人们必须面临的困境就是,他们必须快速跳跃前进快速跳跃前进,而且必须忍受前期投资失去价值忍受前期投资失去价值的现实,这无疑是非常痛苦的。情况更加复杂的是,新技术本身也在发生变化。它们也会不断推出不同的版本,而且并不能保证能完全做到
12、向后兼容。软件供应商通常也只是对最近版本提供支持。o 现存的一些系统要么提供接口与新技术开发的系统连接提供接口与新技术开发的系统连接,要么转向新技术转向新技术。那些仍然使用旧技术的遗产遗产系统必然需要和使用新技术开发的系统进行互连。如果系统和某种技术紧密绑定,那么注定这个系统在跟随技术发展的道路上是步履沉重步履沉重的,通过模型驱动开发的方式可以使得系统足够地技术中立性,能够跟上技术前进的步伐。Code Driven Developmento3. 互操作性问题o软件系统很少能够孤立地存在,大多数都需要和其它系统进行通信。一个典型的例子就是,很多公司在他们的现存系统上构建了基于Web的新系的新系统
展开阅读全文