首页 > 代码库 > 让你提前认识软件开发(44):如何解决软件故障?
让你提前认识软件开发(44):如何解决软件故障?
第3部分 软件研发工作总结
如何解决软件故障?
在软件产品的运营维护阶段,软件工程师的一项重要工作就是解决软件的bug。在学校的时候,大家学完一门课程,然后考试通过就万事大吉了。但在实际的软件开发项目中,将软件成功交付给客户,只是“万里长征走完了第一步”,后面还有大量的工作要做,例如:解决软件故障、新增功能、版本升级等。作为一名合格的软件工程师,一定要学会准确、迅速地解决软件出现的各种问题。
为什么解决软件问题的能力如此重要?因为软件项目的成功率不容乐观。国内某IT公司对本公司内软件项目的成功率进行了长时间的追踪,统计的结果如图1所示。
图1 软件项目的成功率统计结果
从图1可以看出,软件项目的成功率是很低的,大部分的软件项目都会出现超期完成甚至是失败的情况。既然出了问题,那么就要及时将之解决掉。
1. 软件故障的分类
根据软件故障的严重程度,将其分为以下三类:
(1) 严重故障
这类故障一般会导致软件产品无法正常使用,需要立即解决。
如果出现了此类问题,那么软件工程师就要放下手中的工作,全力以赴将问题处理掉。
(2) 一般故障
这类故障虽然不会导致软件产品无法正常使用,但会影响某些功能流程,会影响到用户的体验。
如果出现了此类问题,那么软件工程师在手中任务不紧张的情况下,需要抽时间来处理掉,不能让问题一直遗留下去。
(3) 轻微故障
这类故障几乎不会对软件产品产生不良影响,用户也很少能够感觉得到故障的存在。
对于追求高质量和良好用户口碑的公司,在后续产品功能升级的时候,会附带将该类问题一起处理掉。
2. 解决软件故障所使用的通讯工具
不管出现了哪类软件故障,作为负责任的软件工程师,我们都要在尽量短的时间内将之解决掉,为自己赢得赞扬,同时也为公司赢得口碑。
一般说来,在解决软件故障的过程中,所使用的通讯工具包括:手机/电话、即时通讯软件(像QQ、Skype等)、邮箱等。根据软件故障的不同等级,所使用通讯工具的优先级如图2所示。
图2 不同故障等级所使用的通讯工具的优先级
(1) 软件出现严重故障时
那么此时情况就比较紧急,需要软件工程师在第一时间里将之解决掉,否则软件无法正常运行。这个时候,很明显手机或电话是最有效的通讯工具。故障现场的人员在电话里面将问题描述清楚,研发人员根据他们的描述来评估问题发生的大致位置,然后针对该问题进行修改。
如果使用即时通讯工具((像QQ、Skype等),那么打字需要耽误一定的时间,要把问题描述清楚又需要一定的时间。等研发工程师知道问题的原因,也许“花儿都谢了”,客户早已投诉到公司相关部门。邮箱是最次的选择,因为在紧急的情况下,想静下心来写一封邮件也是比较的困难。
顺便说一句,很多大公司不许员工在办公的电脑上安装QQ软件,防止他们将机密的信息传送出去。一定要使用公司允许的通讯工具,不要触犯信息安全的红线。
(2) 软件出现一般故障时
此时,事情不紧急,但还是需要尽快解决,否则长期存在就会演变为软件严重故障。
使用即时通讯工具,研发工程师能够知道软件运行的具体情况,针对现场支持人员的回复来安排工作计划。同时,现场支持人员将软件运行情况及生成的日志通过邮箱发送回来,方便开发人员按图索骥地找到程序的症结所在。
软件出现的故障,大都是一般性的问题,通过即时通讯工具和邮箱就能够搞定。当然,如果要想详细了解软件问题,也可以通过手机/电话来询问现场支持人员。
(3) 软件出现轻微故障时
此时,软件问题不足以影响到其功能流程,属于可改可不改的类型。
现场支持人员可以将此类问题描述通过邮箱发送回来,开发人员将之记录在一个备忘录里面,如果下次该软件产品有新增功能或优化,就将备忘录里面的问题一并解决了。
在实际的软件项目中,要根据具体情况,灵活地选择通讯工具,其目的就是尽快解决问题。
3. 解决软件故障的依据
在解决软件故障的过程中,软件工程师的所参照的东西包括:客户反馈的问题描述、本公司技术支持人员反馈的软件问题描述、程序执行过程中所生成的日志。
(1) 客户反馈的问题描述
这是软件问题的最初来源。一般说来,客户反馈的问题都比较的笼统,对问题的细节描述得比较少。
根据客户反馈,研发人员能够大致知道软件的问题出在哪里。但如果要准确定位问题,还需要有更详细的反馈。
(2) 本公司技术支持人员反馈的软件问题描述
如果软件出现问题,本公司一般会派技术支持人员赶到现场,协助客户解决问题。他们会将软件问题进行详细的描述,并通过邮箱和即时通讯工具等将这些描述返回给研发人员,供其分析时参考。
相对于客户的反馈,本公司技术支持人员的反馈更加的具体,也更加具有参考的价值。对于研发人员来说,要对这些信息进行仔细的分析,剔除不合理的部分。
(3) 程序执行过程中所生成的日志
这是最重要的查找问题的依据。通过对日志进行分析,一般可以准确地定位到是哪段代码出了问题,或是哪段代码的逻辑有问题。
对于研发人员来说,在查找问题原因之前,一定要叫现场支持人员将软件出现故障时候的日志保存并发送回来。这样可以对照着日志阅读代码,大部分问题的原因就能够很快找到了。
4. 解决软件故障的注意事项
在解决软件故障的过程中,我们需要注意以下几点:
(1) 不管是通过邮箱来与现场交流,还是通过即时通讯工具来联系,都要让自己的项目经理知道交流的内容(发送邮件时要记得把他们抄送上)。在出现问题的时候,也会有人和你一起分担责任。
(2) 研发人员提供的解决方案,一定要经过验证之后才提供给现场使用,不能将现场当成了测试站。如果方案不经验证直接使用,会出现意想不到的后果,甚至会出现客户的投诉。
(3) 在现场使用解决方案的时候,一定要随时和现场配合,解决该过程中出现的各种意外情况。
(4) 在现场使用完解决方案之后,一定要要求现场支持人员将软件运行状态相关记录和程序日志发回来检查一下,确保功能的正确性。
软件问题在所难免,重要的是我们要有正确的态度,要及时将问题解决。此外,在日常工作中,我们要注意程序代码的质量,将可能会出现的bug消灭在萌芽状态。
(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)