第三章 模型驱动开发概述_第1页
第三章 模型驱动开发概述_第2页
第三章 模型驱动开发概述_第3页
第三章 模型驱动开发概述_第4页
第三章 模型驱动开发概述_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于模型驱动的安全系统开发

第三章:模型驱动开发概述主讲:徐田华

mail:thxu@

内容模型及其意义模型驱动的开发及其意图模型驱动开发的定义和关键问题模型驱动开发授课内容3什么是模型?模型是对现实世界的一个简化4什么是模型?5什么是模型?6为什么要有模型?建模可以达到以下四个目的:把目前正在构建的系统可视化描述系统的结构和行为为构建系统提供模板和指导记录在开发过程所形成的设计决策管理系统复杂度复杂的系统很难被认识和理解,建模可以很好的管理这种复杂度帮助团队成员之间的沟通模型可以帮助开发人员之间相互理解对方的设计意图7什么是MDD?MDD是一种抽象的软件开发设计流程,主要包括以下特点:抽象(提高层次)、封装和信息隐藏通过模型的多个层次(横向和纵向)来隐藏和展现信息,从而使模型更容易被理解以模型为中心开发过程始终以模型为工作中心不依赖于任何一种特定的实现模型独立于运行平台的实现细节,这部份往往是最容易发生变化的8软件开发方法的演化(抽象)纯粹基于模型的开发Model只有模型什么是模型?Code只有代码代码就是模型ModelCode代码可视化visualize模型就是代码ModelCode以模型为中心generate抽象和自动化程度同步代码和模型ModelCode双向工程synchronize软件开发

发展方向软件开发

实践现状9什么是MDD?MDD是一种抽象的软件开发设计流程,主要包括以下特点:双向工程新应用开发-通过正向工程来生成代码针对遗留系统的开发–通过逆向工程来从代码中抽象出模型应用系统的自动生成能够从模型生成完全可运行的应用系统我们可以把MDD看作是一种使用模型来进行编程的开发技术10什么是MDA?MDA–ModelDrivenArchitectureMDA是OMG(ObjectManagementGroup)制定的一种MDD实现MDA包括了一组实现MDD方法的标准和工具集合MDA定义了关于MDD软件开发方法的一种概念框架为什么需要MDAOMG提出的MDA方法的三个主要目标:轻便性、互操性和可重用性。具体解决以下问题:扭转以代码为中心的软件开发方法;解决不同平台,不同技术路线之间的集成和互操作问题;便于适应将来出现的新技术和新平台;

Inconsistency

betweendocumentandcode

Difficulty

maintainability,poor

adaptation

ofnewtechnology

Poorin

