浅析软件复用技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

浅析软件复用技术
作者:王茂蛟
来源:《电脑知识与技术·学术交流》2008年第14期
摘要:软件复用是将已有的软件及其有效成分用于构造新的软件或系统软件,是提高软件质量和生产效率的的基本途径。

本文主要介绍软件复用的基本概念、分类,软件复用技术以及基于复用的软件开发过程。

关键词:软件复用;软件复用技术;基于复用的软件开发过程
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)14-20940-02
1 软件复用的概念
所谓软件复用是指重复使用“为了复用目的而设计的软件”的过程。

而可复用软件则是指为了复用目的而设计的软件。

软件复用更强调的是复用的目的。

它是一种系统化的方法,为了复用而进行设计。

为了复用而开发。

并且要有效地组织和管理这些复用产品。

方便人们查找和使用。

基于复用产品进行开发。

由此可见。

并非所有重复使用软件的行为都是软件复用过程。

例如:重复使用“并非为了复用目的而设计的软件”或在一个应用系统的不同版本间重复使用代码。

这两类行为都不属于严格意义上的软件复用。

软件复用一定要有积累。

首先要为了复用目的设计很多的复用产品,有了一定的积累后才能进行软件复用。

2 软件复用的分类
软件复用就是将已有的软件成分用于构造新的软件系统,它不仅仅是对程序的复用,它还包括对软件生产过程中任何活动所产生的成品的复用。

按抽象程度的高低,可以划分为如下的复用级别:
2.1 代码的复用
包括目标代码和源代码的复用。

当前大部分编程语言的运行支持系统都提供了连接、绑定等功能来支持目标代码的复用。

源代码的复用级别略高于目标代码的复用,程序员在编程时把一些代码段复制到自己的程序中,但这样往往会产生一些新旧代码不匹配的错误。

要想大规模
的实现源程序的复用只有依靠含有大量可复用构件的构件库。

比如“对象链接及嵌入”(0LE)技术,既支持在源程序级定义构件并用以构造新的系统,又使这些构件在目标代码的级别上仍然是一些独立的可复用构件,能够在运行时被灵活的重新组合为各种不同的应用。

2.2 设计的复用
设计结果比源程序的抽象级别更高,因此它的复用受实现环境的影响较少,从而使可复用构件被复用的机会更多,并且所需的修改更少。

这种复用有三种途径:第一种途径是从现有系统的设计结果中提取一些可复用的设计构件,并把这些构件应用于新系统的设计;第二种途径是把一个现有系统的全部设计文档在新的软硬件平台上重新实现,也就是把一个设计运用于多个具体的实现;第三种途径是独立于任何具体的应用,有计划地开发一些可复用的设计构件。

2.3 分析的复用
这是比设计结果更高级别的复用,可复用的分析构件是针对问题域的某些事物或某些问题的抽象程度更高的解法,受设计技术及实现条件的影响很少,所以可复用的机会更大。

复用的途径也有三种:①从现有系统的分析结果中提取可复用构件用于新系统的分析;②用一份完整的分析文档作输入产生针对不同软硬件平台和其它实现条件的多项设计;③独立于具体应用,专门开发一些可复用的分析构件。

2.4 测试信息的复用
主要包括测试用例的复用和测试过程信息的复用。

前者是把一个软件的测试用例在新的软件测试中使用,或者在软件作出修改时在新的一轮测试中使用。

后者是在测试过程中通过软件工具自动地记录测试的过程信息,包括测试员的每一个操作、输入参数、测试用例及运行环境等一切信息。

这种复用的级别,不便和分析、设计、编程的复用级别作准确的比较,因为被复用的不是同一事物的不同抽象层次,而是另一种信息,但从这些信息的形态看,大体处于与程序代码相当的级别。

由于软件生产过程主要是正向过程,即大部分软件的生产过程是使软件产品从抽象级别较高的形态向抽象级别较低的形态演化,所以较高级别的复用容易带动较低级别的复用,因而复用的级别越高,可得到的回报也越大,因此分析结果和设计结果在目前很受重视。

3 软件复用技术
软件复用技术可分为合成技术和生成技术两大类:
3.1 合成技术
在合成技术中,构件(Building blocks)是复用的基石。

其软件方法以抽象数据类型为理论基础,借用了硬件中集成电路芯片的思想,即将功能细节与数据结构隐藏封装在构件内部,并有精心设计的接口。

构件在开发中就类似于芯片的使用,可组装成更大的构件。

