软件工程与自动化automationsoftware第四章.ppt

上传人:牧羊曲112 文档编号:6434202 上传时间:2023-10-30 格式:PPT 页数:39 大小:243.77KB
返回 下载 相关 举报
软件工程与自动化automationsoftware第四章.ppt_第1页
第1页 / 共39页
软件工程与自动化automationsoftware第四章.ppt_第2页
第2页 / 共39页
软件工程与自动化automationsoftware第四章.ppt_第3页
第3页 / 共39页
软件工程与自动化automationsoftware第四章.ppt_第4页
第4页 / 共39页
软件工程与自动化automationsoftware第四章.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《软件工程与自动化automationsoftware第四章.ppt》由会员分享,可在线阅读,更多相关《软件工程与自动化automationsoftware第四章.ppt(39页珍藏版)》请在三一办公上搜索。

1、1,第4章 基于构件开发,本章内容,41 构件方法的目标 42 定义构件 43 构件粒度 44 构件环境 45 构件在整体中的位置46 部署构件 47 构件规范 48 基于构件开发的局限性与不适用之处,2,41 构件方法的目标,应用构架应关注的方向 基于构件开发的目标基于构件开发的目的 构件的要素CBD方法应考虑的主要问题,3,网络经济时代对软件工作者的挑战,最大程度地利用在软件或硬件基础设施上的投资;把新技术的潜力最大限度地发掘出来;驱动新的业务先导,在解决方案市场中提供一个有竞争力的方案。,计算技术经历了“以机器为中心-以应用为中心-以企业为中心”的变化,4,应用构架应关注的方向,应用程序

2、的解决方案重点被放在对遗产系统、软件包和新开发系统的组装和集成技术上;Internet家电和手持设备需求的增加,要求设备必须支持真正的、简便的“即插即用”,在Internet上它们要和电话类似,插上就能工作;面向服务的软件增加,以及Web Services和网格服务广泛应用,“无需管理”网络的需求也就越强烈,用户可以希望能够使用所有网络上的软件服务,以及设备;打印机、文件服务器、扫描仪以及大量的纯软件服务,无需任何配置、管理或安装驱动程序就可以轻松使用。,要达到以上几点,应用程序的开发方式和应用程序构架就要做许多改变。,5,未来的应用程序构架和应用程序支持工具,6,基于构件方法的目标,改进软件

3、的开发过程,手段,通过一些预先构建的软件构件来组装成新的软件,而不是从头开发。,根据构件功能完成系统设计;把部分应用程序外包;关注使用基于接口的设计技术来组装构件。,CBD:有计划地集成现有软件部分来进行软件开发,CBD-Component-Based Development,7,基于构件开发的目的,遏止复杂性 便于维护 支持并行和分布式的开发 减少重复工作 缩短整个工程的工期提高一致性 提高生产率,把变化局限在较小的范围,减少查看代码量,造成重复工作的原因是由于软件用于支持过程的,而过程不同是很自然的事情。采用CBD,可以调整前一应用,来满足新用户的需求。,构件功能是单一的,无二义性,不会因

4、一构件的改变,而影响其他构件。,8,构件的要素,规格说明一个或多个实现构件标准包装方法部署方法,是提供服务的抽象,它建立在接口概念之上的,并作为客户方和提供方之间的契约.,构件内部实现具有很大的自由度,开发者可以选择任何一种认为是合适的实现方法(包括对编程语言的选择)。唯一的限制是,要满足在规格说明中定义的行为。,是约束条件,构件必须安排在一个定义良好、合理的约束条件环境中,这个环境也称为构件模型。,构件模型:支持构件的服务,与使用构件服务必须遵守的规则。,包装是使用的构件组所必要的注册机制,即安装所必须的系统设置。,构件组(包):是根据需要,组织构件成为一组可替换的服务。,部署是创建构件应用

