第三章模型驱动开发概述课件.ppt

上传人:小飞机 文档编号:1526136 上传时间:2022-12-03 格式:PPT 页数:55 大小:3.19MB
返回 下载 相关 举报
第三章模型驱动开发概述课件.ppt_第1页
第1页 / 共55页
第三章模型驱动开发概述课件.ppt_第2页
第2页 / 共55页
第三章模型驱动开发概述课件.ppt_第3页
第3页 / 共55页
第三章模型驱动开发概述课件.ppt_第4页
第4页 / 共55页
第三章模型驱动开发概述课件.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《第三章模型驱动开发概述课件.ppt》由会员分享,可在线阅读,更多相关《第三章模型驱动开发概述课件.ppt(55页珍藏版)》请在三一办公上搜索。

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

2、,主要包括以下特点:抽象(提高层次)、封装和信息隐藏通过模型的多个层次(横向和纵向)来隐藏和展现信息,从而使模型更容易被理解以模型为中心开发过程始终以模型为工作中心不依赖于任何一种特定的实现模型独立于运行平台的实现细节,这部份往往是最容易发生变化的,8,软件开发方法的演化(抽象),9,什么是 MDD?,MDD 是一种抽象的软件开发设计流程,主要包括以下特点:双向工程新应用开发 - 通过正向工程来生成代码针对遗留系统的开发 通过逆向工程来从代码中抽象出模型应用系统的自动生成能够从模型生成完全可运行的应用系统我们可以把 MDD 看作是一种使用模型来进行编程的开发技术,10,什么是 MDA?,MDA

3、 Model Driven ArchitectureMDA 是 OMG (Object Management Group) 制定的一种 MDD 实现MDA 包括了一组实现 MDD 方法的标准和工具集合MDA 定义了关于 MDD 软件开发方法的一种概念框架,为什么需要MDA,OMG提出的MDA方法的三个主要目标:轻便性、互操性和可重用性。具体解决以下问题:扭转以代码为中心的软件开发方法;解决不同平台,不同技术路线之间的集成和互操作问题;便于适应将来出现的新技术和新平台;,Inconsistency between document and code Difficulty maintainabil

4、ity, poor adaptation of new technology Poor in interoperation,Developer like?,Iterative process,Code driven development,Code Driven Development,传统软件开发的问题随着软件系统的复杂程度越来越高,传统的软件开发开始面临有以下几个问题疲于应付需求的不断变更;文档迅速地失效、维护困难;项目二期开发生产力无法提升。每当一种新的技术产生的时候,必须做许多重复的工作。系统永远不可能只用一种技术实现,且不跟其它系统交互。不断变更的需求同样也给系统带来困难。下面将分析

5、在软件开发过程中遇到的问题,随后会介绍是如何来解决这些问题的,public interface Book extends EObject String getTitle(); void setTitle(String value); int getPages(); void setPages(int value); public class BookImpl extends EObjectImpl implements Book . protected static final int PAGES_EDEFAULT = 0; protected int pages = PAGES_EDEFAU

