对抗软件瑕疵的最佳实践
Jack Zhang 查看讲师
百林哲咨询(北京)有限公司专家团队成员
业内资深工程师、内核调试专家,调试网站(ADVDBG.ORG)创始人。从事软件开发和研究工作,对IA-32 架构、操作系统内核、驱动程序、尤其是软件调试有较深入研究。
浏览:6097次
详情 DETAILS

简介

软件瑕疵是软件工程的大敌,无数软件项目因为不断涌现的瑕疵而反复延迟,甚至干脆放弃。在已经发布给用户的软件产品中,几乎无一不还存留着瑕疵,这些瑕疵轻者影响用户体验和产品销量,重者导致产品召回,甚至事故和灾难……如何对抗软件瑕疵呢?很多软件团队仍然使用着很原始的做法,好像在家里打蚊子一样,发现一只,消灭一只,缺乏科学和系统的方法。本培训紧密围绕软件瑕疵这一主题,从软件瑕疵的成本曲线讲起,基于在集成电路领域广被认可的Design For Test(D4T)和Design For Debug(D4D)思想,系统介绍如何从产品的设计阶段就开始规划对抗软件瑕疵的基础设施,如何在产品编码和实现阶段利用这些设施及早发现瑕疵,如何在测试阶段更快的降低瑕疵数量,以及如何在产品发布后及时发现和修复残留的瑕疵。本培训第一次将对抗软件瑕疵的主要理论和成功方法集成到一起,精选Windows、Solaris、FreeBSD等平台上多个实际软件项目和产品作为案例,结合讲师在软件领域的二十年从业经验,理论与实践紧密结合,让您在轻松的故事和有趣的演示中领会到成功的方法和经验。培训方式为演讲和演示。

目标

了解软件瑕疵的成本曲线,更多基于模型的自动测试方法(MBT)

测试实践、自动诊断等方法来优化系统

受众人群

开发工程师、技术开发者

课程时长

2天(12H)

分享提纲


课题描述

第一部分:软件瑕疵概览(1.5小时)

理解瑕疵

内因与表象

瑕疵分类:海森伯瑕疵,曼德罗瑕疵,薛丁格瑕疵

谁的Bug

Bug的生命周期

案例分析:2003北美大停电

概述软件瑕疵的特征、生命周期、分类方法和有关的术语;讲述软件历史上最著名的几个软件瑕疵的故事,有笑话,有灾难……

第二部分:软件瑕疵的成本曲线(1.5小时)

水手一号太空船

直接和间接成本

成本-时间曲线

NT 3.1构建过程

串行化开发

打断构建

“打断概率-团队规模”曲线

“检入开销-团队规模”曲线

案例分析:Vista和Win7

发现和修复软件瑕疵都是有成本的,如何降低这个成本呢?了解软件瑕疵的成本曲线非常重要。这一部分将详细介绍软件瑕疵成本曲线的来历、形状特征和其中所蕴含的道理。

第三部分:思考根本——目前方法难以解决的问题(1小时)

实例演示:寻找Win7“发疯”的原因

缓冲区溢出

基于Cookie的安全检查

标准标注语言

根本问题

技术路线

代码角斗士

糟糕的代码

瑕疵的根源

职业道德

对人类而言,无形的软件比有形的硬件更加难以驾驭和征服!对抗软件难题,我们还没有找到灵丹妙药。在诸多软件难题中,如何减少和消灭软件瑕疵是一个根本性的问题。对抗这一根本问题的根本方法是什么呢?本部分将分析著名软件公司和软件产品的实际案例,向您分享我们独到的见解。

第四部分:D4T和D4D(2小时)

它山之石:从黄沙变成芯片

IC的难题

JTAG标准

Fuse的作用

DFD联盟

软件的DFT和DFD

Windows NT的经验

典型技术

目标

DTrace简介、架构

实例分析:ETW,CLFS

在集成电路领域,发现和修正瑕疵的成本更高,于是Design for Debug(D4D)和Design for Test(D4T)思想在这一领域出现了,并得到广泛的应用。它山之石可以攻玉,本部分将系统介绍D4D和D4T思想的内涵、发展历史和在CPU领域的应用案例。

第五部分:可调试设计——设计阶段的最佳实践(2小时)

想到的则不难

可调试架构

基本原则

日志

输出调试信息

沉重的print

转储

基类

调试模型

设计方案:代码的可追溯性

设计方案:数据的可追溯性

WMI

可配置性

可观察性

验证机制

追踪机制

不可调试代码

这一部分将介绍如何在软件项目的架构设计阶段贯彻D4T和D4D思想,规划对抗软件瑕疵的基础设施,包括如何实现数据和代码的可追溯性,可观察性,自检设施和错误记录、错误通知和错误报告设施。

第六部分:程序员强则软件强——开发阶段的最佳实践(1小时)

程序员的自我修养

“免加班秘诀”

TDD

Kent Beck

保证随时测试

吃“狗粮”

验证机制(Verifier)

案例分析:WHQL,Windows的徽标计划

静态验证

调试设施与生俱来

保证随时调试

调试与软件工程

支持调试

保证随时运行

典型错误

安全编程

软件的根本在于代码,代码的质量在于程序员。本部分从程序员的角度,探讨如何降低DKLOC(每千行代码的缺欠数),从根本上少种下缺欠,早发现缺欠,保证软件质量。本部分还将分析一些著名产品中的软件瑕疵,思考看似简单的编码问题如何导致严重的后果。

第七部分:观止(Showstopper)——测试阶段的最佳实践(1.5小时)

根本难题

启发

钓鱼法则

80/20法则

敏捷宣言

敏捷测试

Cem Kaner

Context Driven Testing

殖虫

突变测试

Beta测试

也要测试调试版本

实例演示:基于模型的自动测试方法(MBT)

测试无止境

当软件项目进入测试阶段后,软件瑕疵开始成为整个团队所关注的焦点,测试小组想法设法找到瑕疵,程序员绞尽脑汁消除瑕疵,人们为瑕疵而争执,为瑕疵而战斗。越临近产品发布,这场战斗变得越紧张。本部分将以NT团队开发NT 3.1的故事为背景,探讨测试与开发人员该如何同舟共济,密切配合,一起对抗软件瑕疵。

第八部分:自动诊断和远程报告——产品支持阶段的最佳实践(1.5小时)

产品期瑕疵

WER

WER客户端

WER服务器端

WER服务

应用程序转储

遥感(Telemetry)

用户反馈

AutoBug

CEIP

Jon谈收益

实例分析:WDI

发布后软件可能运行在千差万别的用户环境中,测试阶段没有发现的瑕疵可能在用户那里暴漏出来。对于发生在产品期的软件瑕疵该如何寻找根源呢?本部分将以微软产品中广泛使用WER(Windows Error Report)机制为基础,详细介绍软件的自动诊断和远程报告技术。
企业服务热线:400-106-2080
电话:18519192882
投诉建议邮箱:venus@bailinzhe.com
合作邮箱:service@bailinzhe.com
总部地址:
北京市-丰台区-汽车博物馆东路6号3号楼1单元902-B73(园区)
全国客户服务中心:
天津市-南开区-桂苑路15号鑫茂集团鑫茂军民园1号楼A座802-803
公众号
百林哲咨询(北京)有限公司 京ICP备2022035414号-1