石研 哈尔滨学院数学与计算机学院150086
浅谈重用技术在软件工程中的应用
石研 哈尔滨学院数学与计算机学院150086
本文从重用的概念出发,简要的介绍在软件工程领域中重用的对象、过程和障碍。
重用;软件工程
软件不断增长的成本要求找到一些方法来降低费用、节约成本,重用就是这样的一种方法。软件重用是解决软件危机、提高软件生产效率和质量的途径。在软件工程中,软件重用的思想体现在软件生存周期的各个阶段。
重用也叫再用或复用,是指同一事物不作修改或稍加改动就多次重复使用。在软件工程中,重用是指使用一个产品中的组件来简化另一个不同的产品的开发。可重用的组件可以是一个模块,一段代码,一个设计,一个用户手册的一部分等,就是对软件的成分进行重用。软件重用是提高软件开发生产率和目标系统质量的重要途径。
重用不但可以缩短开发过程、降低开发成本、提高软件产品的质量,还可以减少维护的时间和降低维护成本。重用的主要影响是对维护,因为重用的组件通常经过了良好的设计、全面测试并形成完整的文档,简化了相关的维护工作。因此,重用对维护的影响多于对开发的影响。大量使用可重用的组件来开发软件,可以从下述两个方面提高软件的可维护性:
第一方面,通常可重用的组件在开发时经过很严格的测试,可靠性比较高,且在每次重用过程中都会发现并清除一些错误,随着时间推移,这样的组件将变成实质上无错误的。
第二方面,很容易修改可重用的组件使之再次应用在新环境中,因此,软件中使用的可重用的组件越多,维护也就越容易。
具体地说,可能被重用的软件成分主要有以下几种:
(1)项目计划。跨项目重用软件项目计划的基本结构和许多内容,可以减少用于制订计划的时间,降低与建立进度表和进行风险分析等活动相关联的不确定性。
(2)成本估计。在不同项目中经常含有类似的功能,可以只做极少修改或根本不做修改就重用对该功能的成本估计结果。
(3)体系结构。即使在考虑不同的应用领域时,也很少有截然不同的程序和数据体系结构。因此,有可能创建一组类属的体系结构模板(例如,事务处理体系结构),并把那些模板作为可重用的设计框架。
(4)需求模型和规格说明。用传统软件工程方法开发的分析模型(例如,数据流图),是可重用的。面向对象开发方法中,类和对象的模型及规格说明也是经常被重用的对象。
(5)设计。用传统方法开发的体系结构、数据、接口和过程设计结果,是重用的候选者;系统和对象设计也是可重用的。
(6)源代码。用兼容的程序设计语言书写的、经过验证的程序构件,是重用的候选者。
(7)用户文档和技术文档。即使针对不同的应用,也有可能重用用户文档和技术文档的大部分。
(8)用户界面。G U I(图形用户界面)软件可占到一个应用程序的60%代码量,经常被重用,重用的效果非常显著,这可能是最广泛被重用的软件成分。
图1 软件重用的一般过程
(9)数据。在大多数被重用的软件成分中,被重用的数据包括:内部表、列表和记录结构,以及文件和完整的数据库。
(10)测试用例。如果设计或代码构件被重用,相关的测试用例也会一同被重用。
软件成分重用的过程如图1所示。
从图中可以看出,软件重用的一般过程分成以下几步:
抽象:对一个可重用的软件成分,首先要对其进行“抽象”概括,即描述该软件成分的本质、功能、适用范围和特点,以此作为关键字,方便使用者在调用时进行检索;
存储:以关键字作为索引,放置在“可重用的软件成分库”中备用;
检索:在组建(集成)新系统时,利用关键字,根据需要从可重用的软件成分库检索挑选适合新系统功能要求的软件成分;
实例化:对选取的软件成分进行简单的修改调试,变成完全适合新系统要求的软件成分;
系统集成:最后进行系统集成,完成新系统的组建。
如果实例化(修改、调整)的软件成分经过实际运行检验后,被确认可以成为新的可重用的软件成分时,因及时对其进行抽象概括,作为新的可重用的软件成分放置到可重用的软件成分库备用。
软件重用是一项比较吸引人的技术,如果重用已存在的组件,就不需要再去设计、实现、测试该组件。平均来说,软件产品只有大约15%真正符合最初的意图,另外的85%理论上是可以标准化的,并且可以被在别的产品中重用。85%基本是重用率的一个理论上限,但在实际中只能实现40%左右的重用率。
这是因为重用会面临这样的一些障碍:
(1)很多软件专业人员都相信“一个程序只有自己编的才是好的”,宁可自己从头编写一个程序,也不愿重用别人编写的程序。对此,可以从管理方面入手,采取相关措施提倡重用。
(2)重用的对象最好是一个自身没有错误也不会给相关程序带来错误的程序。为达到这一目标,应该在重用之前,对要重用的目标进行详尽的测试。
(3)可重用的组件很多,如何去进行存储和管理以便进行检索去重用?可以使用相应的数据库技术去解决这个问题。
(4)对于合同软件会产生司法问题。按照软件开发组织和用户之间签订的合同,软件产品是属于用户的。因此,在为不同用户开发的软件产品中进行重用会构成侵权。
(5)重用的对象是现成的软件产品组件时,由于相应的源代码对软件开发组织来说是保密的,因此相应的使用这种重用组件的软件就被限制了可扩展性和可修改性。
(6)重用会增加成本。重用时需要考虑三个成本:建造可重用组件的成本、重用它的成本以及定义和实现一个重用过程的成本。仅仅建造可重用组件就将增加至少60%的成本。
这些障碍只是一些主要的障碍,在原则上是可以克服的,重用技术正在被不同的软件开发组织应用到软件开发和维护过程中。
经过近年来软件产业界的实践,通过积极的软件重用可以获得可观的商业效益,并且产品质量、开发生产率和整体成本都得到改善。在软件工程领域中,重用技术正在逐步被人们重视,其应用也会越来越广泛。
[1]张海藩.软件工程导论.清华大学出版社. 2005
[2]梁颖红.软件工程理论与实践.哈尔滨工业大学出版社.2008