5、的可执行实例,它使构件在此应用中执行,并允许构件之间发生交互。,9,CBD方法应考虑的主要问题,提供可复用服务的含义如何交付独立的服务,10,可复用服务提供,可复用服务提供意味着某个构件提供了其他一些构件希望访问的功能。,基于构件开发方法的基本原则,每个构件应该有描述该构件功能,以及当使用其服务时,它将进行哪些行为的规格说明;规格说明和实现之间分离。,借助于构件的规格说明书,潜在的用户或客户端就可以关注整体的解决方案,而不需要考虑这些服务是如何实现的;开发人员可按照规格说明的要求,将相应的服务用代码和数据具体地实现;,规格说明带来的好处,支持相同规格说明的两个构件可以相互替代;实现有效的包装。

6、,11,服务的独立交付,独立交付的构件必须是上下文无关的。,构件上下文无关的基本概念,构件必须相互合作实现一个解决方案,但它们不能相互干扰,特别是:构件之间不能有嵌入式的相关性存在;构件之间不能直接共享一个公共的数据结构。,12,42 定义构件,构件是预先构建的 构件特征构件组装的部署 构件上下环境 支持技术 构件的定义,13,构件是预先构建的,预先构建的构件的原因,开发费用要求 应用集成的要求 维护要求 有利于渐进开发的方式,在系统运行时,构件仍然保持可分离的标识,因为它没有前期重用源代码的开发过程,所以它比在复用源代码的费用要低。,用当初不可能估计到的方式复用已有的应用。同时,必须考虑“非

7、干扰式”复用。,需要检查的代码数量尽可能的少。,只要新的构件提供所要替换或改变构件一样的功能,则就不会影响到使用其他的构件。,14,1)构件是黑盒,只能通过其接口访问,内部结构是不可见的,用户只对它通过确定的接口所提供的功能或“服务”感兴趣。其他构件只有通过这个明确定义的接口,才能与该构件相连。为了使用一个构件,必须能够得到关于它的接口知识,要么通过相关的规格说明书,要么可以向该构件询问关于它所提供的接口的信息。,构件特征,2)构件是可分离的,能够从目前的上下文环境中分离出来,并在另一个上下文环境中使用它。,15,构件组装的部署,构件不是在编译之前组装的,而且在编译之后;构件的装配可能涉及到几

8、层配置或定制;一个构件可以部署很多实例,每个实例都是独立的,并且在它自己的进程中执行。虽然也有情况是构件只有在运行时刻才进行识别和链接(如Jini),但是在大多数业务环境下,应用是在部署之前进行组装的。,16,构件上下环境,使用构件意味着需要在一些层次上对开发方式进行标准化,这些层次包括:业务逻辑、软件基础设施和接口标准。,支持技术,构件需要一个支持环境,构件技术通常提供一个运行时刻环境,组装好的程序可以在这个环境中运行,辅助组装和部署工具也需要在此环境下工作,支持构件的运行时刻环境通常称为“容器”。,17,构件的定义,构件是一个独立发布的功能部分,可以通过它的接口访问它的服务。,该定义强调了

9、构件很多重要方面:它将构件定义为一个可交付的单元;它提到构件会提供一些有用的功能;构件通过接口提供服务。,构件含义,软件系统的一个有用片段,它可以与其它片段组装成一起形成更大的片段,或是整个的解决方案。,18,43 构件粒度,0 构件对应应用的比例 100%,结论,粒度可以用构件所提供的功能数目来度量;大的构件对业务来说具有更大的价值;最大类型的构件是预先构建的应用软件包,但是,要找到一个在业务上能充分满足需要的应用软件包却常常很困难;大的构件本身也应该用较小的构件来构建;最有价值的构件会大一些,而不是小一些。,19,44 构件环境,构件的互操作性不同技术之间的互操作性 构件模型 包装现有的应

