结盟众多企业“教练”, 共同设计、开发及提供人才培养解决方案,通过新颖多样的学习方式,针对性的定制化内容,助力企业全面提升竞争优势。
张银奎
2天
5200元/人
本课程培训周期为2天 软件瑕疵是软件工程的大敌,无数软件项目因为不断涌现的瑕疵而反复延迟,甚至干脆放弃。在已经发布给用户的软件产品中,几乎无一不还存留着瑕疵,这些瑕疵轻者影响用户体验和产品销量,重者导致产品召回,甚至事故和灾难……. 如何对抗软件瑕疵呢?很多软件团队仍然使用着很原始的做法,好像在家里打蚊子一样,发现一只,消灭一只,缺乏科学和系统的方法。 本培训紧密围绕软件瑕疵这一主题,从软件瑕疵的成本曲线讲起,基于在集成电路领域广被认可的Design For Test(D4T)和Design For Debug(D4D)思想,系统介绍如何从产品的设计阶段就开始规划对抗软件瑕疵的基础设施,如何在产品编码和实现阶段利用这些设施及早发现瑕疵,如何在测试阶段更快的降低瑕疵数量,以及如何在产品发布后及时发现和修复残留的瑕疵。 本培训第一次将对抗软件瑕疵的主要理论和成功方法集成到一起,精选多个实际的软件项目和产品作为案例,结合讲师在软件领域的十几年工作经验,理论与实践紧密结合,让您在轻松的故事和有趣的演示中领会到成功的方法和经验。
培训对象:
培训对象:软件团队的经理,项目负责人,架构师,程序员,测试经理,测试人员
时间 | 课题 | 描述 |
---|---|---|
Day1 Topic1 软件瑕疵概览 |
理解瑕疵 内因与表象 瑕疵分类:海森伯瑕疵,曼德 罗瑕疵,薛丁格瑕疵 谁的 Bug Bug 的生命周期 案例分析:2003 北美大停电 |
概述软件瑕疵的特征、生命周 期、分类方法和有关的术语;讲述软件历史上最著名的几个软件瑕疵的故事,有笑话,有灾难…… |
Day1 Topic2 软件瑕疵的成本曲线 |
水手一号太空船 直接和间接成本 成本-时间曲线 NT 3.1 构建过程 串行化开发 打断构建 “打断概率-团队规模”曲线 “检入开销-团队规模”曲线 案例分析:Vista 和Win7 |
发现和修复软件瑕疵都是有成本的,如何降低这个成本呢?了解软件瑕疵的成本曲线非常重要。这一部分将详细介绍软件瑕疵成本曲线的来历、形状特征和其中所蕴含的道理。 |
Day1 Topic3 思考根本—— 目前方法难以解决 的问题 |
实例演示:寻找 Win7“发疯” 的原因 缓冲区溢出 基于 Cookie 的安全检查 标准标注语言 根本问题 技术路线 代码角斗士 糟糕的代码 瑕疵的根源 职业道德 |
对人类而言,无形的软件比有形的硬件更加难以驾驭和征服!对抗软件难题,我们还没 有找到灵丹妙药。在诸多软件难题中,如何减少和消灭软件瑕疵是一个根本性的问题。对抗这一根本问题的根本方法是什么呢?本部分将分析著名软件公司和软件产品的实 际案例,向您分享我们独到的见解。 |
Day1 Topic4 D4T和D4D |
它山之石:从黄沙变成芯片 IC 的难题 JTAG 标准 Fuse 的作用 DFD 联盟 软件的 DFT 和DFD NT 的经验 典型技术 目标 DTrace 简介、架构 实例分析:ETW,CLFS |
在集成电路领域,发现和修正瑕疵的成本更高,于是Design for Debug(D4D)和Design for Test(D4T)思想在这一领域 出现了,并得到广泛的应用。它山之石可以攻玉,本部分将系统介绍D4D 和D4T 思想的 内涵、发展历史和在CPU 领域的应用案例。 |
Day2 Topic5 可调试设计—— 设计阶段的最佳实践 |
想到的则不难 可调试架构 基本原则 日志 输出调试信息 沉重的 print 转储 基类 调试模型 设计方案:代码的可追溯性 设计方案:数据的可追溯性 WMI 可配置性 可观察性 验证机制 追踪机制 不可调试代码 |
这一部分将介绍如何在软件项目的架构设计阶段贯彻 D4T 和D4D 思想,规划对抗软件瑕疵的基础设施,包括如何实现数据和代码的可追溯性,可观察性,自检设施和错误记录、错误通知和错误报告设施。 |
Day2 Topic6 程序员强则软件 强——开发阶段的最 佳实践 |
程序员的自我修养 “免加班秘诀” TDD Kent Beck 保证随时测试 吃“狗粮” 调试设施与生俱来 保证随时调试 调试与软件工程 支持调试 保证随时运行 典型错误 安全编程 |
软件的根本在于代码,代码的质量在于程序员。本部分从程序员的角度,探讨如何降低 DKLOC(每千行代码的缺欠数),从根本上少种下缺欠,早发现缺欠,保证软件质量。 本部分还将分析一些著名产品中的软件瑕疵,思考看似简单的编码问题如何导致严重 的后果。 |
Day2 Topic7 观止 (Showstopper)—— 测试阶 段的最佳实践 |
根本难题 启发 钓鱼法则 80/20 法则 敏捷宣言 敏捷测试 Cem Kaner Context Driven Testing 殖虫 突变测试 Beta 测试 也要测试调试版本 实例演示:基于模型的自动测 试方法(MBT) 测试无止境 |
当软件项目进入测试阶段后,软件瑕疵开始成为整个团队所关注的焦点,测试小组想法 设法找到瑕疵,程序员绞尽脑汁消除瑕疵,人们为瑕疵而争执,为瑕疵而战斗。越临近产品发布,这场战斗变得越紧张。本部分将以NT 团队开发NT 3.1 的故事为背景,探讨 测试与开发人员该如何同舟共济,密切配合,一起对抗软件瑕疵。 |
Day2 Topic8 自动诊断和远程 报告——产品支持 阶段的最佳实践 |
产品期瑕疵 WER WER 客户端 WER 服务器端 WER 服务 应用程序转储 遥感(Telemetry) 用户反馈 AutoBug CEIP Jon 谈收益 实例分析:WDI |
发布后软件可能运行在千差万别的用户环境中,测试阶段没有发现的瑕疵可能在用户 那里暴漏出来。对于发生在产品期的软件瑕疵该如何寻找根源呢?本部分将以微软产 品中广泛使用WER(Windows Error Report)机制为基础,详细介绍软件的自 动诊断和远程报告技术。 |