软件工程与自动化automationsoftware第四章.ppt_第1页
软件工程与自动化automationsoftware第四章.ppt_第2页
软件工程与自动化automationsoftware第四章.ppt_第3页
软件工程与自动化automationsoftware第四章.ppt_第4页
软件工程与自动化automationsoftware第四章.ppt_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1,第4章 基于构件开发,本章内容,41 构件方法的目标 42 定义构件 43 构件粒度 44 构件环境 45 构件在整体中的位置 46 部署构件 47 构件规范 48 基于构件开发的局限性与不适用之处,2,41 构件方法的目标,应用构架应关注的方向 基于构件开发的目标 基于构件开发的目的 构件的要素 CBD方法应考虑的主要问题,3,网络经济时代对软件工作者的挑战,最大程度地利用在软件或硬件基础设施上的投资; 把新技术的潜力最大限度地发掘出来; 驱动新的业务先导,在解决方案市场中提供一个有竞争力的方案 。,计算技术经历了“以机器为中心-以应用为中心-以企业为中心”的变化,4,应用构架应关注的方向, 应用程序的解决方案重点被放在对遗产系统、软件包和新开发系统的组装和集成技术上; Internet家电和手持设备需求的增加,要求设备必须支持真正的、简便的“即插即用”,在Internet上它们要和电话类似,插上就能工作; 面向服务的软件增加,以及Web Services和网格服务广泛应用,“无需管理”网络的需求也就越强烈,用户可以希望能够使用所有网络上的软件服务,以及设备;打印机、文件服务器、扫描仪以及大量的纯软件服务,无需任何配置、管理或安装驱动程序就可以轻松使用。,要达到以上几点,应用程序的开发方式和应用程序构架就要做许多改变。,5,未来的应用程序构架和应用程序支持工具,6,基于构件方法的目标,改进软件的开发过程,手段,通过一些预先构建的软件构件来组装成新的软件,而不是从头开发。,根据构件功能完成系统设计; 把部分应用程序外包; 关注使用基于接口的设计技术来组装构件。,CBD:有计划地集成现有软件部分来进行软件开发,CBD-Component-Based Development,7,基于构件开发的目的,遏止复杂性 便于维护 支持并行和分布式的开发 减少重复工作 缩短整个工程的工期 提高一致性 提高生产率,把变化局限在较小的范围,减少查看代码量,造成重复工作的原因是由于软件用于支持过程的,而过程不同是很自然的事情。采用CBD,可以调整前一应用,来满足新用户的需求。,构件功能是单一的,无二义性,不会因一构件的改变,而影响其他构件。,8,构件的要素,规格说明 一个或多个实现 构件标准 包装方法 部署方法,是提供服务的抽象,它建立在接口概念之上的,并作为客户方和提供方之间的契约.,构件内部实现具有很大的自由度,开发者可以选择任何一种认为是合适的实现方法(包括对编程语言的选择)。唯一的限制是,要满足在规格说明中定义的行为。,是约束条件,构件必须安排在一个定义良好、合理的约束条件环境中,这个环境也称为构件模型。,构件模型:支持构件的服务,与使用构件服务必须遵守的规则。,包装是使用的构件组所必要的注册机制,即安装所必须的系统设置。,构件组(包):是根据需要,组织构件成为一组可替换的服务。,部署是创建构件应用的可执行实例,它使构件在此应用中执行,并允许构件之间发生交互。,9,CBD方法应考虑的主要问题,提供可复用服务的含义 如何交付独立的服务,10,可复用服务提供,可复用服务提供意味着某个构件提供了其他一些构件希望访问的功能。,基于构件开发方法的基本原则,每个构件应该有描述该构件功能,以及当使用其服务时,它将进行哪些行为的规格说明; 规格说明和实现之间分离。,借助于构件的规格说明书,潜在的用户或客户端就可以关注整体的解决方案,而不需要考虑这些服务是如何实现的; 开发人员可按照规格说明的要求,将相应的服务用代码和数据具体地实现;,规格说明带来的好处,支持相同规格说明的两个构件可以相互替代; 实现有效的包装。,11,服务的独立交付,独立交付的构件必须是上下文无关的。,构件上下文无关的基本概念,构件必须相互合作实现一个解决方案,但它们不能相互干扰,特别是: 构件之间不能有嵌入式的相关性存在; 构件之间不能直接共享一个公共的数据结构。,12,42 定义构件,构件是预先构建的 构件特征 构件组装的部署 构件上下环境 支持技术 构件的定义,13,构件是预先构建的,预先构建的构件的原因, 开发费用要求 应用集成的要求 维护要求 有利于渐进开发的方式,在系统运行时,构件仍然保持可分离的标识,因为它没有前期重用源代码的开发过程,所以它比在复用源代码的费用要低。,用当初不可能估计到的方式复用已有的应用。同时,必须考虑“非干扰式”复用。,需要检查的代码数量尽可能的少。,只要新的构件提供所要替换或改变构件一样的功能,则就不会影响到使用其他的构件。,14,1)构件是黑盒,只能通过其接口访问, 内部结构是不可见的,用户只对它通过确定的接口所提供的功能或“服务”感兴趣。其他构件只有通过这个明确定义的接口,才能与该构件相连。 为了使用一个构件,必须能够得到关于它的接口知识,要么通过相关的规格说明书,要么可以向该构件询问关于它所提供的接口的信息。,构件特征,2)构件是可分离的,能够从目前的上下文环境中分离出来,并在另一个上下文环境中使用它。,15,构件组装的部署, 构件不是在编译之前组装的,而且在编译之后; 构件的装配可能涉及到几层配置或定制; 一个构件可以部署很多实例,每个实例都是独立的,并且在它自己的进程中执行。 虽然也有情况是构件只有在运行时刻才进行识别和链接(如Jini),但是在大多数业务环境下,应用是在部署之前进行组装的。,16,构件上下环境,使用构件意味着需要在一些层次上对开发方式进行标准化,这些层次包括:业务逻辑、软件基础设施和接口标准。,支持技术,构件需要一个支持环境,构件技术通常提供一个运行时刻环境,组装好的程序可以在这个环境中运行,辅助组装和部署工具也需要在此环境下工作,支持构件的运行时刻环境通常称为“容器”。,17,构件的定义,构件是一个独立发布的功能部分,可以通过它的接口访问它的服务。,该定义强调了构件很多重要方面 : 它将构件定义为一个可交付的单元; 它提到构件会提供一些有用的功能; 构件通过接口提供服务。,构件含义,软件系统的一个有用片段,它可以与其它片段组装成一起形成更大的片段,或是整个的解决方案。,18,43 构件粒度,0 构件对应应用的比例 100%,结论,粒度可以用构件所提供的功能数目来度量; 大的构件对业务来说具有更大的价值; 最大类型的构件是预先构建的应用软件包,但是,要找到一个在业务上能充分满足需要的应用软件包却常常很困难; 大的构件本身也应该用较小的构件来构建; 最有价值的构件会大一些,而不是小一些。,19,44 构件环境,构件的互操作性 不同技术之间的互操作性 构件模型 包装现有的应用 平台无关性 服务提供,20,不同技术之间的互操作性,构件的互操作性,实现互操作的基本要求,即构件必须对使用到的接口具有统一的理解,并用一致的方式来描述接口。可使构件具有上下文无关性。,用一种标准的方式来定义构件间的接口。,使用中介技术,实现构件在不同技术之间的互操作,中介层将接口翻译数从n(n-1)降低到2(n-1)次,21,构件模型,参考模型 描述模型 实现模型,22,参考模型,3C构件模型,1)概念 (Concept) 关于“构件做什么”的抽象描述,概念包括接口规约和语义描述两部分。 2)内容(Content) 概念的具体实现,描述构件如何完成概念所刻画的功能。内容是对一般用户隐蔽的信息,只有那些企图修改构件的工程师,才需要了解这些信息。 3)语境(Context) 描述构件和外围环境在概念级和内容级的关系。语境刻画构件的应用环境,为构件的选用和适应性提供指导。,23,描述模型,REBOOT模型,REBOOT(Reuse Based on Object-Oriented Technology基于面向对象技术的复用)构件模型,1)抽象(obstraction) 它是构件概念的抽象性描述。 2)操作(operation) 它是构件所提供的操作描述。 3)操作对象(operand) 它描述操作的对象。 4)依赖(dependency) 它描述构件与外界的依赖关系。,24,实现模型, OMG的CORBA Sun公司的J2EE 微软公司的COM/DCOM,这些实现模型将构件的接口与实现进行了有效的分离 ,每个组件的接口都将以标准的方式定义。 解决了诸如一个构件怎样使得其他构件获得它提供的服务,构件怎样被命名,以及怎样在运行时发现新构件和它们的服务这些问题。,25,包装现有的应用,目的是让现存的软件在自己的构件环境下能工作,实现现存应用与其他构件的互操作。,方法,为现存的软件加上门面(或叫外观)构成包装构件,使它能在给定的构件环境中操作。,包装构件功能,提供标准构件接口 提供与现存应用相关的接口,这样包装构件与现存应用代码组成了虚拟构件,称为“遗留系统构件”。,26,平台无关性,扩大构件的复用环境,服务提供,“服务提供”指在构建应用构件时,所要提供的公共服务环境。需要有一种为此应用程序中所有构件能使用的、共享的构件基础设施。,解决办法使用Java技术,27,构件基础设施中考虑的问题,构件模型 一组使用这种基础设施的构件都必须遵守的协议、标准、约束以及责任。 实现协作和同步的一组机制 使得构件之间可以相互通信,这些机制使用一些特定的技术,并且与特定的平台相关。,基础设施处理的功能,提供通用的服务: 定义构件接口的标准方法; 命名、安全、事务以及事件处理等服务的管理 ; 处理对于不同提供商在不同平台上的数据库更新。,28,基础设施作用, 应用程序的开发者不需要再承受通用的服务所带来的负担了; 应用程序的开发者可以将注意力集中于他们业务级构件的应用功能的开发上来; 应用程序的开发者无需对支持跨异构网络平台的复杂代码进行开发。,29,45 构件在整体中的位置, 构件是整体中的可分离的实体; 每个拥有各自范围的构件能确保其在整体中的独立性; 构件可以从第三方购买; 构件一个重要的需求是,不仅要在一个组织内部实现应用集成,而且要与供应链上的其他组织实现集成; 构件可和其组织以外的软件集成。,30,46 部署构件,定制和配置 组装 接口不匹配原因和解决方法 服务粒度上的不匹配问题和解决方法 更改处理,31,定制和配置,通过以下方式实现定制: 提供配置数据,这些数据将作为构件运行时的参数; 在构件中内建立配置或定制服务,这种配置服务可能只在组装或部署时提供,在构件投入运行时,可以禁止或取消。,32,组装:把构件粘在一起,通过构件规格说明书确定构件的匹配程度。构件规格说明书是由构件的开发者提供的,它定义了构件的接口,并说明了与构件的部署相关的其他方面的问题,主要是关于如何部署的限制条件,诸如构件运行的操作系统和它所需要的构件服务。 “胶水(glue)”就是处于两个接口之间,让它们能相互匹配的代码。,接口不匹配的原因,参数传递的顺序可能与被调用的服务所要求的顺序不一致; 调用构件没有提供被调用的服务可能需要的参数; 调用构件提供了被调用服务不要求的参数。 所需的参数格式可能与传递过来的参数格式不一样,或者使用了不同的值。,使用XML语言解决构件接口不匹配问题,33,使用XML语言解决构件接口匹配问题,XML (Extensible Markup Language,可扩展标记语言)是基于SGML(Standard Generalized Markup Language,标准通用标记语言)的一种通用标记语言,XML的目标主要是在Web上应用。因为XML是可扩展的,所以它的标记符号集是不受限制的。 XML通过标记符来标记数据,从而说明数据的含义。,XML益处,它解决了接口传递参数顺序不同的问题。由于每个参数都由一个标记符来表示,传递参数的顺序就不必符合被调用的服务的要求。映射的管理可以与参数的顺序无关。 由于使用标记符来标记每个数据字段,这些标记符可以用于表示每个字段的含义。 如果采用XML,词汇和术语可以标准化。如果各方面的XML中的业务词汇不匹配,XML提供了在不同的“方言”之间实现转换的机制,即通过XSL转换。,34,与遗留系统集成时,存在服务粒度上的不匹配问题,调用构件认为调用一个单独的服务就可以了,而实际却需要调用多个服务; 如果不提供更多的信息,就不能调用一项服务。,解决方法,使用包装构件来解决。 包装构件和被包装的应用一起被视为一个新的逻辑上的构件。这样将来可以选择更合适的构件来替换这个包装构件。,35,集成(组装)的最佳方法,全面使用一致的构件参考模型,理由,模型明确定义了应该有哪些构件。它们应该提供的服务,以及创建满足这种模型的构件所需的工作,而不要使用一种随心所欲的方式简单地把东西堆砌在一起。当需求出现时,这会使构件的重新连接更为容易,同时这也创造了更为简单的总体图景。,36,更改处理,构件更改处理目的:除错或者增加功能。 除错通常不会涉及构件接口或规格说明的改变,而增加功能可能涉及到这些接口或规格说明改变。,更改会引起的问题,在一种上下文环境下所做的改动在另一种上下文环境中却不可接受 ; 当多个构件利用某一个构件的服务,而这个构件又被修改时,也会产生类似的问题。,解决问题的方法,冻结已发布的接口,然后,进行“非干扰式”的更改。 当新的需求出现,而无法通过使用已有接口来满足时,构件就简单地在原来接口的基础上增加一个新的接口

温馨提示

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

评论

0/150

提交评论