10、用 平台无关性 服务提供,20,不同技术之间的互操作性,构件的互操作性,实现互操作的基本要求,即构件必须对使用到的接口具有统一的理解,并用一致的方式来描述接口。可使构件具有上下文无关性。,用一种标准的方式来定义构件间的接口。,使用中介技术,实现构件在不同技术之间的互操作,中介层将接口翻译数从n(n-1)降低到2(n-1)次,21,构件模型,参考模型 描述模型 实现模型,22,参考模型,3C构件模型,1)概念(Concept)关于“构件做什么”的抽象描述,概念包括接口规约和语义描述两部分。2)内容(Content)概念的具体实现,描述构件如何完成概念所刻画的功能。内容是对一般用户隐蔽的信息,只有

11、那些企图修改构件的工程师,才需要了解这些信息。3)语境(Context)描述构件和外围环境在概念级和内容级的关系。语境刻画构件的应用环境,为构件的选用和适应性提供指导。,23,描述模型,REBOOT模型,REBOOT(Reuse Based on Object-Oriented Technology基于面向对象技术的复用)构件模型,1)抽象(obstraction)它是构件概念的抽象性描述。2)操作(operation)它是构件所提供的操作描述。3)操作对象(operand)它描述操作的对象。4)依赖(dependency)它描述构件与外界的依赖关系。,24,实现模型,OMG的CORBA Su

12、n公司的J2EE 微软公司的COM/DCOM,这些实现模型将构件的接口与实现进行了有效的分离,每个组件的接口都将以标准的方式定义。解决了诸如一个构件怎样使得其他构件获得它提供的服务,构件怎样被命名,以及怎样在运行时发现新构件和它们的服务这些问题。,25,包装现有的应用,目的是让现存的软件在自己的构件环境下能工作,实现现存应用与其他构件的互操作。,方法,为现存的软件加上门面(或叫外观)构成包装构件,使它能在给定的构件环境中操作。,包装构件功能,提供标准构件接口提供与现存应用相关的接口,这样包装构件与现存应用代码组成了虚拟构件,称为“遗留系统构件”。,26,平台无关性,扩大构件的复用环境,服务提供

13、,“服务提供”指在构建应用构件时,所要提供的公共服务环境。需要有一种为此应用程序中所有构件能使用的、共享的构件基础设施。,解决办法使用Java技术,27,构件基础设施中考虑的问题,构件模型 一组使用这种基础设施的构件都必须遵守的协议、标准、约束以及责任。实现协作和同步的一组机制使得构件之间可以相互通信,这些机制使用一些特定的技术,并且与特定的平台相关。,基础设施处理的功能,提供通用的服务:定义构件接口的标准方法;命名、安全、事务以及事件处理等服务的管理;处理对于不同提供商在不同平台上的数据库更新。,28,基础设施作用,应用程序的开发者不需要再承受通用的服务所带来的负担了;应用程序的开发者可以将

14、注意力集中于他们业务级构件的应用功能的开发上来;应用程序的开发者无需对支持跨异构网络平台的复杂代码进行开发。,29,45 构件在整体中的位置,构件是整体中的可分离的实体;每个拥有各自范围的构件能确保其在整体中的独立性;构件可以从第三方购买;构件一个重要的需求是,不仅要在一个组织内部实现应用集成,而且要与供应链上的其他组织实现集成;构件可和其组织以外的软件集成。,30,46 部署构件,定制和配置组装接口不匹配原因和解决方法 服务粒度上的不匹配问题和解决方法更改处理,31,定制和配置,通过以下方式实现定制:提供配置数据,这些数据将作为构件运行时的参数;在构件中内建立配置或定制服务,这种配置服务可能

15、只在组装或部署时提供,在构件投入运行时,可以禁止或取消。,32,组装:把构件粘在一起,通过构件规格说明书确定构件的匹配程度。构件规格说明书是由构件的开发者提供的,它定义了构件的接口,并说明了与构件的部署相关的其他方面的问题,主要是关于如何部署的限制条件,诸如构件运行的操作系统和它所需要的构件服务。“胶水(glue)”就是处于两个接口之间,让它们能相互匹配的代码。,接口不匹配的原因,参数传递的顺序可能与被调用的服务所要求的顺序不一致;调用构件没有提供被调用的服务可能需要的参数;调用构件提供了被调用服务不要求的参数。所需的参数格式可能与传递过来的参数格式不一样,或者使用了不同的值。,使用XML语言

