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