软件系统稳定性_第1页
软件系统稳定性_第2页
软件系统稳定性_第3页
软件系统稳定性_第4页
软件系统稳定性_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件稳定性目录一、稳定性与大数据应用二、软件调试之道三、修改代码的艺术 一、稳定性与大数据应用大纲 1、首先让人爽 首先做下调查,想了解什么。 2、中间让人轻松下 3、最后让人爽大纲 问题判定(重点) 问题分类(带过,了解下) 问题渠道(带过,了解下) 三、修改代码的艺术 修改引入率遗留代码修改算法1、理解代码2、确定修改点3、推测代码修改所产生的影响4、改动代码5、找出测试点6、编写测试 推测代码修改所产生的影响影响在代码中的传播有几种基本途径1、修改了函数返回值2、修改传参(传指针、传对象)传进来的参数3、修改了变量(静态、局部、全局变量)4、修改了文件、数据库结构格式(兼容性问题)5、抢

2、占了系统的资源系统资源类 1、内存资源 2、磁盘空间 3、Cpu资源(线程优先级调整、需要连续长时间运行的代码) 4、I/O资源(长时间的磁盘读写) 。 改动代码防错性程序设计一个程序的错误和异常处理机制是决定软件质量和可靠性的至关重要的因素。加上足够的log,以备不时之需 Log太多(冲log,占用空间大) Log太少(出现问题难以分析) 适当的log(关键变量、参数、关键流程分支) 工程版本和 用户版本 利用大数据SDK,收集异常触发点埋的log 编写测试推荐三本书 好的技术书籍一般有两种情况,一种是介绍一些新奇而有趣的技术,另一种是能将现有的技术阐述或概括得通透淋漓。然后,实际上还有第三

3、种-既非介绍新奇的技术,也非阐述既有技术,而是将被长期实践所证明了的大量技术手法囊括至一起。看起来琳琅满目五花八门,但又各有各的用武之地。这样的书一般少见,因为需要长期的积累和时间的洗礼。稳定性与大数据应用1、问题严重性判定2、问题分类3、问题反馈收集渠道4、大数据应用与后续发展方向问题严重性判定问题严重性判定问题严重性判定问题分类软件类, 退换机, 5.38%软件类, 厂外维修, 9.92%软件类, 厂内数据, 1.19%软件类, 客户投诉建单, 21.08%软件类, 官网, 16.78%软件类, 电话回访, 23.35%开关机类, 退换机, 6.36%开关机类, 厂外维修, 6.47%开关

4、机类, 厂内数据, 2.61%开关机类, 客户投诉建单, 2.69%开关机类, 官网, 0.51%开关机类, 电话回访, 0.00%重启类, 退换机, 2.93%重启类, 厂外维修, 2.79%重启类, 厂内数据, 1.07%重启类, 客户投诉建单, 2.24%重启类, 官网, 1.95%重启类, 电话回访, 2.48%软件类开关机类死机类重启类 问题反馈收集渠道大数据应用与后续发展方向异常日志大数据分析 重在快速识别概率性共性问题,极大提高解决此类问题的效率。 关注手机异常日志大数据汇总报告;云诊断后台系统。用户建议大数据分析 重在提高快速识别、获取各类型严重问题的效率;提升售后服务水平,提

5、升用户体验。 关注用户投诉大数据汇总报告。异常日志大数据分析用户建议大数据分析核心功能 用户填写信息提交给vivo,即刻得到问题回复 服务器统计各机型、各软件版本各类型问题增长、减少情况,监视问题突变,及时反馈给问题所属领域处理三、软件调试之27/5David J. Agans 资深调试专家, 善于解决一些最棘手的调试问题,涉及工业控制和监视系统、集成电路设计、掌上电脑、视频会议系统等。1976年毕业于麻省理工学院。David说,根据我26年的系统设计和调试经验,我发现了两件重要的事情。 (1) 如果查找一个bug花费了大量时间,那么原因可能是忽略了某个最基本的、最重要的规则,一旦应用了那条规

