一、构件的概念 目前对构件的定义还没有一个统一的描述。比较有代表性的是Szyperski提出的构件定义:"软件构件是一个仅带特定契约接口和显示语境依赖关系的组合单元,软件构件可以独立部署,易于第三方组装"。本人研究各种有代表性的定义后,认为构件是指软件开发中能够独立部署并被其他系统复用的单元,它可以小到一段二进制代码、一个图,也可以大到系统分析、文档、包,甚至是子系统等等。可复用的构件应该具有可定制性、自我描述性、有用性、易读性、兼容性、移植性等特点。 二、构件复用的难点 1.技术因素 即使同一类型的系统都具有不同的需求、功能,更何况不同类型的系统,构件复用的开发要做到被一种或者多种系统复用,从功能到对外接口都必须匹配,或者修改一些参数、属性等就能被复用,这种难度是可想而知的。当构件达到较大的数量时,构件的选择也是非常困难的。用户要从构件库中选取想要的构件,必须做大量的筛选,而这并不是一件轻而易举的事。基于构件复用的软件开发方法和软件过程是一个新的研究实践领域,需要一些新的理论、技术及支持环境。 2.人的因素 软件开发人员在长期的软件开发工作中有自己的一套思维方式和工作方式,很多开发人员情愿花大量的时间用自己的习惯方式去开发出自己想要的功能模块,而不愿意把时间放在构件数据库去搜索自己想要的构件。 3.管理因素 在软件生产的管理中,沿习了一些与复用的目标很不协调的制度与政策,如计算工作量时,对复用的部分打很大的折扣,甚至不算工作量;另外,很多软件开发人员不是在软件开发时就按照构件复用的思想去设计系统框架,而是在软件开发的一个阶段完成后,在这些已经完成的模块中寻找以后可用的复用单元。这种方式下产生的构件,复用率是非常低的。 4.教育因素 构件技术目前虽然越来越受到重视,但是毕竟它出现的时间不是很长,所以目前缺少关于构件复用方面的教材和书籍,更别说在课堂上给学生讲解了。 5.法律因素 在法律上还存在一些问题,例如,一个可复用构件在某个应用系统中出现了错误,而构件的开发者和应用系统的开发者不是一个厂商,那么责任应该由谁负?此外,在版权、政府政策等方面也存在一些悬而未决的问题。 三、构件的分类 1.系统构件和组织构件 系统构件是指系统总体框架构件。系统构件的开发必须在一定规范下进行,此规范不仅是系统构件的开发规范,而且包括嵌入到系统构件中的子构件的开发规范。系统构件属于软件体系结构层次上的抽象,属于最高层次上的软件复用抽象,因此其复用性最好。组织构件是嵌入到系统构件中的子构件。 2.分子构件和原子构件 分子构件和原子构件是构成系统构件、组织构件的子构件。其中,分子构件又可复用原子构件,通过原子构件组装而成。原子构件是最小粒度的构件,它不能通过复用方式构造,一般包括一些最基本的数据结构以及与相关算法封装在一起的基本类。系统构件和组织构件可复用分子构件、原子构件构造,而分子构件和原子构件只能参与系统构件、组织构件的组装,但不参与最后新的应用系统的组装。从不同的角度出发,还可将构件分为如下几类: ①根据构件复用方式,分为黑匣构件和白匣构件。前者可以即插即用,后者须经修改方可使用。②根据使用范围,分为通用构件和专用构件。③根据构件粒度大小,分为小、中、大型构件。小型构件包括窗口、按钮等基本构件;中型构件包括录入、查询、插入、删除等功能构件;大型构件包括档案管理、财务管理等子系统级构件。⑤根据构件复用时状态,分为动态构件和静态构件。如OLE和DLL属于动态构件,原代码属于静态构件。⑤根据构件功能用途,分为系统构件、支撑构件和领域构件。系统构件运行于整个构件集成环境和运行环境;支撑构件在构件集成环境和构件库管理中使用;领域构件则是为专用领域而开发的构件。⑥根据构件的来源,可将构件分为自开发构件和第三方构件。 四、计算机软件复用技术的研究与应用 应用软件在开发过程中都会有重复,而这些重复都可以成为软件复用的内容。其中包括就四个程序:领域和需求分析阶段的复用、设计阶段的复用、编码阶段的复用、测试阶段的复用。 而计算机软件复用技术可以根据抽象程度将软件复用技术分为以下级别: 1.代码复用 代码复用主要是依靠构件库来进行源程序复用,包括源代码和目标代码的复用。而这些目标代码复用的历史悠久,级别低,其中最低级的是目标代码复用。就目前而言,大多数的编程语言运行系统都有绑定和连接等功能,这样就可以对代码的复用进行直接应用。 |