6、LT; public int getPages() return pages; public void setPages(int newPages) int oldPages = pages; pages = newPages; if (eNotificationRequired() eNotify(new ENotificationImpl(this, Notification.SET, ., oldPages, pages); . ,Code Driven Development,1. 生产力和维护性问题 当今的软件开发过程是以概要设计和编码为驱动。无论是采用增量开发还是迭代开发,或者是传

7、统的瀑布式开发途径,文档和相关的设计图表都是在前三个阶段中产生。需求分析往往使用文本和图的方式来描述,其中的图经常采用图,如用例图、类图、交互图、活动图等。设计过程会产生大量的设计文档,但往往仅存在于文档中。,Code Driven Development,当编码开始的时候,前三个阶段产生的文档和相关图片就迅速失去了它们的价值。随着编码阶段的继续进行,图片和代码之间的关联逐渐减弱甚至消失,它们不再是对代码的精确描述,或多或少地成为了无关的图片。随着时间的推移,系统不断地被修改,文档、设计图表和代码之间的距离就越来越疏远。一般来说仅仅是修改代码,因为修改文档和设计图表所要花费的代价是令人无法容忍

8、的。同时,即使修改了图和文档,这样的工作是否有效也值得怀疑,因为还会不断地修改代码。,Code Driven Development,Code Driven Development,当一个团队初始开发一个系统的时候,保存在它们大脑中的设计思想足以使它们理解这个系统。问题是当第一版发布之后,团队可能会解散,其它来维护这个系统的人可能是一个新人,那么它就只有代码和测试结果,这就使得系统维护极其困难。如果一个系统的代码多达万行,而缺少原始的设计、分析文档的话,将是非常难以维护的。所以,要么在前三个阶段花费时间,写出详细设计文档和设计图表或者在维护阶段花费时间,来发现系统是如何工作的。这些方式都是不能

9、直接产出代码的,也是花费比较高昂的。许多开发人员认为直接书写代码才是有产出的,设计模型和文档则不能。但是,在一个程序的项目团队中,这些任务都是必须被完成的。文档写到什么粒度,既能很好地指导编码和测试,又能不降低生产率一直是困扰开发人员的一个难题。,软件工业与传统工业相比,有一个特定就是其发展速度非常快。每年都会出现各种新技术并迅速流行起来,例如Java, linux, XML, HTML, SOAP, UML, J2EE, .NET, JSP, ASP, Flash, Web Service等等。许多公司必须跟从这种改变,这是因为用户提出使用新技术的需求新技术能够真正解决一些问题例如,XML解

10、决异构系统间的数据交换软件供应商停止对旧的技术提供支持,Code Driven Development,Code Driven Development,Code Driven Development,新技术能够使得一些公司获得一些切实的好处,但是人们必须面临的困境就是,他们必须快速跳跃前进,而且必须忍受前期投资失去价值的现实,这无疑是非常痛苦的。情况更加复杂的是,新技术本身也在发生变化。它们也会不断推出不同的版本,而且并不能保证能完全做到向后兼容。软件供应商通常也只是对最近版本提供支持。 现存的一些系统要么提供接口与新技术开发的系统连接,要么转向新技术。那些仍然使用旧技术的遗产系统必然需要和使

11、用新技术开发的系统进行互连。如果系统和某种技术紧密绑定,那么注定这个系统在跟随技术发展的道路上是步履沉重的,通过模型驱动开发的方式可以使得系统足够地技术中立性,能够跟上技术前进的步伐。,Code Driven Development,3. 互操作性问题软件系统很少能够孤立地存在,大多数都需要和其它系统进行通信。一个典型的例子就是,很多公司在他们的现存系统上构建了基于Web的新系统;基于HTML, ASP, JSP等的Web应用程序需要从现存的后端系统中获取信息等。系统往往要使用多种技术来实现,他们之间也存在互操作的问题。现在往往在系统中使用组件,不同的组件使用各自最佳的技术来实现,他们之间也需

12、要互操作。不同的工具对于元数据的管理均有自己的策略,这就给元数据的共享形成了障碍,也降低了不同软件的互操作性。通过模型驱动开发的能够应对这些互操作的需求。,Code Driven Development,4。文档问题许多的开发人员总是认为编码才是他们的主要任务,文档可用性的支持可以延后。最终写文档成了强制的任务,而不是出于激励的目的,不是出于自愿的工作当然不能做好。这个是文档为什么质量总是不够高的原因之一。能够检查文档质量的也只能是开发团队的人员,而他们自己却不喜欢写文档的工作,这也是文档总是不能得到更新的原因。每次代码改变之后必须手工地在一堆文档中找出设计中需要更改的地方,这是非常烦琐的工作

13、。其实开发人员的这种想法是错误的,开发一个容易修改和便于将来维护的系统可以大大提高软件的质量。如何能够保持文档和代码的同步,而又不额外增加很多工作量是个难以解决的问题,Requirement,System analysis,Detail Design,Code,Deployment accept,Test,Requirement document,PIM,PSM,code,code,PIM driven development,Flexible implementation: platform changes Simpler and more effective maintenance Inc

14、reased productivity: Automation; Increases reuse; Reduction of rework Updated documentation of the system. Ensures customers, designers and architects understanding.,MDA,abstract Design,Refinement,Model Driven Development,Computation Independent ModelPlatform Independent ModelPlatform Specific Model

15、Code generation,Modeling Layer,CIM,PIM,PSM,CG,Model Driven Development,MDA是以模型为中心的软件开发模式,将模型分为三类:平台独立模型(PIM)、平台相关模型(PSM)和代码。传统的开发过程也可能分了这三个部分,甚至有些开发工具也实现了到PSM到代码的自动变换,但MDA的创新之处在于把PIM到PSM的变换也自动化了,这样开发者只需要专注于建立平台独立的模型,PSM和代码让MDA工具自动生成就可以了。从两个方面提升了开发效率首先,PIM开发者的工作量减少了,因为他不再需要设计和编写平台相关的细节,这些细节己经由定义变换的人考

16、虑好了。在PSM和代码层次,需要写的代码也少了很多,因为大量的代码已经从自动生成了。,其次,开发者可以把注意力转移到PIM,这样就可以更关注如何解决所面对的业务问题。这样一来,系统就会更好地吻合用户的需求。用户获得的功能增多了,需要等待的时间却减少了。在MDA中,可移植性是通过把开发焦点转移到PIM而获得的。因为PIM是跨平台的,同一个PIM可以被自动变换成多个不同平台上的PSM,在PIM层次指定的所有东西都是完全可移植的。,Model Driven Development,Model Driven Developmet,为了解决互操作性问题,MDA不仅生成PSM,还生成PSM之间的桥接器。如

17、果能够把一个PIM变换为两个不同平台上的PSM,那么也就有了桥接两个PSM的全部信息。开发者不仅知道一个PSM中的每个元素是从中的哪个PIM元素变换而来,而且还知道PIM中的这个元素对应于PSM中的哪个元素(traceability)。因此就可以推断出两个PIM中元素的对应关系。,OMG 所定义的 MDA 模型抽象级别,计算无关模型 CIM (Computation Independent Model):沟通domain expert, system requirement expert of design and implementation平台无关模型PIM (Platform Indep

18、endent Model)平台相关模型 PSM (Platform Specific Model),计算无关模型 CIM,仅使用应用领域的概念和术语在模型中不包括与任何计算平台相关的内容,ref. Transformation From CIM to PIM Using Patterns and Archetypes.pdf,计算无关模型 CIM,计算无关模型 CIM,计算无关模型 CIM,平台无关模型 (PIM),比 CIM 要更具体一些更接近于实现但并不依赖于特定的运行平台,ref. From a UML Platform Independent Component Model to Pl

19、atform Specific Component Models.pdf,平台无关模型 (PIM),平台无关模型 (PIM),平台相关模型 (PSM),比 PIM 更具体一些更接近于具体实现模型中也包含了特定运行平台的信息,OMG-MDA,模型驱动国际组织和相关标准,MDA-OMG,模型驱动国际组织和相关标准,OMG-MDA,模型驱动国际组织和相关标准,Note the industry verticals MDA is not intended to be a general purpose model-to-code solution.,The MDA Logo,CWM (CommonWa

20、rehouseMetamodel公共仓库元模型)是OMG组织在数据仓库系统中定义了一套完整的元模型体系结构,用于数据仓库构建和应用的元数据建模。,MDA的核心,MDA的核心概念均是OMG的一系列标准:统一建模语言UML,元对象设施MOF(meta object Facility),XML元数据交换XMI(XML metadata Interchange),公共数据仓库元模型CWM(Common Warehouse metamodel)。MDA的各种核心标准组成了创建模型驱动的一致性系统纲要的基础,这个系统纲要完成了授权、发布和管理模型。,MDA is not a single specific

21、ation, but a collection of related OMG specifications:Unified Modeling Language (UML) 2.0InfrastructureSuperstructureObject Constraint Language (OCL)Diagram InterchangeProfilesMeta-Object Facility (MOF)XML Meta-Data Interchange (XMI)Common Warehouse Meta-model (CWM)Query View Transformation (QVT),Wh

22、at Comprises MDA?,MDA的核心,UML,自从UML1.3以后,UML规格书的主要结构一直沿用至今,主要包含四份说明文件,分别为: Superstructure定义13类UML图,以及组成这些图的所有元素。,UML,Infrastructure在Superstructure说明文件里,定义一般开发人员使用的元素,而在 Infrastructure这份说明文件里,则针对这些元素抽象出更基础的元素,构成UML的基础平台。这样其他专家学者可以基于这样的基础平台,设计出UML方言(UML dialect)。,Object Constraint Language (OCL) 不同于UML

23、主体的图示符号,OCL由简单的文本数字符号组成,用来表达变量、约束或条件等比图示更小,且不适合用图示来表达的元素。,UML,XMI,XMI:XML Metadata Interchange,MDA开发生命周期 图一模型驱动开发途径,基于MDA的开发流程,基于MDA的开发流程,50,类图 (Class Diagram) 来表达系统静态结构,51,时序图 (Sequence Diagram) 系统初始化,52,通信图 (Communication Diagram),面向过程的方法:过程相互调用,实现系统功能面向对象的方法:系统中所有的对象相互协作,完成了系统的功能,53,模型转换,转换定义,54,模型转换,把一个模型转换成同类型的另一个模型在不同的抽象层次间转换模型把一种类型的模型转换成另一种类型的模型在现有的转换基础上进行扩展,转换工具,Model,Model,转换定义,Thanks,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号