标题 | 浅析软件维护 |
范文 | 彭汉国 张渊博 雷波 摘 要:软件维护是软件生命周期的最后一个阶段,并且软件维护的成本大约占总开发成本70%以上,软件维护的巨大成本使得软件工程研究人员不得不对它更加重视。本文以软件工程原理为基础,分析了软件维护的类型和影响因素,提出了一些软件维护策略和未来的努力目标。 关键词:软件维护;软件工程;维护策略 中图分类号:TP311 文献标识码:A 1 引言(Introduction) 随着时间的推移和计算机技术的飞速发展,现代社会产生了越来越多的软件,这些软件都面临着维护和更新换代,软件维护水平的优劣直接影响着软件产品的生命周期[1]。软件产品开发结束后,该产品就进入了运行维护阶段,在这个阶段中常常由于各种原因需要对已完成的软件产品根据用户和实际中工作的新需求进行修改和维护,软件维护过程的工作量非常大,据统计,软件维护成本已经远远超过了系统的软件开发成本,占系统总投资的70%以上,为了使软件的寿命更长,这方面的工作量会越来越高,维护成本也会逐步增加,因此软件维护活动的研究越来越受到人们的关注,本文根据软件工程原理和实际应用经验总结出计算机软件维护方法策略。 2 软件维护分析(Analysis of software maintenance) 软件维护活动可以从管理和技术两个方面进行,其目的就是要确保软件维护活动能够在严格的控制之下进行,从而实现软件的功能和性能及时、准确的满足用户的要求[2]。 2.1 软件维护的类型 根据软件维护的不同目的可以将软件维护分为四类:适应性维护、完善性维护、纠错性维护、预防性维护或再工程。 (1)适应性维护:软件都有自己运行的硬件环境和软件环境,在使用过程中,硬件环境、软件环境、数据环境(如数据库、数据输入/输出方式、数据存储介质)都是可能发生变化的。为使软件适应这种变化,而去修改软件的过程就叫做适应性维护。 (2)完善性维护:在软件的使用过程中,用户往往会对软件提出新的功能与性能要求,为了满足这些要求,需要修改或再开发软件。这种以扩充软件功能、增强软件性能、改进加工效率而进行的维护叫做完善性维护。完善性维护是维护工作中最多的类型,占维护工作的50%左右。 (3)纠错性维护:在开发过程中要生成100%可靠无误的软件通常是不太现实的,在软件交付使用后,必然会有一部分隐藏的错误被带到到运行阶段,这些隐藏下来的错误在某些特定的使用环境下就会暴露出来。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的错误使用,应当进行的诊断和改正错误的过程就叫做改正性维护。 (4)预防性维护或再工程:即修改软件,为将来的维护活动预先做准备。 在实际的维护工作中,软件维护类型并不是相会独立单独进行的,而是各种维护类型交织在一起进行的。例如在引入新的功能模块进行适应性维护的过程中,就有可能引入不明显的程序错误,这就需要跟踪和处理这些程序错误进行纠错性维护。类似的在进行完善性维护的过程中,可能需要重新调整代码结构从而引入了预防性维护。不同类型的软件维护之间的关系,如图1所示。 2.2 软件维护的影响因素 为了控制软件的维护活动,提高软件的维护效率,需分析影响软件维护的因素。 (1)工作繁琐。软件程序的任何一处改动,都可能影响到整个软件系统,并且这种影响只有在软件运行中遇到问题的时候才能显现,若要避免这种情况的发生,就需要在改动后进行大量的检测工作,这就无疑极大的增加了维护的工作量。 (2)系统规模。软件规模大小直接影响维护工作量,系统规模越大,读懂和理解就越困难,系统规模主要由程序模块数、数据文件数、源代码行数等因素衡量。 (3)系统使用年限。使用年限长的系统因为已经进行了多次的维护,参与维护的人员也不断变化,因此系统的结构更乱,如果没有完备的系统说明和设计文档,系统维护就更加困难。 (4)时间紧迫。通常软件错误只有在运行中才能被发现,用户往往是在时间紧迫的情况下请求维护的,这就要求维护人员必须在有限的时间内发现问题和解决问题。 (5)人员变动。软件行业人员流动性比较大,当起初的开发人员和维护人员离开后,会导致维护团队对软件熟悉程度的显著降低,甚至造成软件的彻底报废。 (6)文档同步。软件开发人员不断修改需求和设计过程中,忽略了文档的实时更新,造成交付的文档与实际软件不一致,使得今后对软件进行维护时出现误解。 3 软件维护策略(Software maintenance stratery) 通常情况下,软件维护工作要比开发工作困难得多,因为首先维护人员必须用较多的时间理解别人编写的程序和文档,并且对系统的修改不能影响程序的正确性,其次整个维护工作通常必须在规定得很短时间内完成[3]。在实际的维护工作中我们将软件工程原理运用到实际的软件维护活动中,经过长期的实践总结积累了一些实用的软件维护策略,这些策略基于维护管理和维护技术,能够以较少的代价有效的完成维护工作。 3.1 为维护工作制定流程 软件维护工作必须在一定的监控下进行,任何人不得私自进行软件维护,维护工作必须按照规定的步骤开展,否则一旦失控就有可能造成整个软件系统的报废。图2给出了一个软件维护工作流程图。 确定维护目标阶段,软件维护起始于一个对软件的更改请求,该更改请求既可能是纠错性维护也可能是完善性维护,需由维护机构确定其是何种类型,划分到合适的维护类别中(纠错性维护、适应性维护、预防性维护、完善性维护)。在分析阶段,先进行维护的可行性分析,在此基础上再进行详细分析。可行性分析主要确定软件更改的影响和可行性的解决方法等内容。详细分析则主要是提出完整的更改需求说明、鉴别需要更改的要素(模块)、提出测试方案和策略、制定实施计划。在设计阶段,汇总全部用于软件更改的设计的信息,这些信息包括系统的文档、分析阶段产生的结果、源代码等。在实现阶段,制定程序更改计划以便进行软件更改。实现阶段主要包括编码与单元测试、集成测试、风险分析、测试审查准备等过程。在系统测试阶段,主要测试程序之间的接口,以确保系统满足原来的需求以及新增加的更改需求。在验收测试期间,测试人员应该完成如下工作:报告测试结果、进行功能配置审核、确定系统功能是否满足功能需求、建立软件新版本。在交付阶段将新的系统交给用户完成安装与训练。此外,除了修改程序、数据、代码等部分以外,还应同时修改涉及的所有文档,包括系统文档和用户文档。 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。