目录 |
软件重用是软件工程研究的重要课题。它是指在构造新的软件系统的过程中利用已有的软件成分。这里所说的已有的软件成分包括十分广泛的内容,如数据,文档,模式,体系结构,知识,方法和环境等多方面的内容。从广义上说,软件重用包括3个层次:(1)产品重用,如代码数据软件模式体系结构等的重用;(2)知识重用,如方法、标准、经验、领域知识、软件过程等的重用(3)环境重用,如系统程序、软件工具、开发环境等的重用。
(一)实现层的软件重用
实现层的软件重用是指已有的程序代码的重用。它包括以下3个方面:
(1)代码提取
软件开发人员对已有的程序代码,经理解、选择后,把适合于重用的代码据取出来,并进行必要的修改。使其适用于当前的上下文。这种可重用对象是最低程度的抽象,软件开发人员不但必须知道有关的规格说明。还必须清楚它的实现部分。一般来说,因为在理解修改及测试方面的代价。使用这种重用对象并不能有效地提高软件开发效率,提高软件的质量。
(2)源代码部件
源代码部件是专门编写经过严格测试后。专用于重用目的代码段。高级程序语言程序的一些程序单元,如过程,函数,包,类等。通常用于完成一个完整的功能,有良好的输入/输出界而,可以作为可重用的源代码部件。源代码部件的抽象程度比代码提取高,软件开发人员只需知道源代码部件的抽象规格说明部分即可。不必考虑它的实现部分。因为源代码部件是为重用目的专门编写的,其界面清晰。抽象规格说明明确,故使用方便而且质量高。目前使用得十分广泛。例如,在数值计算领域中的数学函数库。作为软件可重用对象,使用得十分成功。许多商品化的软件开发环境均有以重用为目的源代码部件库(函数库)。用标准函数的形式向用户提供大量可重用的源代码部件。但是,这种方法的不足之外在于源代码部件仍然是基于代码这一较低层次的抽象上,与实际问题领域有较大的距离。
(3)软件逻辑结构
也称为软件模式,是可重用源代码部件的形式化扩充。这一层次的可重用对象着重于对数据结构、逻辑结构和过程的抽象。软件逻辑结构主要描述软件的各个成分(包括模块,数据结构等)以及它们之问的关系(如调用与被调用,参数传递关系等),它们可以作为一个整体被重用。对于基于形式化规格说明的软件逻辑结构,其可重用对象的选择、理解。特化均较为容易,也便于使用自动工具支持重用过程。由于软件人员工作于较高层次的抽象,能明显地提高软件生产率。但是,目前还缺乏描述软件逻辑结构的较好的形式化规格说明方法。
(二)设计层的软件重用
与编码阶段相比,软件设计阶段在软件生命周期中占有更重要的地位。重用已有的软件系统的设计信息,可以更好地降低软件开发成本,提高软件生产卑。设计层的软件重用包括以下向个方面:
(1)甚高级语言
甚高级语言(VHLL]也称为可执行的规格说明语言。它允许开发者使用比高级语言更高层次抽象的规格说明描述用户需求。产生可执行系统。作为一种语言,甚高级语言与高级语官一样,具有独自的语法语义,可通过编译,从需求规格说明自动影射到可执行的代码。甚商级语言通常以集合论,谓词逻辑等高层次的数学抽象作为基础。
利用越高级语言,系统的设计信息作为可重用软件成分重用,而且甚高级语言比高级语言更接近于用户语言,表达自然、筒结。因此能有效地减少开发人员的设计乃至编码阶段的工作量,提高软件的开发效率。但其缺点是,现有的甚高级语言执行效率低,达不到实用的程度。但是,在硬件效率大幅度提高的基础上,甚高级语言的效率可以逐渐达到可以被接受的程度。另外,使用广谱怕让高级语言(即混合高级语亩和甚高缎语言的一种语言)的优化功能,还可以用高级语言成份对甚高级语言成份进行优化,提高甚高级语言的运行效率。因此,从长远观点来看,甚高级语言是实现高层次软件重用的重要途径。
(2)应用生成器
应用生成器类似于程序语言的编译器,它将输入的程序规格说明自动转换成可执行的程序。应用生成器已广泛用来生成数据库统计、分析等多种用途的程序。由于应用生成器直接来源于特定应用领域中的非常高层的抽象,因此十分接近原始的系统需求。
使用应用生成器进行重用,实质上重用了整个系统的设计过程。实现的算法和数据结构都是自动选择的。如果要在某一应用领域编写出多个类似的软件系统,或者在软件件生命期中系统要修改甚至重写多次,则使用应用生成器是十分有效的。因为一个应用生成器往往针对特定的应用领域,因此它的实现效率也比较高。YACC是生成器中最著名、最成功的实例之一,它是一个语法分析器生成器,根据开发人员给出的语法表示,自动生成对应的语法分析器的源代码。应用生成器是较为广泛应用和成功软件的可重用对象。不足的是,应用生成器只针对特定应用领域,开以出通用的生成器十分困难,从而限制了它的使用范围。
(3)变换系统
利用变换系统开发软件的过程是:首先用高层规格说明语言描述软件系统的需求,然后根据变换规则,将规格说明转化为可运行系统。在变换过程中,可以有人的干预。因此变换过程一般可以看作是一种交互的编译过程。变换系统根据变换规则把一个程序变换成另一程序,后者在语义上与前者相同,但在性能上要优于前者。利用变换系统,可以逐步得到运行行为越来越好的程序。
利用变换系统可以实现以下重用:(1)原型重用。在变换系统中,原型可作为系统的初始规格说明,通过不断变换和完善,成为实用的可执行系统。(2)开发经历重用。使用变换系统,开发人员的修改可以只在需求层次上进行,对于某些局部改动,原先的开发经历,即变换序列的大部分可被重用,而不须重新设计。(3)变换规则。变换规则由匹配模式,应用条件和替换模式构成,大部分变换规则可被重用于多种不同的情况。
变换系统是一种较为成功的可重用对象。
3.体系结构层的软件重用
最有效的软件重用是在软件体系结构层的重用。
软件体系统结构重用是指将软件的框架组织、全局结构等作为一个整体加以重用。与软件逻辑结构相比,软件体系结构更着重于系统与各子系统,各子系统之间的相互关系而非数据结构和算法。与应用生成器相比,均是重用系统设计,但应用生成器一般只适用于特定应用领域,隐含重用体系结构的信息,而可重用软件体系结构则通常是显式重用软件体系结构,并可以通过集成其它体系结构。建立新的更高层次的体系结构。软件体系结构的抽象直接来源于应用领域,可以用领域语言描述。从领域语言描述到实现可以全部通过自动映射来实现,开发者可通过选择特定的体系结构来适应不同应用的需求。
软件体系结构的重用吸取了其它软件可重用对象的优点,是目前最理想的可重用软件对象。建立一个完备的软件体系结构库,以及用于支持管理体系结构构件的软件开发环境,形成一种新的基于软件重用的软件开发范型,将对今后的软件开发产生重要的影响。