浅析计算机软件维护

时间:2022-08-16 04:47:39

浅析计算机软件维护

摘要:最近几年,中国软件产业突飞猛进,从事软件行业的相关人员大幅增加。但是如何保证开发出来的软件能稳定的运行,如何维护用户使用的软件是我国从事软件行业人员较为忽略的问题。专门从事维护的相关人员较少,本文主要阐述软件维护和前景,提出关于软件维护的方法和见解。

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

中图分类号:TP311文献标识码:A文章编号:1007-9599 (2012) 04-0000-02

软件产品的维护阶段是完全开发出来的软件在已经交付给用户之后,保证能在用户所接受的时间周期下正常且稳定的运行。软件维护是软件生命周期的最后阶段。开发软件的目的就是要提高软件产品的维护性能,尽可能降低软件在维护阶段的工作量,节约软件开发成本。维护软件所需工作量较大,据统计,较大型的软件维护成本是开发成本的四倍以上。国内外较大型软件开发公司把60%左右的工作量用于维护已经开发的软件。公司为了使软件的寿命更长,这方面的工作量会越来越高,软件的维护费用也在逐年增加,70年代维护软件的费用占开发软件总预算的37%左右,80年代提高为50%左右,到了90年代已经高达75%左右。因此降低软件维护的成本是软件开发过程中最重要的环节。

一、软件维护的分类

(一)改正性维护:诊断并纠正由于开发时测试环节的疏漏和运行中潜伏的错误以及开发时未能测试的错误。

(二)适应性维护:随着时间变化,相匹配的软硬件出现了更新,数据库,数据的存储格式可能会发生变化,为了适应变化环境而对软件的修正,使之兼容。

(三)完善性维护:为了能提高系统性能和扩充优化,改进运行效率,完善可视化界面,实现用户提出的建议和改进的要求。

(四)预防性维护:为了软件将来的前景,采用软件工程的方法对软件进行相适应的修改。

(五)其他维护:其中,改正性维护所占比例约为19%,适应性维护约为22%,完善性维护约为56%,预防性维护约为1%,其他维护占2%左右。

二、软件维护的影响因素

(一)人员变动:往往软件交付以后就要解散团队,人员会被分配到下一个开发团队中。当初开发的人员离开了团队,甚至后来修改该软件的人员也离开了团队或公司,会导致几乎已经没人彻底了解这个遗留的软件,造成软件彻底报废。这样也会给负责软件维护的新团队带来困扰,要花费更多精力,浪费了资金。

(二)用户要求:当初没有签订详细的合同和拟出详细的计划书,也没有和用户进行详细的沟通,导致开发人员认为合理的修改和更新不能满足用户的要求,成本增加。

(三)潜在错误:维护人员的改动可能会在软件中加入潜在的风险和错误,导致间接降低了软件的质量。本来是正确的地方,改过以后变成了错误,兼容性变得更差了。

(四)维护成本:维护成本已经大于开发一个新软件的成本或者大于预计的成本,维护价值下降。

(五)团队素质:签订系统维护的合同一般和签订系统开发的合同无直接关系。假设这个开发团队为了节约开发成本,不按照系统可维护性来设计,那么势必会增加维护团队的维护成本。软件开发时采用急功近利还是放眼未来的态度,对软件维护的影响很大。

(六)人员水平:一般公司认为维护软件不需要太多技术,不如开发软件声望好,分配能力较低的员工去做,也会增加维护的风险。

(七)文档同步:软件开发人员编码中不断修改需求和设计,但是文档却没有进行实时更新,造成交付的文档于实际软件出现偏差,使今后对软件进行维护时出现误解[1]。

同时,一些软件渗入了许多相关的公司业务知识,还需要有一定的相关工作经验,这类软件维护的成本会更高。目前软件维护系统的方法不完善,维护工作变得更加困难,意外的发生也会导致风险随之增加[2]。软件维护也会产生一些副作用,软件修改是一项很危险的工作,虽然设计文档化和回归测试有助于排除错误,但是仍然会产生副作用。副作用指,由于维护和维护过程中其他的一些不期望的行为引入的错误,分为:代码副作用,数据副作用,文档副作用。

(1)代码副作用:修改或删除子程序,语句符号,标示符。修改文件的open,close才做;修改逻辑操作符;修改对边界条件的测试等。

(2)数据副作用:全局常量和局部常量的再定义;修改全局数据;重新初始化控制标志和指针,重新排列I/O表或子程序参数表等。

