构件也称为组件(component),是一个功能相对独立的具有可复用价值的软件单元。在面向对象的方法中,一个构件有一组对象组成,包含可一些协作的类的集成,它们协同工作来提供一种系统功能。可复用性是指系统和其组成部分能在其它系统重复使用的功能。软件开发的声生命周期都有可复用的价值,包括项目的组织,软件需求、设计、文档、实现,测试方法和测试用例,都是可以被重复利用和借鉴的有效资源,可复用性体现在软件的各个层次。
软甲复用的形式可分为垂直式复用和水平式复用。水平式复用是复用不同应用领域中的软件元素。标准函数库是一种典型的原始水平式复用机制;垂直式复用是在一类具有较多公共性的应用领域之间复用软件构件。由于由于在两个截然不同的应用领域之间进行软件复用潜力不大,所以垂直式复用受到广泛关注。
一.主流构件标准
为了达到复用的目的,构件应当是内聚的,并具有稳定的、公开的接口。为了是构件更切合实际、更有效地被复用,构件应当具备可变现,以提高其通用性。为了将不同软件开发商在不同软硬件平台上开发的构件组装成一个应用系统,必须解决异构平台的各构件之间的互操作问题。目前,主流的构件标准有对象管理集团(OMG)的CORBA,Microsoft的构件对象模型COM和分布式构件对象模型DCOM和sun的java企业Bean,EJB。
1.CORMA
CORMA是由OMG指定的一个工业标准,其主要目标是提供一种机制,使得对象可以透明的发出请求和获得应答,从而建立一个分布式应用环境。
在OMG的对象管理结构中,ORB是一个关键的通信机制,它以实现互操作性为主要目标,处理对象之间的消息分布。CORBA定义了一种面向对象的构件开发方法,使不同的应用系统可以共享构件。每个对象都将其内部操作细节封装起来,同时又向外界提供精确定义的接口,从而降低了应用系统的复杂性,也减低了软件开发费用。
2.EJB
EJB是用于开发和部署多层结构的、分布式的,面向对象的java应用系统的跨平台的构件架构。使用EJS编写的应用程序具有可扩展性和交互性,以及多用户的安全的特性。这些应用只需要写一次,就可以发布到任何支持EJB规范的服务器平台上。
3.COM/DCOM
Microsoft的COM定义了构件和它们的客户之间相互作用的方式,使得构件和客户端无需任何中介构件就能相互联系。DCOM扩展了COM,使其能够支持在局域网、广域网甚至Internet上不同计算机的对象之间的通信。DCOM是COM的无缝扩展,所以可以将基于COM的应用,构件、工具和知识转移到标准化的分布式计算领域中。
二.构件的获取与管理
存在大量的、可复用的构架是有效地使用复用技术的前提。对大量的构件进行有效地管理,以方便构件的存储,检索和提取,是成功复用构件的必要保证。
1.构件的获取
基于构件的软件开发中,可以通过多种不同的途径来获取构件:(1)从现有构件中获取符和要求的构件;(2)通过遗留工程,将具有潜在复用价值的构件提取出来,得到可复用的构件。(3)从市场上购买现成的商业构件;(4)开发新的符和要求的构件。
2.构件的组织
当企业获得了数量众多的构件之后,就需要建立构件库。为了给复用者在查询构件时提供方便,同时也为了更好的复用构件,必须对获取的构件进行分类,并置于构件库的适当位置。可复用技术对构件库组织的方法的要求如下所述。
(1)支持构件库的各种维护动作;
(2)不仅要支持精确匹配,还要支持相似构件的查找
(3)不仅能进行简单的语法匹配,而且能够查找在功能或行为方面等价或相似的构件。
(4)对应用领域具有较强的描述能力和较好的描述精度。
(5)管理员和用户容易使用。
构件的分类方法可以分为三大类:关键字分类法,刻面分类法和超文本组织方法。
(1)关键字分类法:关键字分类法将应用领域的概念按照从抽象到具体的顺序逐次分解为树形图结构,每一个概念用一个描述性的关键字表示。
(2)刻面分类法。刻面分类法定义若干刻画构件特征的刻面,每个面保护若干概念,这些概念描述构件在刻面上的特征。
(3)超文本方法。与基于数据库系统的构件库组织方法不同,基于全文检索技术, 其主要思想是:所有构件必须辅以详尽的功能或行为说明文档;说明中出现的重要概念或构件以网状链接方式相互连接;检索者在阅读文档的过程中可按照人类的联想思维方 式任意跳转到包含相关概念或构件的文档;全文检索系统将用户给出的关键字与说明文 档中的文字进行匹配,实现构件的浏览式检索。超文本组织方法为开发和复用构件提供了直观的多媒体方式。由于网状结构比较自由、松散,因此,超文本方法比前两种方法更易于修改构件库的结构。
三.构建复用的方法
软件开发的目的是复用,要让构件在新的软件系统中发挥作用,复用者首先必须检索与提取构件,然后理解与评价构件。
1.检索与提取构件
(1)基于关键字的检索
系统在图形用户界面上将构件库的关键字树形结构直观地展示给用户,复用者通过树形结构的逐级浏览,寻找关键字并提取响应的构件。
(2)刻面检索法。
该方法基于刻面分类法,有三部构成,分别是构造查询、检索构件和对构件进行排序。
(3)超文本检索法。复用者首先给出一个或数个关键字,系统在构件的说明文档中进行精确或模糊的语法匹配,匹配成功后,向复用者列出相应的构件说明。
2.理解与评价构件
要使库中的构件在当前的开发项目中发挥作用,准确地理解构件是至关重要的,要求构件的开发过程遵循公共标准,在构件库的文档中全面而准的说明构件的功能与行为、相关领域的知识、可适应性约束条件与例外情形、可预见的修改部分及修改方法。对构件可复用性的评价,是通过收集并分析构件的复用者在实际复用该构件的历史过程中的各种反馈信息来完成的。这些信息包括复用成功的次数、对构件的修改量、构件的健壮性度量和其他性能度量等。
3.修改构件
大多数情况下,必须对构件进行或多或少的修改,以适应新的需求。为了减少构件修改的工作要求开发人员尽量使构件的功能、行为和接口设计更为抽象化、通用化和参数化。这样,复用者即可通过对实参的选取来调整构件的功能或行为。如果这种调整仍不足以使构件适用于新系统,复用者就必须借助设计信息和文档来修改构件。
4.构件的组装
构件的组装时指将库中的构件经适当修改后相互连接,或将他们与当前的开发系统中的软件元素相连接,最终构成新的目标软件。构件组装技术大致可以分为三种:基于功能的组装技术、基于数据的组装技术和面向对象的组装技术。