如何管理软件维护过程?
如何管理软件维护过程?
1
如何管理软件维护过程?
摘要
软件维护性是软件的重要质量特性。本文从软件工程的角度出发,对目前存在的相关问题进行总结,对软件维护过程进行了研究,并通过相关案例分析及常见问题解析,提出了管理软件维护过程的一些方法,有效地将维护知识与维护过程活动结合在一起。
关键词:管理 软件维护 软件维护过程 软件项目
1.绪论
软件维护过程是指软件维护机构维护软件及相关产品(如维护计划、文档、代码、测试用例、用户手册)的一套行为、方法、实践和转化过程。 软件维护需要的工作量非常大,虽然在不同应用领域维护成本差别很大,但是,平均说来,大型软件的维护成本高达开发成本的四倍左右。典型的情况是,软件维护费用与开发费用的比例为2:1,一些大型软件的维护费用,甚至达到开发费用的40~50倍。这也是造成软件成本大幅度上升的一个重要原因。因此如何管理好软件维护,充分利用现有的资源并合理地对软件系统进行管理是有待解决的一个重大课题。
2.软件维护概述
2.1 软件维护定义
软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。软件维护的最终目的,是为了满足用户对已开发产品的性能与运行环境不断提高的要求,进而延长软件的寿命。
2.2 软件维护的原因
要求进行维护的原因多种多样,归结起来有三种类型:
(1) 改正在特定的使用条件下暴露出来的一些潜在的程序错误或设计缺陷; (2) 因在软件使用过程中数据环境变化或处理环境变化而需要修改软件以适应变化;
(3) 用户和数据处理人员在使用时提出改进现有功能,增加新的功能,以改善总体性能。
2.3 软件维护的分类
软件维护按照目的可以分为以下4类:
(1)完善型维护——为增加软件的功能或用户提出的新需求而进行的维护。在整个软件维护工作量中,完善性维护约占50%~60%。
(2)适应型维护——为适应软件运行环境的变化而进行的维护。这类维护大约占整个维护工作量的25%左右。
(3)纠错性维护——为改正软件系统中的错误,使软件能够满足预期的正常运行状态的要求而进行的维护。这类维护约占总维护量的20%左右。
(4)预防型维护——为改进软件效率、可靠性、可维修性而进行的维护。这类维护约占维护总量的4%左右。
从软件维护的定义和分类可以看出,软件维护绝不仅仅是在运行过程中纠正发现的错误,事实上在软件维护活动中—半以上的工作是进行完善性维护。
2
如何管理软件维护过程?
3.软件维护过程
3.1维护组织
图3.1 维护组织
3.2维护报告
维护报告是一个外部产生的文件,它是计划维护活动的基础。软件组织内部应该制定一个软件修改报告,它给出下述信息。
1. 满足维护要求表中提出的要求所需要的工作量; 2. 维护要求的性质; 3. 这项要求的优先次序; 4. 与修改有关的事后数据。
在拟定进一步的维护计划之前,把软件修改报告提交给变化授权人审查批准后方可实施。
3.3 维护的事件流
3
如何管理软件维护过程?
3.4 保存维护记录
维护纪录的保存是很重要的,它是软件产品使用完好程度进行评价的依据,也是维护技术的有效性进行评价的依据。因此,必须从以下几方面来收集保存维护纪录。
(1) 程序标识 (10) 因程序变动而删除的源语句数 (2) 源语句数 (11) 每个改动耗费的人时数 (3) 机器指令条数 (12) 程序改动的日期 (4) 使用的程序设计语言 (13) 软件工程师的名字 (5) 程序安装的日期 (14) 维护要求表的标识 (6) 自从安装以来程序运行的次数 (15) 维护类型 (7) 自从安装以来程序失效的次数 (16) 维护开始和完成的日期 (8) 程序变动的层次和标识 (17) 累计用于维护的人时数 (9) 因程序变动而增加的源语句数 (18) 与完成的维护相联系的纯效益 上述这些维护数据,是构成维护数据库的基础。
3.5评价维护活动
通过维护记录中的数据,对维护活动进行评价,从而产生维护工作的定量度量。可以从下述七个方面度量维护工作。
(1) 每次程序运行平均失效的次数 (2) 用于每一类维护活动的总人时数
(3) 平均每个程序、每种语言、每种维护类型所做的程序变动数 (4) 维护过程中增加或删除一个源语句平均花费的人时数 (5) 维护每种语言平均花费的人时数 (6) 一张维护要求表的平均周转时间 (7) 不同维护类型所占的百分比
根据对维护工作定量度量的结果,可以做出关于开发技术、语言选择、维护工作量规划、资源分配及其他许多方面的决定,而且可以利用这样的数据去分析评价维护任务。
4.软件维护过程中存在的问题
4.1相关案例
某软件开发项目总金额1200多万元,一共10个子系统,参与人数众多。编码测试阶段工程师人员达到60多人,历时5个月;试运行阶段,撤离部分开发人员至25人,历时5个月。系统正式上线运行后,甲乙双方又签订了一项软件维护合同,为期一年、固定价格、微利,乙方派15人到现场负责技术支持、处理用户需求,其中程序员12人。 随后各种问题出现:
1、随着用户的使用,各种新要求不断被提出,有些改动小、有些改动大,其中大多数新需求经过甲方确认后都要修改。项目组几乎没有商量的余地,甚至于用户直接将问题发给甲方项目组人员,系统范围、需求蔓延基本失控。
2、项目组中12个开发人员都是初级技术人员,之前参与的工作都是系统的边边角角,对整个系统不清楚。改动前要花费较长时间对系统业务需求、源代码
4
如何管理软件维护过程?
进行了解、学习、试验,问题解决进度很慢。程序员也抱怨1个人要干原来5个人的活。
3、结果甲方很不满意,要求乙方换人,更换几个人后也没有明显改进。甚至有些业务、程序没有人能搞懂,变成了不解之题。
4、技术人员在疲于应付系统功能修改问题外,还要应付一些“如何操作”类的问题,甚至超出范围的问题,比如IE打开慢、网络连不上等各种各样的问题。 分析该软件维护过程出现的问题如下: 1、为什么用户使用以后会有很多问题?
(1)需求分析、用户测试等环节可能有疏漏之处,需加强开发过程通; (2)客户的业务不稳定,需求变动频繁;
(3)软件本身小毛病比较多,软件灵活性、界面友好性有差距。 2、为什么需求控制不住?
没有和用户沟通清楚,了解用户为什么提问题,到底有多紧迫,告诉用户改东西是要花多大代价。 3、用户为什么不满意?
(1)用户的要求没有满足、项目组的承诺没有兑现,应该适当控制需求、谨慎承诺。
(2)没有抓住用户的疼痛点,如原来操作工作量比较大,希望增加批量处理等。 (3)态度可能不好,客户明显不对且不友好时不可以当面争执,妥协后以邮件、电话等非当面沟通形式进行解释。 4、员工为什么不满意?
(1)工作气氛不好、心情不愉快,收到的都是抱怨。首先需要减轻压力,然后加强培训、组织学习、肯定成绩、适当激励(取决于公司管理)。
(2)应付一些非系统类问题,发布常见问题FAQ(常见问题解答),让甲方支持人员介入。
4.2软件维护过程存在的问题
通过上述案例,软件维护花费大量的成本和努力,但有时维护任务又不能按时完成的主要原因有以下几个方面:
(1)所要维护的软件无文档或文档不完整,配置管理工作不到位,软件系统的改动没有被标记,相应的文档没有更新,维护过程中采用过时的文档;
(2)软件维护工作是软件生命周期中最长的阶段,但是软件行业人员的流动性比较大,甚至上次的维护人员已经找不到,这种人力资源的流失,加重了维护成本; (3)维护人员大多不是写源代码的人,所以要进行有效的维护,必须先理解软件的结构、处理过程及算法,然后才能进行维护改正,不幸的是许多软件的可读性差,导致理解困难;
(4)软件维护的副作用大,某程序一个小地方的改动,常常会影响到整个系统。而这种副作用往往在运行中造成了麻烦时才可能被察觉。这种不可预知的结果导致维护人员对维护工作一定程度的惧怕和厌烦心理,若要避免这种情况,需要进行大量的测试工作,这就会投入大量的资源,导致维护成本居高不下;
(5)软件错误只有在运行中才能发现,用户往往是在任务紧、时间急的情况下请求维护的,所以要求维护人员在短时间内能发现并解决问题。
要解决上述问题,可以从管理维护过程入手,将相关技术高效地融入其中,来提高维护的效率。
5