16、解决构件接口不匹配问题,33,使用XML语言解决构件接口匹配问题,XML(Extensible Markup Language,可扩展标记语言)是基于SGML(Standard Generalized Markup Language,标准通用标记语言)的一种通用标记语言,XML的目标主要是在Web上应用。因为XML是可扩展的,所以它的标记符号集是不受限制的。XML通过标记符来标记数据,从而说明数据的含义。,XML益处,它解决了接口传递参数顺序不同的问题。由于每个参数都由一个标记符来表示,传递参数的顺序就不必符合被调用的服务的要求。映射的管理可以与参数的顺序无关。由于使用标记符来标记每个数据字段

17、,这些标记符可以用于表示每个字段的含义。如果采用XML,词汇和术语可以标准化。如果各方面的XML中的业务词汇不匹配,XML提供了在不同的“方言”之间实现转换的机制,即通过XSL转换。,34,与遗留系统集成时,存在服务粒度上的不匹配问题,调用构件认为调用一个单独的服务就可以了,而实际却需要调用多个服务;如果不提供更多的信息,就不能调用一项服务。,解决方法,使用包装构件来解决。包装构件和被包装的应用一起被视为一个新的逻辑上的构件。这样将来可以选择更合适的构件来替换这个包装构件。,35,集成(组装)的最佳方法,全面使用一致的构件参考模型,理由,模型明确定义了应该有哪些构件。它们应该提供的服务,以及创

18、建满足这种模型的构件所需的工作,而不要使用一种随心所欲的方式简单地把东西堆砌在一起。当需求出现时,这会使构件的重新连接更为容易,同时这也创造了更为简单的总体图景。,36,更改处理,构件更改处理目的:除错或者增加功能。除错通常不会涉及构件接口或规格说明的改变,而增加功能可能涉及到这些接口或规格说明改变。,更改会引起的问题,在一种上下文环境下所做的改动在另一种上下文环境中却不可接受;当多个构件利用某一个构件的服务,而这个构件又被修改时,也会产生类似的问题。,解决问题的方法,冻结已发布的接口,然后,进行“非干扰式”的更改。当新的需求出现,而无法通过使用已有接口来满足时,构件就简单地在原来接口的基础上

19、增加一个新的接口。在保证不撤消接口的机制上进行更改。,37,47 构件规范,在构件的接口定义中,规定构件如何被客户程序发现,以及客户程序如何与之交互的规则。,构件接口定义规定,提供给客户程序使用的接口,包括可能引发的所有异常的详细信息;要求客户程序支持的所有接口,这样构件可以调用客户程序的操作。它要求的其他构件的接口,这样的构件组装环境可以确定相关的构件是否可以访问到。,接口规则和构件特征,必须要指定的其他一些构件特征,有状态还是无状态,能否重入,服务多个客户程序的能力;构件是否需要一个新的事务,能否在一个已有的事务中操作;构件是否需要将数据写入数据库定制能力安全选项操作需求(例如操作系统和所

20、需的空间等),38,48 基于构件开发的局限性与不适用之处,基于构件开发的局限性,目前,实现模块化所取得的成功还是有限的,还没有一种软件结构,使得一个模块的改变,不应该影响其他模块;把购买的构件插入到一个一致的应用中去,这个目标显然有其局限性。如何把软件应用分解为一组构件是一个问题;CBD还处在早期阶段,这意味着构件开发还没有什么统一标准,使我们能以一致的方式处理业务领域;使用的组件技术(如CORBA,EJB和COM)也处在开发的早期阶段,可以购买的组件也很少。,39,基于组件开发不适之处,预期软件不大会发生改变软件使用率低创业公司负担不起CBD没有能进行CBD的人员时间压力大,不能进行CBD,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号