构件是对某一函数、过程、子程序、数据类型、算法等可复用软件成份的抽象,利用构件构造软件系统,可提高生产率、缩短开发周期。

构件完全不需修改的情况只是一种理想的情形,在实际工作中,修改和增删是难免的。

构件组合成更大的构件的方式有三种:⑴连接:通常标准库中的标准函数是靠编译和连接程序与其它模块一并合成系统的。

⑵消息传递和继承:例如Smalltalk面向对象的程序结构体系,就是通过消息传递和继承机制把对象与相关的其它对象类联系起来合成一个系统的。

⑶管道机制:例如UNIX中用管道(Pipe)连接Shell命令,使用前一命令的输出作为后一命令的输入,用管道机制把多个Shell命令连接在一起完成一个更复杂的功能。

3.2 生成技术
生成技术利用可复用的模式,通过生成程序产生一个新的程序或程序段,产生的程序即是模式的实例。

可复用的模式分为:代码模式和规则模式。

前者的一个示例是应用生成器,可复用的代码模式就存在于生成器自身,通过特定的参数替换,生成抽象软件模块的具体实例。

后者的一个示例是变换系统,它是变换规则的集合;在其变换方法中通常采用超高级的规格说明语言,形式化地给出软件需求规格说明,利用程序变换系统,把用超高级规格说明语言编写的程序转化成某种可执行语言的程序。

此种超高级语言抽象能力高,逻辑性强,形式化好,便于软件使用者维护。

与构件的复用相比,模式复用主要用于某些具体的应用领域。

一般说来,构件的描述应选用一种不依赖于具体机器、具体语言的较抽象的语言,否则会受机器和语言的限制而降低可复用性。

例如,用某种高级语言编写的构件将受到该语言中的数据结构和控制结构的限制,有时在其它语言中不易找到相应的概念和结构。

另外,大批构件必须用一个数据库进行管理。

总之,构件方法支持自底向上的软件开发方法,相应的构件应具有硬件独立性、软件独立性、可读性、可理解性、可修改性和正确性。

而变换方法侧重于程序的推导方式,推理规则,支持自顶向下的软件开发技术;因其形式化程度高,抽象性强,一般软件开发者不易掌握,在描述某些实际问题时也有困难;再者,经过多次变换得到的可执行程序的效率较低,对时间和存储空间的需求较高,这都是需要解决的问题。

在实际应用中可将这两种方法结合使用,取长补短,再吸收人工智能的研究成果,以知识库为辅助工具,可促进复用技术的成熟、拓展和深化。

4 基于复用的软件开发过程
应用系统的软件复用由可复用资产的开发、管理、支持和复用四个过程组成。

4.1 可复用资产的开发
此开发过程要界定并提供可复用资产,以满足应用工程师的需要。

可复用资产的来源可以是新开发的、再建设的、购置的。

可复用资产有多种类型,如代码、接口、体系结构、测试、工具、规范等。

此开发过程的活动包括:清理现有的应用软件和资产,列出其详细清单,并进行分析;进行领域分析;体系结构定义;评估应用工程师的需求;进行技术改革;可复用资产的设计、实现、测试和打包等。

4.2 复用
复用过程是使用可复用资产来生产客户合同应用软件的过程。

此过程的活动包括:检验领域模型;收集和分析最终用户的需求;从可复用资产中挑选合适的构件,并进行必要的客户化调节;设计和实现可复用资产未覆盖到的部分;组装出完整的应用软件,对之进行测试。

4.3 支持
支持过程的任务是全面支持可复用资产的获取、管理、维护工作。

此过程的活动包括:对所提供的可复用资产进行确认;对构件库进行分类缀目;通告和分发可复用资产;提供必要的文档;从应用工程师收集反馈信息和缺陷报告。

4.4 管理
管理过程从事计划、启动、资源、跟踪。

并协调这几个过程。

管理过程的活动包括:对新资产的获取工作优先性排队;安排其施工日程;分析其影响;解决有关的矛盾;进行培训;进行指挥。

5 结束语
使用成熟的软件复用技术可以提高软件开发效率,改善软件质量,缩短软件开发周期,降低软件开发成本,同时还可促进软件复用技术自身的进一步发展与完善。

参考文献:
[1] 张海藩. 软件工程导论(第3版)[M]. 北京:清华大学出版社,1998.
[2] 黄柏素, 梅宏译. 软件工程实践者的研究方法[M]. 机械工业出版社,1999.。

相关文档
最新文档