软件复用在软件工程开展中的应用探析

时间:2022-09-28 07:04:13

软件复用在软件工程开展中的应用探析

软件的重复设计造成了软件开发中的大量浪费,随着软件产品的规模越来越大,人们开始逐渐意识到软件复用的重要性,并开始了针对软件复用领域的研究和实践。通过实现软件通用模块的开发,达到软件复用的目的,能够进一步提高软件开发效率,使软件具有易变更和易维护的特点。本文通过简要介绍软件复用的重要性,软件复用的几个层次,重点介绍了软件复用的几种技术以及软件复用在软件工程中的应用步骤。

【关键词】软件复用 软件工程 复用技术

1 软件复用在软件工程中的重要性

随着软件规模的不断增大,软件的开发周期逐渐加长,软件的维护成本也在随之增加,为了解决目前软件开发过程中的一些问题,相关的软件设计人员提出了软件工程的概念。在软件工程的实际运用当中,软件复用的概念越来越受到人们的重视,是解决软件危机的重要途径之一。其重要性主要体现在以下几个方面:

1.1 符合软件设计自身的特点

通过对软件设计多年的开发经验可知,在大型的软件系统中,有百分之六十以上的部分具有直接重复或者是间接重复的可能性,虽然不同软件系统的功能需求不同,软件的规模也不尽相同,最终实现的功能也有所不同,但是软件重复的比例却没有显著的降低,始终维持在百分之六七十左右。这就说明软件的复用符合软件设计自身的一些特点,例如:对于大型的网站来讲,注册和登陆部分就是重复率较高的部分之一,几乎所有的大型网站都需要做到这两项基本的功能,因此软件复用符合软件设计自身的特点,所以软件复用的概念应该被应用到软件工程当中。

1.2 实现软件工程的重要方法

软件工程是一些软件设计人员经过多年的经验得出的管理软件设计过程的重要方式,而软件复用是软件工程中的重要内容,这是因为:软件工程被提出其中一项重要原因是软件设计面临着很大的危机,这些危机使得软件的设计、变动和维护变得更加困难,软件工程能够很好地解决这一问题。而软件的复用就是解决这类问题的其中一个方法,因此软件复用是软件工程中的重要内容,是支持和实现软件工程的重要方法,因此为了更好地将软件工程应用到软件设计的具体实践中去,我们需要提高对软件复用的重视。

2 软件复用的几个层次

软件复用是指在软件设计的过程中,将软件中不断重复的部分进行抽象和提取,从而形成能够通用的软件成分,可以被不同的模块复用。根据软件设计的不同需求,软件复用的层次也有所不同,主要包括以下几个部分:

2.1 代码的复用

代码的复用可以说是软件复用中最简单的部分,这种软件复用方式在面向结构化和面向对象的软件设计方法中均有所体现:面向结构化的软件设计方式中,我们将软件重复的部分抽象为一个函数,通过对函数传递不同的参数,从而实现不同模块对函数的调用;在面向对象的软件设计方法中,我们可以依靠类的继承关系,使得子类在继承的过程中能够重复使用基类的一些代码、成员变量等等,这些都是软件复用中代码复用的具体例子。

2.2 设计的复用

代码的复用仅仅是软件复用中最简单的层次,与其相比,设计的复用能够实现软件系统模块级别的复用,显得更为强大。设计的复用主要体现在以下三个方面:

(1)第一,从现有的系统中提取一些可以复用的部分,然后重写运用到新系统当中。

(2)第二,将对目前系统的设计重新运用到其他的系统中,从而实现整个软件系统级别设计的复用。

(3)第三,实现独立于一些系统的软件构件,这些软件构件的复用级别比代码复用的粒度更大,这种构件的抽象级别往往更高,从而使得构件能够被广泛运用到多个系统当中,提高构件的复用次数。

2.3 分析的复用

与软件设计的复用不同,软件分析的复用运用于软件的概要设计阶段,与软件的具体实现关联比较少,因此实现软件复用的几率更加大。软件的分析复用也可以有三种不同的方式:第一,抽象出现有软件系统的重复分析部分,应用于其他软件系统的分析上;第二,将分析的方法运用到不同的软硬件平台上,从而能够产生不同的设计;第三,可以实现一些分析的构件,从而实现软件分析阶段的软件复用。

2.4 测试信息的复用

测试过程也属于软件工程的重要模块,因此在软件的测试部分也可以应用软件复用的方法,软件测试信息的复用主要包括两方面的内容:

(1)第一,测试用例的复用,就是将一个系统的软件测试用例,提取一些通用的部分运用到另一个软件系统中,从而实现软件测试用例的复用。

(2)第二,测试过程信息的复用,软件测试可以通过软件自动化测试工具记录一些相关的测试信息,这些测试信息可以为其他系统的测试提供参考。这两种方式都可以实现软件测试信息的复用。

3 实现软件复用的相关技术

