让你提前认识软件开发(44):如何解决软件故障?

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 第3部分 软件研发工作总结如何解决软件故障?         在软件产品的运营维护阶段,软件工程师的一项重要工作就是解决软件的bug。在学校的时候,大家学完一门课程,然后考试通过就万事大吉了。

第3部分 软件研发工作总结

如何解决软件故障?

 

        在软件产品的运营维护阶段,软件工程师的一项重要工作就是解决软件的bug。在学校的时候,大家学完一门课程,然后考试通过就万事大吉了。但在实际的软件开发项目中,将软件成功交付给客户,只是“万里长征走完了第一步”,后面还有大量的工作要做,例如:解决软件故障、新增功能、版本升级等。作为一名合格的软件工程师,一定要学会准确、迅速地解决软件出现的各种问题。

       为什么解决软件问题的能力如此重要?因为软件项目的成功率不容乐观。国内某IT公司对本公司内软件项目的成功率进行了长时间的追踪,统计的结果如图1所示。

1 软件项目的成功率统计结果

        从图1可以看出,软件项目的成功率是很低的,大部分的软件项目都会出现超期完成甚至是失败的情况。既然出了问题,那么就要及时将之解决掉。

        1. 软件故障的分类

        根据软件故障的严重程度,将其分为以下三类:

        (1) 严重故障

        这类故障一般会导致软件产品无法正常使用,需要立即解决。

        如果出现了此类问题,那么软件工程师就要放下手中的工作,全力以赴将问题处理掉。

        (2) 一般故障

        这类故障虽然不会导致软件产品无法正常使用,但会影响某些功能流程,会影响到用户的体验。

        如果出现了此类问题,那么软件工程师在手中任务不紧张的情况下,需要抽时间来处理掉,不能让问题一直遗留下去。

        (3) 轻微故障

        这类故障几乎不会对软件产品产生不良影响,用户也很少能够感觉得到故障的存在。

        对于追求高质量和良好用户口碑的公司,在后续产品功能升级的时候,会附带将该类问题一起处理掉。

 

        2. 解决软件故障所使用的通讯工具

        不管出现了哪类软件故障,作为负责任的软件工程师,我们都要在尽量短的时间内将之解决掉,为自己赢得赞扬,同时也为公司赢得口碑。

        一般说来,在解决软件故障的过程中,所使用的通讯工具包括:手机/电话、即时通讯软件(QQSkype)、邮箱等。根据软件故障的不同等级,所使用通讯工具的优先级如图2所示。