interoperationDeveloperlike?IterativeprocessCodedrivendevelopmentrequirementSystemanalysisdesigncodeAcceptanceTestdocumentDocument,diagramcodecodeDocument,diagramCodeDrivenDevelopment传统软件开发的问题随着软件系统的复杂程度越来越高,传统的软件开发开始面临有以下几个问题疲于应付需求的不断变更;文档迅速地失效、维护困难;项目二期开发生产力无法提升。每当一种新的技术产生的时候,必须做许多重复的工作。系统永远不可能只用一种技术实现,且不跟其它系统交互。不断变更的需求同样也给系统带来困难。下面将分析在软件开发过程中遇到的问题,随后会介绍是如何来解决这些问题的publicinterfaceBookextendsEObject{StringgetTitle();voidsetTitle(Stringvalue);intgetPages();voidsetPages(intvalue);}publicclassBookImplextendsEObjectImplimplementsBook{...protectedstaticfinalintPAGES_EDEFAULT=0;protectedintpages=PAGES_EDEFAULT;publicintgetPages(){returnpages;}publicvoidsetPages(intnewPages){intoldPages=pages;pages=newPages;if(eNotificationRequired())eNotify(newENotificationImpl(this,Notification.SET,...,oldPages,pages));}...}CodeDrivenDevelopment1.生产力和维护性问题当今的软件开发过程是以概要设计和编码为驱动。无论是采用增量开发还是迭代开发,或者是传统的瀑布式开发途径,文档和相关的设计图表都是在前三个阶段中产生。需求分析往往使用文本和图的方式来描述,其中的图经常采用图,如用例图、类图、交互图、活动图等。设计过程会产生大量的设计文档,但往往仅存在于文档中。CodeDrivenDevelopment当编码开始的时候,前三个阶段产生的文档和相关图片就迅速失去了它们的价值。随着编码阶段的继续进行,图片和代码之间的关联逐渐减弱甚至消失,它们不再是对代码的精确描述,或多或少地成为了无关的图片。随着时间的推移,系统不断地被修改,文档、设计图表和代码之间的距离就越来越疏远。一般来说仅仅是修改代码,因为修改文档和设计图表所要花费的代价是令人无法容忍的。同时,即使修改了图和文档,这样的工作是否有效也值得怀疑,因为还会不断地修改代码。CodeDrivenDevelopmentCodeDrivenDevelopment当一个团队初始开发一个系统的时候,保存在它们大脑中的设计思想足以使它们理解这个系统。问题是当第一版发布之后,团队可能会解散,其它来维护这个系统的人可能是一个新人,那么它就只有代码和测试结果,这就使得系统维护极其困难。如果一个系统的代码多达万行,而缺少原始的设计、分析文档的话,将是非常难以维护的。所以,要么在前三个阶段花费时间,写出详细设计文档和设计图表或者在维护阶段花费时间,来发现系统是如何工作的。这些方式都是不能直接产出代码的,也是花费比较高昂的。许多开发人员认为直接书写代码才是有产出的,设计模型和文档则不能。但是,在一个程序的项目团队中,这些任务都是必须被完成的。文档写到什么粒度,既能很好地指导编码和测试,又能不降低生产率一直是困扰开发人员的一个难题。软件工业与传统工业相比,有一个特定就是其发展速度非常快。每年都会出现各种新技术并迅速流行起来,例如Java,linux,XML,HTML,SOAP,UML,J2EE,.NET,JSP,ASP,Flash,WebService等等。许多公司必须跟从这种改变,这是因为用户提出使用新技术的需求新技术能够真正解决一些问题例如,XML解决异构系统间的数据交换软件供应商停止对旧的技术提供支持CodeDrivenDevelopmentCodeDrivenDevelopmentCodeDrivenDevelopment新技术能够使得一些公司获得一些切实的好处,但是人们必须面临的困境就是,他们必须快速跳跃前进,而且必须忍受前期投资失去价值的现实,这无疑是非常痛苦的。情况更加复杂的是,新技术本身也在发生变化。它们也会不断推出不同的版本,而且并不能保证能完全做到向后兼容。软件供应商通常也只是对最近版本提供支持。现存的一些系统要么提供接口与新技术开发的系统连接,要么转向新技术。那些仍然使用旧技术的遗产系统必然需要和使用新技术开发的系统进行互连。如果系统和某种技术紧密绑定,那么注定这个系统在跟随技术发展的道路上是步履沉重的,通过模型驱动开发的方式可以使得系统足够地技术中立性,能够跟上技术前进的步伐。CodeDrivenDevelopment3.互操作性问题软件系统很少能够孤立地存在,大多数都需要和其它系统进行通信。一个典型的例子就是,很多公司在他们的现存系统上构建了基于Web的新系统;基于HTML,ASP,JSP等的Web应用程序需要从现存的后端系统中获取信息等。系统往往要使用多种技术来实现,他们之间也存在互操作的问题。现在往往在系统中使用组件,不同的组件使用各自最佳的技术来实现,他们之间也需要互操作。不同的工具对于元数据的管理均有自己的策略,这就给元数据的共享形成了障碍,也降低了不同软件的互操作性。通过模型驱动开发的能够应对这些互操作的需求。CodeDrivenDevelopment4。文档问题许多的开发人员总是认为编码才是他们的主要任务,文档可用性的支持可以延后。最终写文档成了强制的任务,而不是出于激励的目的,不是出于自愿的工作当然不能做好。这个是文档为什么质量总是不够高的原因之一。能够检查文档质量的也只能是开发团队的人员,而他们自己却不喜欢写文档的工作,这也是文档总是不能得到更新的原因。每次代码改变之后必须手工地在一堆文档中找出设计中需要更改的地方,这是非常烦琐的工作。其实开发人员的这种想法是错误的,开发一个容易修改和便于将来维护的系统可以大大提高软件的质量。如何能够保持文档和代码的同步,而又不额外增加很多工作量是个难以解决的问题RequirementSystemanalysisDetailDesignCodeDeploymentacceptTestRequirementdocumentPIMPSMcodecodePIMdrivendevelopment

Flexible

implementation:platformchanges

Simplerandmoreeffective

maintenance

Increased

productivity:Automation;Increasesreuse;Reductionofrework

Updated

documentation

ofthesystem.

Ensurescustomers,designersandarchitects

understanding.MDAabstractDesignRefinementModelDrivenDevelopmentComputationIndependentModelPlatformIndependentModelPlatformSpecificModelCodegenerationModelingLayerCIMPIMPSMCGModelDrivenDevelopmentMDA是以模型为中心的软件开发模式,将模型分为三类:平台独立模型(PIM)、平台相关模型(PSM)和代码。传统的开发过程也可能分了这三个部分,甚至有些开发工具也实现了到PSM到代码的自动变换,但MDA的创新之处在于把PIM到PSM的变换也自动化了,这样开发者只需要专注于建立平台独立的模型,PSM和代码让MDA工具自动生成就可以了。从两个方面提升了开发效率首先,PIM开发者的工作量减少了,因为他不再需要设计和编写平台相关的细节,这些细节己经由定义变换的人考虑好了。在PSM和代码层次,需要写的代码也少了很多,因为大量的代码已经从自动生成了。其次,开发者可以把注意力转移到PIM,这样就可以更关注如何解决所面对的业务问题。这样一来,系统就会更好地吻合用户的需求。用户获得的功能增多了,需要等待的时间却减少了。在MDA中,可移植性是通过把开发焦点转移到PIM而获得的。因为PIM是跨平台的,同一个PIM可以被自动变换成多个不同平台上的PSM,在PIM层次指定的所有东西都是完全可移植的。ModelDrivenDevelopmentModelDrivenDevelopmet为了解决互操作性问题,MDA不仅生成PSM,还生成PSM之间的桥接器。如果能够把一个PIM变换为两个不同平台上的PSM,那么也就有了桥接两个PSM的全部信息。开发者不仅知道一个PSM中的每个元素是从中的哪个PIM元素变换而来,而且还知道PIM中的这个元素对应于PSM中的哪个元素(traceability)。因此就可以推断出两个PIM中元素的对应关系。OMG所定义的MDA模型抽象级别计算无关模型CIM(ComputationIndependentModel):沟通domainexpert,systemrequirementexpertofdesignandimplementation平台无关模型PIM(PlatformIndependentModel)平台相关模型PSM(PlatformSpecificModel)计算无关模型CIM仅使用应用领域的概念和术语在模型中不包括与任何计算平台相关的内容ref.TransformationFromCIMtoPIMUsingPatternsandArchetypes.pdf计算无关模型CIM计算无关模型CIM计算无关模型CIM平台无关模型(PIM)比CIM要更具体一些更接近于实现但并不依赖于特定的运行平台ref.FromaUMLPlatformIndependentComponentModeltoPlatformSpecificComponentModels.pdf平台无关模型(PIM)平台无关模型(PIM)平台相关模型(PSM)比PIM更具体一些更接近于具体实现模型中也包含了特定运行平台的信息OMG-MDA模型驱动国际组织和相关标准MDA-OMG模型驱动国际组织和相关标准OMG-MDA模型驱动国际组织和相关标准Notetheindustryverticals…MDAisnotintendedtobeageneralpurposemodel-to-codesolution.TheMDALogoCWM(CommonWarehouseMetamodel公共仓库元模型)是OMG组织在数据仓库系统中定义了一套完整的元模型体系结构,用于数据仓库构建和应用的元数据建模。MDA的核心MDA的核心概念均是OMG的一系列标准:统一建模语言UML,元对象设施MOF(metaobjectFacility),XML元数据交换XMI(XMLmetadataInterchange),公共数据仓库元模型CWM(CommonWarehousemetamodel)。MDA的各种核心标准组成了创建模型驱动的一致性系统纲要的基础,这个系统纲要完成了授权、发布和管理模型。MDAisnotasinglespecification,butacollectionofrelatedOMGspecifications:UnifiedModelingLanguage(UML™)2.0InfrastructureSuperstructureObjectConstraintLanguage(OCL)DiagramInterchangeProfilesMeta-ObjectFacility(MOF)XMLMeta-DataInterchange(XMI)CommonWarehouseMeta-model(CWM)QueryViewTransformation

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论