3.1 面向对象技术

面向对象技术的产生和实现是软件设计世界的重大改革,它使得软件设计模式能够按照人类看待世界的方式进行,而且能够通过继承、封装和多态技术,更好地实现软件的复用。其中继承技术是实现软件复用的重要方式,在面向对象的技术中,我们将很多对象抽象为类,而其中一些类的公有特性可以被其子类继承下去,因此在继承的过程中,子类不必再实现父类的方法和属性,而仅仅定义自己与父类不同的特性即可,因此继承技术在很大程度上实现了软件的复用。当然,面向对象技术的其他属性――多态也可以很好地实现软件的复用,因此目前在进行软件设计和开发过程中,引入了面向对象技术,能够在很大程度上实现软件的复用。

3.2 软件复用库

软件设计在经过了多年的理论和实践研究之后,一些经典的算法和实现技术被传承下来,研究人员将这些代码进行不断地提炼和改进,从而封装为一系列可以直接引用的软件复用库,这样不仅仅能够降低软件开发人员的开发难度,提高他们的开发效率,而且这些软件复用库在经过千锤百炼以后,能够以更高的效率实现相应的功能。例如:在C++语言中,STL就是一种软件复用库的具体实现,软件开发人员可以在引入头文件之后,直接对其中的数据结构进行使用,而不必自己再从头开始实现,而且软件复用库中的一些对象的建立和销毁机制都比较完善,能够协助软件设计人员更好地使用和管理内存。

3.3 构件技术

对于一些软件系统复用频率比较多的模块,往往会生成一些专门的构件,这些构件能够被用户方便地下载和使用,从而成为更加灵活的软件复用技术。目前,构件技术的主要来源主要包括以下几个方面:

(1)第一,一些专门的构件开发组织,这些构件开发组织开发一些具有高度重复利用率的构件,使得软件开发人员能够方便地使用这些构件,进而提高软件开发效率。

(2)第二,软件系统的固定提供商,这些提供商为自己开发的软件系统提供重要的构件、专门的业务开发环境或者使用环境等等,能够在更大范围内实现软件的复用技术。

4 软件复用在软件工程中的具体实施过程

软件的复用技术对于软件开发来讲是一项非常重要的技术,也是软件工程的主要实现方式之一。但是,实现软件的复用不仅仅包括代码复用和使用复用库,而且还需要在软件的需求分析和设计方面都考虑到软件复用的因素,这样才能够更好地实现软件的复用。软件复用在软件工程的应用主要包括以下过程:

4.1 软件复用能力的评估

软件的复用能力受很多因素的影响,因此在进行软件设计之前,必须要对软件的复用能力进行准确的评估,为此我们需要做的以下几个方面:

(1)第一,重视对软件复用能力的挖掘,在对软件复用能力进行评估的过程中,需要不断地对软件的需求进行深入分析和理解,从而能够充分挖掘其中适合软件复用的模块,通过对这些模块更好地复用,提高整个软件系统的实现效率。

(2)第二,充分利用分析复用技术,软件复用能力的评估是软件概要设计的重要部分,而分析复用技术也是概要设计阶段的重要技术,因此将分析复用技术结合到软件复用能力的评估过程中,能够实现更好的评估效果。

4.2 选择可复用的构件

针对软件的通用模型,一般在网络上都能够下载到开源的构件,这些构件能够帮助我们快速地产生软件的模型,选择可复用的构件主要包括以下几个方面:

(1)第一,从现有的软件复用库中选择合适的构件,因为现有的软件复用库都比较成熟和完善,在软件研发实践中也得到了很好的验证,因此需要尽可能地使用现有的软件复用库。

(2)第二,从供应商或者网络上下载可复用的构件,对于这种类型的构件,需要软件设计人员在使用过程中,对其进行反复地验证,从而使得构件的各项参数能够更好地满足现有软件的开发需求。

(3)第三,构建自己的软件复用库,在软件设计和开发的过程中,有很多地方都是具有共同点和相似点的,如果我们把这些共有的部分加以抽象和提取,那么能够达到很好的软件复用效果。而且根据自己的业务特征提取的软件复用模块,能够更好地为现有业务领域的软件开发服务,从而进一步提高软件复用率。

参考文献

[1]伽玛等.设计模式:可复用面向对象软件的基础(英文版)[M].北京:机械工业出版社,2003(01).

[2]福勒,熊节.重构:改善既有代码的设计[M].北京:人民邮电出版社,2010(04).

[3]Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides.计算机科学丛书:设计模式可复用面向对象软件的基础[M].北京:机械工业出版社,2007(01).

[4]萨默维尔(Ian Sommerville),程成等.软件工程[M].北京:机械工业出版社,2011(05).

作者单位

上海同济大学 上海市 200092

上一篇:计算机软件工程的管理与应用 下一篇:探索工业以太网技术在电力配网通信中的实践