对抗软件瑕疵的最佳实践

对抗软件瑕疵的最佳实践
    马上咨询


    张银奎  Intel 前英特尔软件架构师,系统调试专家

    微软全球最有价值技术专家(MVP),同济大学电子与信息工程学院特邀讲师。 《软件调试》、《格蠹汇编》的作者,新版《十万个为什么》电子分册撰稿人之一,《程序员》杂志调试之剑栏目作者 。
    1996年毕业于上海交通大学信息与控制工程系,在软件产业工作20年,在多家跨国公司历任开发工程师、软件架构师、开发经理、项目经理等职务,对 IA-32 架构、操作系统内核、驱动程序、虚拟化技术、云计算、软件调优、尤其是软件调试有较深入研究。
    从2005年开始公开讲授“Windows内核及高级调试”课程,曾在微软的Webcast和各种技术会议上做过《Windows Vista内核演进》、《调试之剑》(全球软件案例研究峰会)、《感受和思考调试器的威力》(CSDN SD2.0大会)、《Windows启动过程》、《如何诊断和调试蓝屏错误》、《Windows体系结构——从操作系统的角度》等。
    讲师认为软件瑕疵是个永恒的难题,因此在这方面投入了很多时间,探索出了一套以调试器为核心的方法。与瑕疵和调试相关的另一个永恒难题就是软件的安全性。安全漏洞,可以说是一种特别的瑕疵。发现和研究安全漏洞离不开调试方法。因此花费大量时间研究软件安全和渗透测试。
    翻译(合译)作品有《观止——微软创建NT和未来的夺命狂奔》、《数据挖掘原理》、《机器学习》、《人工智能:复杂问题求解的结构和策略》等。 

    课程简介

    本培训紧密围绕软件瑕疵这一主题,从软件瑕疵的成本曲线讲起,基于在集成电路领域广被认可的Design For Test(D4T)和Design For Debug(D4D)思想,系统介绍如何从产品的设计阶段就开始规划对抗软件瑕疵的基础设施,如何在产品编码和实现阶段利用这些设施及早发现瑕疵,如何在测试阶段更快的降低瑕疵数量,以及如何在产品发布后及时发现和修复残留的瑕疵。

    目标收益

    1、了解如何从产品的设计阶段就开始规划对抗软件瑕疵的基础设施。
    2、如何在产品编码和实现阶段利用这些设施及早发现瑕疵。
    3、如何在测试阶段更快的降低瑕疵数量。
    4、如何在产品发布后及时发现和修复残留的瑕疵。

    培训对象

    软件团队的经理,项目负责人,架构师,程序员,测试经理,测试人员

    课程大纲

    Day1
    Topic1  软件瑕疵概览
    • 理解瑕疵
    • 内因与表象
    • 瑕疵分类:海森伯瑕疵,曼德
    • 罗瑕疵,薛丁格瑕疵
    • 谁的 Bug
    • Bug 的生命周期
    • 案例分析:2003 北美大停电

    Topic2  软件瑕疵的成本曲线
    • 水手一号太空船
    • 直接和间接成本
    • 成本-时间曲线
    • NT 3.1 构建过程
    • 串行化开发
    • 打断构建
    • “打断概率-团队规模”曲线
    • “检入开销-团队规模”曲线
    • 案例分析:Vista 和Win7

    Topic3  思考根本——目前方法难以解决的问题 
    • 实例演示:寻找 Win7“发疯”
    • 的原因
    • 缓冲区溢出
    • 基于 Cookie 的安全检查
    • 标准标注语言
    • 根本问题
    • 技术路线
    • 代码角斗士
    • 糟糕的代码
    • 瑕疵的根源
    • 职业道德

    Topic4  D4T和D4D 
    • 它山之石:从黄沙变成芯片
    • IC 的难题
    • JTAG 标准
    • Fuse 的作用
    • DFD 联盟
    • 软件的 DFT 和DFD
    • NT 的经验
    • 典型技术
    • 目标
    • DTrace 简介、架构
    • 实例分析:ETW,CLFS

    Day2
    Topic5  可调试设计——设计阶段的最佳实践 
    • 想到的则不难
    • 可调试架构
    • 基本原则
    • 日志
    • 输出调试信息
    • 沉重的 print
    • 转储
    • 基类
    • 调试模型
    • 设计方案:代码的可追溯性
    • 设计方案:数据的可追溯性
    • WMI
    • 可配置性
    • 可观察性
    • 验证机制
    • 追踪机制
    • 不可调试代码

    Topic6  程序员强则软件强——开发阶段的最佳实践
    • 程序员的自我修养
    • “免加班秘诀”
    • TDD
    • Kent Beck
    • 保证随时测试
    • 吃“狗粮”
    • 调试设施与生俱来
    • 保证随时调试
    • 调试与软件工程
    • 支持调试
    • 保证随时运行
    • 典型错误
    • 安全编程

    Topic7  观止(Showstopper)——测试阶段的最佳实践 
    • 根本难题
    • 启发
    • 钓鱼法则
    • 80/20 法则
    • 敏捷宣言
    • 敏捷测试
    • Cem Kaner
    • Context Driven Testing
    • 殖虫
    • 突变测试
    • Beta 测试
    • 也要测试调试版本
    • 实例演示:基于模型的自动测
    • 试方法(MBT)
    • 测试无止境

    Topic8  自动诊断和远程报告——产品支持阶段的最佳实践 
    • 产品期瑕疵
    • WER
    • WER 客户端
    • WER 服务器端
    • WER 服务
    • 应用程序转储
    • 遥感(Telemetry)
    • 用户反馈
    • AutoBug
    • CEIP
    • Jon 谈收益
    • 实例分析:WDI