软件维护探析

(整期优先)网络出版时间:2022-11-15
/ 2

软件维护探析

孙琨

江南机电设计研究所  贵阳  550009

摘要:软件维护是整个软件生命周期的最后阶段,并且软件维护的成本大约占总开发成本70%以上,软件维护的巨大成本使得软件工程研究人员不得不对它更加重视。本文介绍了现代软件维护的分类,分析了软件维护的影响因素,提出了一些软件维护策略和未来的努力目标。

关键词:软件维护;维护策略;软件工程

1引言

随着我国经济的快速发展,计算机软件的种类和复杂程度也飞速增多,现代社会产生了越来越多的软件,这些软件都面临着维护和更新换代,软件维护水平的优劣直接影响着软件产品的生命周期[1]。软件产品开发结束后,该产品就进入了运行维护阶段,在这个阶段中常常由于各种原因需要对已完成的软件产品根据用户和实际中工作的新需求进行修改和维护,软件维护过程的工作量非常大,据统计,软件维护成本已经远远超过了系统的软件开发成本,占系统总投资的70%以上,为了使软件的寿命更长,这方面的工作量会越来越高,维护成本也会逐步增加,因此软件维护活动的研究越来越受到人们的关注,本文根对计算机软件维护工作做了详细的介绍,并且针对计算机软件维护工作的分类和方法策略做了详细的探析。

2 软件维护的分类

根据软件维护的不同目的可以将软件维护分为四类:适应性维护、完善性维护、纠错性维护、预防性维护。

2.1适应性维护

软件都有自己运行的硬件环境和软件环境,在使用过程中,硬件环境、软件环境、数据环境(如数据库、数据输入/输出方式、数据存储介质)都是可能发生变化的。因此,计算机软件就需要通过维护来提高其对各种环境的适应性,这种为使软件适应这种变化,而去修改软件的过程就叫做适应性维护。

2.2完善性维护

在软件的使用过程中,用户往往会对软件提出新的功能与性能要求,为了满足这些要求,需要修改或再开发软件。这种以扩充软件功能、增强软件性能、改进加工效率而进行的维护叫做完善性维护。完善性维护是维护工作中最多的类型,占维护工作的50%左右。

2.3纠错性维护

在软件开发过程中要生成100%可靠无误的软件,是一个是不现实的事情,因此,在软件交付使用之后,必然会有一部分隐藏的错误被带到到运行阶段,这些隐藏下来的错误在某些特定的使用环境下就会暴露出来。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的错误使用,应当进行的诊断和改正错误的过程就叫做纠错性维护。

2.4预防性维护

当计算机软件开发人员在开发完成之后,发现软件存在一定的缺陷,开发人员可以对软件的缺陷进行一定的预判,确定是否需要进行预防性的维护,来避免软件出现错误性的崩溃,即修改软件,为将来的维护活动预先做准备。该方法对版本较低的软件有显著的改进效果,可以用来提高软件工作的稳定性。

3软件维护的影响因素及维护策略

3.1 软件维护的影响因素

在软件的维护过程中,会遇到多种因素的影响,为了控制软件的维护活动,提高软件的维护效率,需分析影响软件维护的因素。

1)工作繁琐。软件程序的任何一处改动,都可能影响到整个软件系统,并且这种影响只有在软件运行中遇到问题的时候才能显现,若要避免这种情况的发生,就需要在改动后进行大量的检测工作,这就无疑极大的增加了维护的工作量。

2)系统规模。软件规模大小直接影响维护工作量,系统规模越大,读懂和理解就越困难,系统规模主要由程序模块数、数据文件数、源代码行数等因素衡量。

3)系统使用年限。使用年限长的系统因为已经进行了多次的维护,参与维护的人员也不断变化,因此系统的结构更乱,如果没有完备的系统说明和设计文档,系统维护就更加困难。

4)时间紧迫。通常软件错误只有在运行中才能被发现,用户往往是在时间紧迫的情况下请求维护的,这就要求维护人员必须在有限的时间内发现问题和解决问题。

5)人员变动。软件行业人员流动性比较大,当起初的开发人员和维护人员离开后,会导致维护团队对软件熟悉程度的显著降低,甚至造成软件的彻底报废。

6)文档同步。软件开发人员不断修改需求和设计过程中,忽略了文档的实时更新,造成交付的文档与实际软件不一致,使得今后对软件进行维护时出现误解。

3.2 软件维护策略

通常情况下,软件维护工作要比开发工作困难得多,因为首先维护人员必须用较多的时间理解别人编写的程序和文档,并且对系统的修改不能影响程序的正确性,其次整个维护工作通常必须在规定得很短时间内完成[2]。在实际的维护工作中我们将软件工程原理运用到实际的软件维护活动中,经过长期的实践总结积累了一些实用的软件维护策略,这些策略基于维护管理和维护技术,能够以较少的代价有效的完成维护工作[3]

软件维护工作必须在一定的监控下进行,任何人不得私自进行软件维护,维护工作必须按照规定的步骤开展,否则一旦失控就有可能造成整个软件系统的报废。软件维护工作主要可分为七个阶段:确定维护目标、分析、设计、实现、系统测试、验收测试、交付阶段。

1)确定维护目标阶段,软件维护起始于一个对软件的更改请求,该更改请求既可能是纠错性维护也可能是完善性维护,需由维护机构确定其是何种类型,划分到合适的维护类别中(纠错性维护、适应性维护、预防性维护、完善性维护)。

2)在分析阶段,先进行维护的可行性分析,在此基础上再进行详细分析。可行性分析主要确定软件更改的影响和可行性的解决方法等内容。详细分析则主要是提出完整的更改需求说明、鉴别需要更改的要素(模块)、提出测试方案和策略、制定实施计划。

3)在设计阶段,汇总全部用于软件更改的设计的信息,这些信息包括系统的文档、分析阶段产生的结果、源代码等。

4)在实现阶段,制定程序更改计划以便进行软件更改。实现阶段主要包括编码与单元测试、集成测试、风险分析、测试审查准备等过程。

5)在系统测试阶段,主要测试程序之间的接口,以确保系统满足原来的需求以及新增加的更改需求。

6)在验收测试期间,测试人员应该完成如下工作:报告测试结果、进行功能配置审核、确定系统功能是否满足功能需求、建立软件新版本。

7)在交付阶段将新的系统交给用户完成安装与训练。此外,除了修改程序、数据、代码等部分以外,还应同时修改涉及的所有文档,包括系统文档和用户文档。

4 小结

本文对重点对软件维护的分类、影响因素和维护策略进行了详细的介绍。在实际的软件维护过程中,可能出现很多本身没有或者之前没有发现的错误,对于软件维护人员来说,想要得到一个很好的维护质量是一个比较困难的事情。软件的维护效果直接影响了软件的生命周期,因此需要软件维护人员认真的汲取国内外的先进经验和方法,在此基础上大胆的尝试行的维护方法,来满足日益增多的软件维护需求,提高软件维护的质量,促进软件维护方式方法的发展。

参考文献

[1] 黄国楠.浅谈软件维护[J].科技咨询,2005,24(8):68-69.

[2] 洪甜.FOXMS系统的软件维护[D].浙江大学,2006:13-16.

[3]彭汉国. 浅析软件维护[J]. 软件工程师,2014(04):61-62.