软件维护之重要性及方法

2015-12-02 12:31赵春城
环球市场信息导报 2015年26期
关键词:代码文档软件

赵春城

软件维护之重要性及方法

赵春城

Point

软件维护阶段是软件生存周期中的最后一个阶段,是一个重要的阶段,有很大的挑战性,迎接这些挑战需要技巧和方法。文章分析了软件维护的几种类型,不同类型的维护工作针对不同的工作内容,所占工作比重也不同,并分析总结出维护工作的特征,为管理软件维护工作打下基础;分析论证了软件维护的重要性,维护人员实际做的是幕后英雄的工作,也有很大的挑战性和成就感;最后,结合作者在软件维护管理和工作中的实践,总结出做好软件维护的几点实用的实践经验,改变对维护工作的认识是做好维护工作的前提。

绪论

软件维护是软件生存期中的最后一个阶段,它既是时间最长的一个阶段,也是消耗人力最多的一个时期,在整个软件生存期内,这个阶段具有极其重要的意义。软件维护主要是指根据需求变化或硬件环境的变化对应用程序进行部分或全部的修改,使软件系统在新环境下适应新的业务需求,修改时应充分利用源程序和设计文档。

国内软件项目由于前期需求考虑不周全,业务需求变化快,在开发完成进入维护阶段后容易产生较多变更。但由于项目规模不大基于成本和管理等因素考虑,不能完全把运营、维护、测试等团队和软硬件严格分开,外包公司“包打天下”的情况比较普遍。在高度依赖软件系统的行业,系统的安全可靠运行变得越来越重要,需要采取有效的措施加强软件维护项目的管理。

本文阐述了软件维护及其在项目管理中的重要性,结合软件工程方法学,并根据作者在软件管理和软件维护实践中积累的经验,总结出行之有效的软件维护方法。

一、软件维护类型

软件维护活动类型总起来大概有四种:纠错性维护、适应性维护、完善性维护、预防性维护。除此四类维护活动外,还有一些其它类型的维护活动,如:支援性维护(如用户的培训等)。

针对以上几种类型的维护结合作者实际工作,在下面做简要阐述。

1.纠错性维护

纠错性维护是指在系统开发阶段已发生而系统测试阶段尚未发现的错误。这方面的维护工作量要占整个维护工作量的17%~21%。所发现的错误有的不太重要,不影响系统的正常运行,其维护工作可随时进行;而有的错误非常重要,甚至影响整个系统的正常运行,其维护工作必须制定计划,进行修改,并且要进行复查和控制。

这部分的维护工作实际上就是在软件系统运行过程中修改前期没有发现的bug,在修改旧bug过程中也可能会引入新的bug,这部分工作以会成为新的纠错性维护工作。在软件开发过程中加强评审和测试,可以有效减少这部分的维护工作。

2.适应性维护

适应性维护是指使用软件适应信息技术变化和管理需求变化而进行的修改。这方面的维护工作量占整个维护工作量的18%~25%。由于目前计算机硬件价格的不断下降.各类系统软件层出不穷,人们常常为改善系统硬件环境和运行环境而产生系统更新换代的需求;企业的外部市场环境和管理需求的不断变化也使得各级管理人员不断提出新的信息需求。这些因素都将导致适应性维护工作的产生。

3.完善性维护

完善性维护是为扩充功能和改善性能而进行的修改,主要是指对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征。这些功能对完善系统功能是非常必要的。另外,还包括对处理效率和编写程序的改进,这方面的维护占整个维护工作的50%~60%,比重较大,也是关系到系统开发质量的重要方面。完善性维护是软件维护工作中的主要部分,触发这类维护工作的常常是用户业务交易增加了,或是业务流程改变了,需要修改软件;也可能是软件系统不能再满足业务量要求,需要在性能上有所提高。

4.预防性维护

预防性维护为了改进应用软件的可靠性和可维护性,为了适应未来的软硬件环境的变化,主动增加预防性的新的功能,以使应用系统适应各类变化而不被淘汰。这方面的维护工作量占整个维护工作量的4%左右,是维护工作中占比最少的一部分工作。

二、软件维护的重要性

很多人都不愿意做维护工作,都想做开发者,做首席架构师,认为那才是软件“创造者”,而维护人员不过是对软件的修修补补,是一个无名的软件“修理工”。实际上不管是开发者,还是维护者,都是软件工程中的必不可少的组成人员,只不过后者更倾向是一个幕后英雄。可以做一个不太适当的比喻,维护工作做不好,软件系统可能会英年早逝,维护工作做好了,软件系统就会长命百岁。

软件维护阶段作为软件生存周期中的最后一个阶段,是历时时间最长的一个周期,是最消耗人力物力的一个时期,维护阶段管理的好坏,工作效率的高低,直接影响着软件的使用和体验,也直接影响维护成本。有的软件系统前期开发得很好,文档也齐全,但由于维护阶段管理不善,经过一段时间的修改后,文档与代码对不上了,维护越来越难,最后甚至变成不可维护了。有的软件系统在开发阶段可能不是太完美,但如果维护阶段管理得好,软件系统的维护性会越来越好。