6、则,很快就会找到问题。 (2) 擅于快速调试的人已经深刻理解并应用了这些规则,而那些很难理解或使用这些规则的人则很难找到bug。 规则1:任何细节(线索)都可能是重要的规则2:理解系统规则3:制造失败规则4:不要想,而要看规则5:分而治之规则6:寻求帮助案例故事 我们正在调试一个视频压缩芯片,它用于传送视频会议信号,首先生成流畅的运动视频,并压缩成很少的字节,再通过电话线来传送视频。流畅的运动需要每秒钟有很多帧(或图像),我们把它设置为每秒钟30帧。虽然使用了一个很早的原型,但我会发现帧率偶尔会突然从30下降到2左右,而且没有明显的原因。除非重启芯片,否则不会再快起来。新的芯片显然有一个bug

7、,但令我不解的是到底是什么触发了帧率的下降。很快,我就肯定问题与芯片的运行时间长短无关。有时,它立即就失败了,有时它可以运行2个小时。而当我第二天再来时,系统完全正常了,没有发生一次错误。我想可能是由于房间温度变化的关系,于是试着对芯片进行加热和制冷,但没有效果。第二天芯片又开始出错。我想,这可能会使我疯掉,有一次我当我从椅子上站起来时,芯片又突然失败了。规则1:任何细节(线索)都可能是重要的规则1:任何细节(线索)都可能是重要的规则1:任何细节(线索)都可能是重要的1、发生了什么?2、谁?(什么机子、什么版本、什么配置)3、在哪里发生的?4、什么时候发生的?5、怎么发生的?6、发生概率、比例

8、、台数?规则2:制造失败 “什么也比不上直接取得的证据来得重要。” -福尔摩斯, 血字的研究目的 观察错误查找线索 确认问题是否修复1、自动化测试 提高效率的手段2、对比分析 缩小查找范围的手段3、模拟恶化 提高随机性问题的重现概率4、统计测试 暴露问题, 确认问题比例方法技巧 自动化测试作用 在测试或调试故障时,如果这个过程需要许多重复性手工操作步骤,则想办法使这个过程自动化能够提高效率。案例 电话本存在2000条记录时,滚动列表慢; 手机重启时低概率开不了机; 对比分析作用 对比分析通常可以缩小问题范围,帮助我们提高解决问题效率。问题类型1.第三方程序异常;2.网络问题;3.硬件类问题;4

9、.不同平台、同平台不同机型、同机型不同软件版本、不同环境地点、出现概率、比例;5.日志信息量大,不容易快速找出线索的问题,对比好坏情况的日志信息6.其它 模拟恶化 作用 通过制造失败的输入条件来,提高随机性问题的重现概 率。 问题类型1.和可插拔类硬件相关的问题(异常断电(电池)、不识别(sim卡、SD卡、usb、摄像头)等等)2.随着输入参数的范围问题概率发生变化的(环境温度、芯片时钟速度、供电电压等) 3.多种不容易碰在一起的条件偶尔碰在一起造成的问题(多线程之间的同步) 统计测试 作用 通过测试一定的数量手机、一定的次数、一定的时间来暴露问题、验证概率、比例、验证修改是否有效等。 应用场

10、景 主要应用于那些间歇性发生的问题,例如:芯片类失效统计不良率间歇性软件问题测试复现或验证修改 测试样本越大、次数越多、时间越长,结果越准确,但是付出的代价也越大,故而最好是能够找到一个与失败相关的事件序列,那么我们就可以制造这个事件序列,提高失败发生概率。现实情况 许多问题专项测试抓取完整日志复现不了,市场上却总是在报,怎么办?说明探案和解决问题的思路的相似性。然后就完了,让人爽、放松。复杂的软件问题处理 在这里比喻下福尔摩斯的,侦探工作,就像解决bug一样。需要有洞察力,知识,技能,方法等。“在没有事实作为参考以前妄下结论是个很大的错误。主观臆断的人总是为了套用理论知识而扭曲事实,而不是用

11、理论来解释事实。” -福尔摩斯,波西米亚丑闻 故事: 一位先生在一家大型工厂做设备维护工作,工作了很多年,直到退休。走了之后,工厂有段时间运转得很好,有一天一台机器突然停止工作,新的维护人员尝试了许多办法,机器还是不能工作,于是打电话给这位退休先生,但这位先生说修好需要10000美元,工厂很着急,答应了他。他带着工具来到工厂,走到机器旁,然后打开工具箱,拿出一把锤子,在机器的一侧敲了一下。机器开始运转了。他把锤子收起来,合上工具箱,然后索要他的10000美元。工厂主很生气:“用锤子敲一下就值10000美元吗?”“不,”他纠正他们,“敲一下只收10美元。知道在哪里敲击收9990美元。”内容简介

12、硬件缺陷和软件错误是“技术侦探”的劲敌,它们负隅顽抗,见缝插针。本书提出的九条简单实用的规则,适用于任何软件应用程序和硬件系统,可以帮助软硬件调试工程师检测任何bug,不管它们有多么狡猾和隐秘。作者使用真实示例展示了如何应用简单有效的通用策略来排查各种各样的问题,例如芯片过热、由蛋酒引起的电路短路、触摸屏失真,等等。本书给出了真正能够隔离关键因素、运行测试序列和查找失败原因的技术。无论你的系统或程序发生了设计错误、构建错误还是使用错误,本书都可以帮助你用正确的方法来思考,使bug自动暴露,进而一网打尽,斩草除根。作者简介 David J. Agans资深调试专家,善于解决一些最棘手的调试问题,

13、涉及工业控制和监视系统、集成电路设计、掌上电脑、视频会议系统等。1976年毕业于麻省理工学院,现为SeaChange International工程总监。曾经营计算机系统咨询公司PointSource,任Zydacron公司副总裁,还曾就职于Gould、仙童和DEC等知名企业。内容简介 修改代码的艺术包括了一组共24项解依赖技术,它们能帮助你单独对付代码中的问题片段,并实现更安全的修改。修改代码是每一位软件开发人员的日常工作。开发人员常常面对的现实是,即便是最训练有素的开发团队也会写出混乱的代码,而且系统的腐化程度也会日积月累。修改代码的艺术是一部里程碑式的著作,针对大型的、无测试的遗留代码基

14、,提供了从头到尾的方案,让你能够更有效地应付它们,将你的遗留代码基改善得具有更高性能、更多功能、更好的可靠性和可控性。本书是继重构和重构与模式之后探讨修改代码技术的又一里程碑式的著作,而且从涵盖面和深度上都超过了前两部经典。书中不仅讲述面向对象语言(Java、C#和C+)代码,也有专章讨论C这样的过程式语言。作者将理解、测试和修改代码的原理、技术和最新工具(自动化重构工具、单元测试框架、仿对象、集成测试框架等),与解依赖技术和大量开发和设计优秀代码的原则、最佳实践相结合,许多内容非常深入,而且常常发前人所未发。书中处处体现出作者独到的洞察力,以及多年开发和指导软件项目所积累的丰富经验和深厚功力

15、。通过这部集大成之作,你不仅能掌握最顶尖的修改代码技术,还可以大大提高对代码和软件开发的领悟力。作者简介 Michael Feathers 世界级面向对象技术专家,以丰富的软件项目开发经验著称。目前在世界顶尖的软件咨询公司Object Mentor从事敏捷方法/极限编程、测试驱动开发、重构、面向对象设计、Java、C#和C+等方面的培训和项目指导。内容简介 编写高质量的、没有bug的程序,是每位程序员所追求的目标。但随着软件规模越来越大,功能日趋复杂,这一目标变得越来越困难。要在测试前发现程序的错误,开发出无错误的程序,关键是弄清楚错误为何产生,又是如何产生。编程精粹编写高质量C语言代码给出了多条编程方面的指导,这些指导看似简单,却是作者多年思考及实践的结果,是对其编程经验的总结。书中解决问题的思考过程对于程序开发人员尤显珍贵。编程精粹编写高

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论