(3)文档副作用:维护应该统一考虑整个软件的配置,而不仅仅是源代码。

三、维护工作量的模型

M=P+K*exp(c-d)

其中:M是维护需要的总工作量,P是生产性工作量,K是经验指数,c是复杂程度,d是维护人员对该软件的熟悉程度,该模型表明,如果软件的开发途径不好,开发人员不能参加维护工作,维护需要的总工作量和费用将以指数的形势增加[3]。

四、软件的可维护性

据统计维护源代码的总代价约为最初开发该源代码代价的25倍。因此在开发软件的过程中要提高软件的可维护性。软件要有一定的可理解性,要使用规范的编程结构,通俗易懂,良好简洁规范的程序设计语言可提高软件的可理解性。提高可维护性采用的方法有:确定质量管理目标和优先级,规范化程序设计风格,选择可维护性高的程序设计语言,改进程序文档,保证软件质量审查方法。软件要容易修改,耦合,内聚,局部化,信息隐藏等。软件要具备可测试性,在设计时就应该把软件设计成便于测试的,方便进行回归测试。现代软件工程可用程序复杂度来测量软件的可测试性。环形复杂度越高,可执行路径越多,测试难度便越大。另外程序应该具有一定的可移植性和可重用性。从用户的角度出发,可使用性尤为重要。一个可使用的程序应该是便于使用的,能允许用户出错和改变,并尽可能不使用户陷入迷惑状态的程序。在软件交付之前,要对软件再一次进行彻底审查,可避免交付给用户以后带来不必要的困惑,影响对软件的好感和对公司的信赖。软件维护的时间是有限度的,一般而言两年左右的免费服务时间,两年以后软件公司会推出更新的版本以适应用户在功能,性能,接口等方面所提出的新要求,软件厂商也会找到新的利润增长点。

五、软件维护的步骤

总体步骤:修改软件需求说明-修改软件设计-设计评审-重新编码-单元测试-集成测试-回归测试-确认测试-复审。

软件维护时要建立正式的维护团队,明确责任和分工,避免出现纠纷。要建立一份用户要求表格,要让用户全面详细地阐述发生的问题和错误,包括问题的类型,需要达到的目标,系统运行的环境,发生问题的日期等等。维护过程中要注意顺从原有代码的编码习惯,确保和谐。维护申请比较多,可分配优先级。修改前要做备份,改后要做测试,完成后要进行会议总结,汲取教训,分享经验。必要时还可以专门为该软件建立维护指南,使用手册,简要说明如何使用和维护这个软件。还可以建立参考手册,可以预示会发生出错的可能情况和错误代码相对应的含义以及解决的办法,注意要用形式化语言描述。维护完成时,可进行回归测试,测试顺利完成后方可交付。软件随着多次的维护和修改,其可维护性会变得越来越差,当可维护性降低到一定程度时,为了满足用户的要求再继续修改已经不可靠了,软件就会被抛弃,生命周期终止,失去了利用价值[4]。

六、软件维护的前景

目前据笔者了解到,软件维护相关人员较少,但是软件维护成本却占了软件开发中成本的大半,许多大型软件由于缺少维护导致失控而被抛弃。因此如果精通或掌握软件维护领域相关知识,能够熟练完成大型软件的维护如:ERP的日常维护,SQL数据库的维护,网页服务器的维护等等,不断改进完善软件,发展潜力很大。

七、结束语

软件维护是软件生命周期的最后阶段,也是最重要的阶段。笔者在所在的大连理工大学国家示范性软件学院进行过大量调查,很多本科生就没有养成良好的编码习惯,软件开发出来就万事大吉,软件维护基本不做,想学习和已经学习掌握维护方面知识的学生较少。对软件维护误认为只是枯燥无味,维护过程中还容易遭受挫折,没有什么前途。本文希望通过对软件维护的浅析使更多人了解软件维护的重要性,致力于提升软件产品的质量。

参考文献:

[1]吴杰明,张正.实用软件维护策略[J]..北方工业大学学报,2002,14,3:61-62

[2]Ian Sommerville.Software Engineering[M].第八版.北京:机械工业出版社,2004,4:305

[3]张海藩.软件工程导论[M].第五版.北京:清华大学出版社,2008,5:191

[4]周全学.软件维护浅析[J].铁路计算机应用,2003,12:42-43

[作者简介]高明贺(1990-),男,学历:在读本科,研究方向:软件开发与测试。

上一篇:对通信网络运行与维护的探讨 下一篇:浅析计算机网络安全隐患及控制策略