三、软件维护的方法

1.改变观念,爱上软件维护工作

首先要正常认识软件维护在软件生命周期中的重要性,做维护工作虽然不能成为台前英雄,但却是一个实实在在的的幕后英雄。实际上很多所谓的开发人员所做的开发工作就为软件增加新功能,修改业务流程,这其实就是在做完善性维护工作。软件维护工作同样存在大量的挑战,同样需要创造性、灵活性、耐心、训练和良好的沟通。爱好是学习最好的老师,只要喜欢上软件维护工作,你就会在这一领域中发挥你的聪明才智,收获属于你的一片蓝天。

2.建设高效,稳定的维护团队是首要任务

在维护团队建设初期,大家有一个普遍的认识:维护工作没有成就感。不仅枯燥,乏味,而且没有技术含量。程序员最头疼的就是修改别人写的代码,而且这些代码往往没有健全的文档和注释。这种认为“软件维护是不入流的技术人员所做的工作”的思想,使得维护工作举步维艰。

为了改变这一现状,在维护初期,多次组织和开展了项目组的交流会议和培训工作。必须首先让大家摆正心态,正视维护工作。在培训过程中,重点关注项目组成员的个人发展,以此为起点,引导大家从思想上有所转变,把项目组的利益和个人利益相结合,达到共同提高的目的。

3.熟悉软件系统

熟悉所维护软件的功能是非常重要的,也是进行软件维护工作的第一步。首先阅读现有的文档,最好能对文档中提到的内容亲自进行测试。可以从QA部门找出他们的测试计划文档,并且照着文档再把测试做一遍。掌握现实中软件的使用方法,确保你要知道最常用的使用情形。有时候用户会要求提供一些已经存在的功能特性,只是因为他们不知道软件中已经具有了这些功能。

最后只能研究代码了,试着去理解函数、模块和组件在软件中所扮演的角色。使用调试器单步执行程序中不同的分支,查看当代码的不同部分执行时将会发生什么。要把熟悉软件的体系结构当作一个持续进行的过程,而不是一次就能完成的事情。当你修正bug或添加新的特性时,可能会对系统有更好的理解。以上过程一定要记录结果,这样会对维护工作有巨大帮助。

4.与用户沟通

与用户沟通是非常重要的。许多软件开发者都很内向,他们宁愿与技术打交道,也不愿意去与用户沟通。然而,软件就是为了人们使用才开发的。而且在软件的维护阶段,已经有用户在使用我们的软件了。试着建立一种简单而有效的机制用于用户提交bug报告和增加需求,当他们提出一个问题时,要及时给他们反馈,即使你不能马上解决这个问题,至少让他们知道你正在处理这个问题,而没有怠慢他们。最后,要诚实的告诉他们问题的最新解决情况,如果由于某些原因不能满足他们的需求,也要及时告诉他们。

5.保留修改记录

有很多种保留修改记录的方法。最常见的方式是在每次提交代码前要进行注释说明,还有些人喜欢把修改的记录列表写到文件的顶部,在电子表格中保留一份修改列表也是很方便的。无论你采用哪种方式,一定要重视它。一份精确的修改记录对成功地维护工作来说是无价的。

6.尽量保持程序原貌,避免重构

在软件维护的很多时候,你会被某些模块中的代码弄得很沮丧。真想把这些代码删除然后从头重写。事实上,无论何时我们对代码进行修改,不管是多么微小的修改,都存在引入新的bug的风险。避免重构,尽管在开发阶段重构是一项很有用的技术,但在软件的维护阶段,它可能只会给你带来麻烦。即使你使用重构没有破坏任何东西,至少也增加了维护记录的复杂度,使源代码管理系统中不同版本间的差别变大。

7.重视测试

测试永远是软件质量保证中重要的一环,当你接手软件的维护工作时,也许你需要做的第一件编码任务是为该软件写一份回归测试集——除非你已经有了一份。即使只是对代码做了一点修改,但是运行整个回归测试却会花费很长的时间。这种情况下,我们可以取出回归测试集的一个子集进行一次“冒烟测试”——只覆盖了回归测试集中的一部分测试用例的测试。每次修改后你都可以进行“冒烟测试”,而在周末或晚上进行回归测试。自动测试在这方面是一个很好的测试工具。

总 结

软件的安全运行,离不开维护工作的效率和管理质量的提高。软件维护工作有它独特的挑战性,迎接这些挑战需要技巧和方法,与开发工作是一样的。作者全面分析了软件维护的类型,不同类型维护工作的工作内容和工作比重,总结了做好软件维护工作的几点实践经验。

(作者单位:中铝财务有限责任公司)

猜你喜欢
代码文档软件
浅谈Matlab与Word文档的应用接口
禅宗软件
有人一声不吭向你扔了个文档
软件对对碰
创世代码
创世代码
创世代码
创世代码
基于RI码计算的Word复制文档鉴别
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat