对抗软件瑕疵学习心得

主讲:张银奎

《软件调试》一书的作者,《程序员》杂志调试之剑栏目作者,高端调试网站(ADVDBG.ORG)的创始人。毕业于上海交通大学信息与控制工程系,长期从事软件开发和研究工作,对 IA-32 架构、操作系统内核、驱动程序、尤其是软件调试有较深入研究。从2005年开始公开讲授“Windows内核及高级调试”课程,曾在微软的Webcast和各种技术会议上做过《Windows Vista内核演进》、《调试之剑》(2008年中国软件技术大会)、《感受和思考调试器的威力》(CSDN SD2.0大会)、《Windows启动过程》、《如何诊断和调试蓝屏错误》、《Windows体系结构——从操作系统的角度》(以上三个讲座都是微软“深入研究Windows内部原理系列”的一部分)等。翻译(合译)作品有《观止——微软创建NT和未来的夺命狂奔》、《数据挖掘原理》、《机器学习》、《人工智能:复杂问题求解的结构和策略》等。

介绍了瑕疵的分类:
1)海森伯瑕疵(Heisen Bug):测不准原理,观察者效应,在调试分析时便消失的Bug
2)曼德罗瑕疵(Mandel Bug):根源复杂,行为混沌无序
3)薛丁格瑕疵:只有读过源代码或者使用非常方式才能发现的瑕疵

介绍了著名的瑕疵:北美大停电,火星探测器因为没有进入预定轨道而摧毁,水手一号太空船发射293秒后因为偏离轨道而销毁。

相互依赖是拖延软件进度的最好的理由,要从管理和技术两个方面双管齐下减省依赖,防止推诿扯皮。
不断增加的功能和随之引入的瑕疵是软件工程中的基本矛盾。
软件的根本在代码,不要脱离代码来讨论软件问题。

瑕疵的根源在代码:
多余代码
缺少代码
错误代码

DFT
DFD

DTRACE

应该像重视消防设施那样重视调试设施,使其成为始终存在,不可缺少的部分。

D4D
提高开发开发效率,及早发现瑕疵

基本原则:
1、最短距离原则:使错误检查代码距离失败操作的距离最短
2、最小范围原则:使错误报告或高度信息所能定位到的范围尽可能小
3、立刻终止原则:当检测到严重的错误时,使程序立刻终止并报告第一现场的信息
4、可追溯原则:使代码的执行轨迹可以 追溯,数据的变化过程可以追溯
5、可控制原则:通过简单的方式可以控制程序的执行轨迹
6、可重复原则:使程序的行为可以被简单地重复
7、可观察原则:使软件的特征和内部状态可以被方便地观察
8、可辨识原则:可以简单地辨识出每个模块乃至类或函数的版本

尽量少用system.out,要有一个debug的内部版本,其实如果用log4j的话,因为log4j有不同的level, 比如info, debug and error,完全可以开闭不同的level。

自动屏幕截图
自动诊断和远程报告,cron job?
Windows Error Reporting (WER)

用户80%的时间是在使用20%的常用功能
用户有80%可能遇到的瑕疵存在于只占20%的代码中
优先测试常用功能



















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值