简介
可重用组件是指通过对以往组件进行局部修改或者不修改就可以组成新的软件。可重用软件是以可重用组件为基础。可重用组件设计的目的是更好地实现可重用组件。
组件组件技术是 90 年代初出现的一种新技术,它是在结构化设计和面向对象技术的基础上发展起来的,是面向对象技术之后的软件开发的标准方法体系,是面向对象的开发技术的延伸 。因此,组件具有面向对象的特征。由于组件能够独立地实现其功能而不依赖与其它外部环境,它能够被高度的重用。在理想的环境下,组件的实现及应用与开发语言和平台无关 。因此组件具有功能独立性 、 高度的可重用性 、 与语言和平台无关性等特点 。建立一个组件时应该考虑:①组件应该是完整的;②组件应该重点解决一个问题;③组件及其对象方法、属性和事件应该容易理解;④组件应该具有新功能;⑤在安装组件之前应该调试它们; ⑥考虑使用第三方组件开发工具。
可重用组件的描述组件的描述分为两个部分:组件说明部分和组件实现部分。 任何可重用组件都必须要有特征说明( 重用组件的类型信息) 和规则说明( 组件的动态行为),分别描述重用组件的静态特征和动态语义。另外,在描述重用组件的信息中还应包括组件接口信息,例如组件是客户组件还是服务者组件。一个组件可以有多个“ 提供”接口和“ 要求”接口。 甚至还可以包括组件的配置特性,例如其开发环境( 编程语言、对象模型) 和运行环境( 操作系统等)。
可重用 组件的存储目前比较广泛的存储方法是将组件分类存储。分类的模式主要有:①基于关键词的面分类模式和枚举分类模式。 面分类模式可同时考虑部件几种不同方面或特性;枚举模式是一种一维的信息分类模式。 ②基于功用与环境分类模式。 功用描述组件的功能,包括: 系统类型、功能范围和应用领域。
检索检索组件库的方法有三种,第一种是信息科学索引方法。 如以关键字或者模糊匹配为主的检索系统,它主要适用于小型重用组件库的查找。 第二种是基于知识的方法。 它用于自动检索机制的系统中。通过检索控制规则库( 存有各种检索单位的检索规则) 和字典库( 存有同义词、包含关系词、领域关系词等),在推理机的作用下,根据查询要求进行推理,查出满足条件的目标。 检索方式可采用交互式语义网络联想查询、条件查询、专家选择查询等。 典型的检索方法如:Wood 等应用概念依赖模型,采用框架形式描述和检索组件;Tarumi 提出的支持面向对象的软件重用环境中使用的关系描述检索,方法是, 当用户给出对象名、属性、关系和操作的输入,由基于规则的机制匹配相应的组件。 第三种是超级文本方法。 它是前两种方法的结合, 其表示形式直观、易于使用1。
组件组装的基本过程确定系统总体构架;
快速构筑总体框架;
确定所需的组件,并将所需的组件尽量分解成原子组件并检索组件;
将检索出的原子组件尽量绑定成较大的复合组件。 根据组件的接口进行组装;
将复合组件、原子组件和用户自定义的组件组装成目标系统。
在绑定过程中,如果两个组件可以构成一对客户/ 服务者,就将它们绑定起来,否则就要用到适配器。如果客户和服务者的接口兼容但并不完全相同,则可以用适配器对客户或服务者进行调整,如果没有与某组件匹配的组件,则可以产生一个适配器模板,留给用户填写客户或者服务者组件,即用户自定义的组件。 利用可重用组件组装成目标系统的过程表示如下:
要求组件均是符合 COM 标准的组件,如果是普通组件,则要求转换为 COM 标准组件,从而使组件可以在许多编程环境下重用。 这样组装时比较容易。 组件可以在某个容器或专门的组装工具内进行组装。 很多工具都提供了此功能。
常见组件模型在组件规范化的过程串,许多公司做了很多的努力并取得了一定的成功。下面介绍一下常见的组件模型。
(1)CORBA :CORBA 是由 OMG( 对象管理集团 ) 开发的工业版本,是用来解决以下的问题:系统独立于操作系统,系统基于网络且功能分布开各机器之间, 组件开发独立于语言。
(2)COM( 组件对象模型 ) :COM 是由微软公司提出并实践的组件模型。 COM 是用于“ 便利系统能够通过独立开发的二进制组件,动态、 有效地合成系统的组件重用” [BOX 1998] 。 COM 组件是二进制层次上的组件复用,是基于接口的编程, 模块间的耦合度低,易于部署和软件的升级。
(3)EJB 组件: EJB 是用于开发安全、 可扩展、 事务型和多用户组件的一种分布式组件模型。 EJB 可以部署在分布式多层体系结构环境中的服务器端的软件组件,它允许把应用程序逻辑与系统级服务分开,使系统开发人员集中精力编写具体的业务处理问题,而不必关心系统的编程。每个 EJB 可由一个或多个 Java 对象组成,每个 EJB 是按照相同的规范开发的,Bean 之间可以相互调用,实现任务的分解和进行业务处理, 具有非常高的扩展性2。
(4) .Net 组件:.NET 就是借鉴 Java,采用 XML,并远远超出 Java 的新的体系。.NET 允许添加类似关键字的描述性声明来批注编程元素的元数据,可以实现被封装的对象类、 类树、 功能模块、 软件框架、 软件构架 ( 或体系结构 ) 、 文档、 分析件、 设计模式等。