2 不同故障等级所使用的通讯工具的优先级

        (1) 软件出现严重故障时

        那么此时情况就比较紧急,需要软件工程师在第一时间里将之解决掉,否则软件无法正常运行。这个时候,很明显手机或电话是最有效的通讯工具。故障现场的人员在电话里面将问题描述清楚,研发人员根据他们的描述来评估问题发生的大致位置,然后针对该问题进行修改。

        如果使用即时通讯工具((QQSkype),那么打字需要耽误一定的时间,要把问题描述清楚又需要一定的时间。等研发工程师知道问题的原因,也许“花儿都谢了”,客户早已投诉到公司相关部门。邮箱是最次的选择,因为在紧急的情况下,想静下心来写一封邮件也是比较的困难。

        顺便说一句,很多大公司不许员工在办公的电脑上安装QQ软件,防止他们将机密的信息传送出去。一定要使用公司允许的通讯工具,不要触犯信息安全的红线。

        (2) 软件出现一般故障时

        此时,事情不紧急,但还是需要尽快解决,否则长期存在就会演变为软件严重故障。

        使用即时通讯工具,研发工程师能够知道软件运行的具体情况,针对现场支持人员的回复来安排工作计划。同时,现场支持人员将软件运行情况及生成的日志通过邮箱发送回来,方便开发人员按图索骥地找到程序的症结所在。

        软件出现的故障,大都是一般性的问题,通过即时通讯工具和邮箱就能够搞定。当然,如果要想详细了解软件问题,也可以通过手机/电话来询问现场支持人员。

        (3) 软件出现轻微故障时

        此时,软件问题不足以影响到其功能流程,属于可改可不改的类型。

        现场支持人员可以将此类问题描述通过邮箱发送回来,开发人员将之记录在一个备忘录里面,如果下次该软件产品有新增功能或优化,就将备忘录里面的问题一并解决了。

        在实际的软件项目中,要根据具体情况,灵活地选择通讯工具,其目的就是尽快解决问题。

 

        3. 解决软件故障的依据

        在解决软件故障的过程中,软件工程师的所参照的东西包括:客户反馈的问题描述、本公司技术支持人员反馈的软件问题描述、程序执行过程中所生成的日志。

        (1) 客户反馈的问题描述

        这是软件问题的最初来源。一般说来,客户反馈的问题都比较的笼统,对问题的细节描述得比较少。

根据客户反馈,研发人员能够大致知道软件的问题出在哪里。但如果要准确定位问题,还需要有更详细的反馈。

        (2) 本公司技术支持人员反馈的软件问题描述

        如果软件出现问题,本公司一般会派技术支持人员赶到现场,协助客户解决问题。他们会将软件问题进行详细的描述,并通过邮箱和即时通讯工具等将这些描述返回给研发人员,供其分析时参考。

        相对于客户的反馈,本公司技术支持人员的反馈更加的具体,也更加具有参考的价值。对于研发人员来说,要对这些信息进行仔细的分析,剔除不合理的部分。

        (3) 程序执行过程中所生成的日志

        这是最重要的查找问题的依据。通过对日志进行分析,一般可以准确地定位到是哪段代码出了问题,或是哪段代码的逻辑有问题。

        对于研发人员来说,在查找问题原因之前,一定要叫现场支持人员将软件出现故障时候的日志保存并发送回来。这样可以对照着日志阅读代码,大部分问题的原因就能够很快找到了。

 

         4. 解决软件故障的注意事项

        在解决软件故障的过程中,我们需要注意以下几点:

        (1) 不管是通过邮箱来与现场交流,还是通过即时通讯工具来联系,都要让自己的项目经理知道交流的内容(发送邮件时要记得把他们抄送上)。在出现问题的时候,也会有人和你一起分担责任。

        (2) 研发人员提供的解决方案,一定要经过验证之后才提供给现场使用,不能将现场当成了测试站。如果方案不经验证直接使用,会出现意想不到的后果,甚至会出现客户的投诉。

        (3) 在现场使用解决方案的时候,一定要随时和现场配合,解决该过程中出现的各种意外情况。

        (4) 在现场使用完解决方案之后,一定要要求现场支持人员将软件运行状态相关记录和程序日志发回来检查一下,确保功能的正确性。

 

        软件问题在所难免,重要的是我们要有正确的态度,要及时将问题解决。此外,在日常工作中,我们要注意程序代码的质量,将可能会出现的bug消灭在萌芽状态。

 

 

 

(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
安全
做好网站维护
持续吸引用户浏览
41 4
|
3月前
|
运维 Prometheus 监控
运维中的自动化实践每月一次的系统维护曾经是许多企业的噩梦。不仅因为停机时间长,更因为手动操作容易出错。然而,随着自动化工具的引入,这一切正在悄然改变。本文将探讨自动化在IT运维中的重要性及其具体应用。
在当今信息技术飞速发展的时代,企业对系统的稳定性和效率要求越来越高。传统的手动运维方式已经无法满足现代企业的需求。自动化技术的引入不仅提高了运维效率,还显著降低了出错风险。本文通过几个实际案例,展示了自动化在IT运维中的具体应用,包括自动化部署、监控告警和故障排除等方面,旨在为读者提供一些实用的参考。
|
5月前
|
敏捷开发
敏捷开发的全过程问题之需要明确需求的唯一优先级的问题如何解决
敏捷开发的全过程问题之需要明确需求的唯一优先级的问题如何解决
|
5月前
|
敏捷开发 应用服务中间件
敏捷开发的全过程问题之会议纪要同步给相关人员的问题如何解决
敏捷开发的全过程问题之会议纪要同步给相关人员的问题如何解决
|
6月前
|
监控 Java 测试技术
开发与运维技术问题之“化整为零”策略在项目风险管理中的作用如何解决
开发与运维技术问题之“化整为零”策略在项目风险管理中的作用如何解决
51 0
|
8月前
|
SQL 安全 算法
带你读《代码管理实践10讲》——七、3类代码安全风险如何避免?
带你读《代码管理实践10讲》——七、3类代码安全风险如何避免?
182 0
|
8月前
|
安全
软件开发外包风险如何避免,参考如下安全低风险的开发合作模式
在当今人力成本日渐增高的商业环境中,外包软件开发已成为许多企业的首选。然而,如何确保外包过程中的安全性与低风险性,成为众多企业在选择合作伙伴时的重要考量因素。以东莞梦幻网络科技公司为例,他们在外包软件开发服务中采取了一系列有效措施,成功构建了一套兼顾双方权益、保证项目顺利进行的安全低风险合作模式。
|
人工智能 运维 大数据
软件开发商何时介入生产过程?一起跟随程序员看看软件开发全阶段
软件开发商何时介入生产过程?一起跟随程序员看看软件开发全阶段
121 0
软件开发商何时介入生产过程?一起跟随程序员看看软件开发全阶段
|
存储 运维 Linux
DO447利用推荐做法进行开发--实施建议实践
DO447利用推荐做法进行开发--实施建议实践
167 0
DO447利用推荐做法进行开发--实施建议实践
|
测试技术 数据库
让你提前认识软件开发(43):软件产品升级流程
第3部分 软件研发工作总结 软件产品升级流程           一个软件产品做出来之后,并不是说永远都不用变了。基于以下的种种原因,我们需要对原软件产品进行升级:         (1) 用户对软件功能提出了新的要求,现在运行的软件不能满足用户的新需求。
1399 1