十七章
十七章的主要是讲基于可复用、标准化组件组合的软件复用方法。需要了解,1基于组件的软件工程是有关基于组件模型的标准化组件开发以及将其组成应用系统等内容2了解组件和组件模型的含义3了解面向复用的CBSE过程的主要活动和基于复用的CBSE过程4了解在组件合成过程中出现的困难和问题。
很多新的业务系统是通过配置现成的系统开发的。当一个公司因为现货系统不能满足他们的需求时,就不能使用现成的系统,他们因而需要进行专门开发,对于定制软件,基于组件的软件工程是一种有效的、面向复用的开发新的企业系统的方法。
基于组件的软件工程是软件系统系统开发的基于复用的方法,它的产生是由于设计者们在使用面向对象的开发过程中所受到挫折,这种挫折来自于面向对象开发不能够实现像人们最初所期待的那样能完成广泛的复用,单个对象类有太多细节且太特殊,通常需要在编译时间与应用绑定。
组件是比对象更高层次的抽象,是由它们的接口来定义。
处理复杂性,并更快交付软件的方法是复用软件组件而不是重新实现软件组件,
基于组件的软件工程的要素主要是1独立组件由它们的接口完全定义,2组件标准使组件集成变得更为容易3中间件为组件集成提供软件支持4开发过程是一种适应于基于组件的软件工程的开发过程。
基于组件的开发体现了良好的软件工程实践,它不仅对于使用组件来设计系统是有意义的,即使你不是复用这些组件,而是开发这些组件,也是很有意义的。基本的CBSE是支持造易理解和可维护软件的可靠和有效的设计原则,例如1组件时独立的,因此它们不会影响彼此的操作,2组件通过良好定义的接口进行交互3组件基础实施提供一些可用在应用系统中的标准服务。
CBSE最初的动机是要支持复用和分布式软件工程,CBSE现在是软件工程中的主流方法,它是建立一个系统的好的方法。(基于组件的软件工程(component-based software engineering,CBSE))
实际上,这些多重标准阻碍了CBSE的采用,针对这些问题,发展了组件作为一项服务的概念和提出这些标准来支持面向服务的软件工程,面向服务的软件工程是一种基于组件类型的软件工程
在CBSE业界,一般观点认为组件是一个独立的软件单位,可以与其他组件构成新的软件系统,不同的人对软件组件提出不同的定义,其一,组件是一种软件元素,与某个组件模型要求相一致,按照组成标准无需修改即可独立进行部署和组合,这个定义实质上是基于标准的,遵循这些标准的软件单元即为一个组件,,另外一种定义是把重点放在了组件的关键特征上:组件时具有合同定义的接口和显式的上下文依赖,可独立进行部署的并服从于第三方的组成的软件单元。
这两个定义都是基于组件作为一个元素的概念,它是包含在一个系统中,而不是把组件作为一项服务被系统引用。
定义的共同性在于它们都认为组件时独立的并且是系统最基本的组成单元,通过组合这些定义我们可以得出组件的一个更好的定义
考察一个组件有用的方法是将其看成独立的服务供应者,当系统需要某一服务时,会调用提供相应服务的组件,无需知道此组件位于何处,也无需知道该组件时用什么程序语言开发的。
这里需要知道的是:1标准化2独立性3可组合性4可部署性5文档化
将组件看成是服务提供者,强调的是可服用组件的两个关键特性1组件时独立可执行的实体,这是由它的接口定义的,不必知道组件的源代码的任何信息来使用它,它可能作为一种外部服务来引用,也可能直接包含在一个程序中。2组件所提供的服务可以通过其接口得到,而且所有的交互都是通过接口实现的,组件接口表现为参数化的过程,其内部状态是不暴露的。
组件有两种关联接口,1提供接口定义了组件所提供的服务2需要接口如果一个组件要进行正确的操作,指定系统其它组件必须提供哪些服务。
组件模型定义了组件实现、文档化以及开发的标准,这些标准使为组件开发者确保组件的互操作性而设立的,它们也是为那些提供中间件执行基础设施的供应商支持组件操作而设立的。
人们在程序中使用组件需要知道的信息以及组件应该如何部署,1接口,组件时通过它们的接口来定义的,2使用,为使组件远程分布和访问,需要给组件一个特定的名字或句柄
组件元4数据是组件本身相关的数据,如组件的接口和属性信息,组件时通用实体,在部署的时候,必须对组件进行配置来适应一个应用系统。
关于部署,组件模型包括一个描述,此描述说明应该如何打包组件使其部署称为一个独立的可执行实体。
不可避免的是,当出现新的需求,组件就必须做出改变或者被替代。
对于实现为程序单元而不是外部服务的组件来说,该组件模型规定了必须由支持组件执行的中间件所提供的服务。
组件模型实现提供的服务包括以下两种1平台服务2水平服务、
中间件实现组件服务,并提供这些服务的接口,为利用组件模型基础设置所提供的服务,可以认为组件时被部署在一个容器中的。
CBSE过程是支持基于组件的软件工程的软件过程,它们考虑了复用的可能性,以及在开发和使用可复用的组件中所涉及的不同的过程活动,从最高层次来说,存在两种类型的CBSE过程,1面向复用的开发2基于复用的开发。
其中1组件获得是得到面向复用的组件或开发成一个可服用的组件的过程2组件管理是有关管理一个企业的可服用的组件,以确保它们得以正确分类和储存,使面向复用称为可能3组件认证时检查组件和证实这个组件符合它的描述的过程。
面向复用的CBSE是开发可复用的组件和通过一个组件管理系统使它们的复用称为可能的过程。
为了使组件可以复用,要改写和拓展这些组件以创建更通用的更实用的复用版本。
另外需要考虑进行复用的成本问题,其中异常处理是一个十分困难的问题,原则上,所有异常应该作为组件接口的一部分。组件不应该处理自身的异常,因为每一个应用程序都有自己对异常处理的需求,存在两个问题:
1发布所有的异常将导致太多接口,这要回更加难以理解,这可能会丢掉组件的潜在用户2组件的运行可能依靠局部异常处理,改变它将严重影响组件的功能。
做复用项目的公司在组件称为可复用组件之前,需要执行某种形式的组件认证。