第1章 0.000000095的误差夺走28条生命 1
飞向美空军基地的“飞毛腿”导弹 1
“爱国者”导弹系统结构 3
导弹与软件的对决 4
美军的应对 6
“爱国者”注定这天要出事 7
第2章 遥远的火星探测之路:软件错误导致两架探测器成为火星尘埃 11
太空探测的“文艺复兴” 11
苏联:迈出火星探测第一步 11
美国火星探测首次成功 14
第一架火星着陆器 15
火星探测的主力军——美国 18
火星探测重新升温 18
NASA的火星探测计划 19
MCO尝试进入轨道 20
MCO通信中断 21
气动减速 22
单位标记不一致导致的悲剧 23
另一台探测器:MPL 26
虽然已进入火星大气层,但是 26
MCO与MPL留下的教训 27
第3章 “喂?喂?”一行代码导致的AT&T长途电话系统瘫痪事件 29
AT&T的历史 29
值得信赖的AT&T长途网络 31
出现网络故障 33
问题的起因在于一行错误代码 35
电话事故之后 35
第4章 软件错误带来的黑暗:2003年美国东北部大停电 39
韩国9·15停电事故 39
2003年美国东北部大停电 41
灾难开始 42
接连跳闸 46
最后的堡垒——Sammis-Star 345千伏输电线 48
临界点 51
iPad上市当天排起的长队 53
为什么没有处理预警? 56
第5章 不灭的“约克城”号 59
约克城 59
太平洋战争和“约克城”号 59
军费缩减计划示范舰 67
光荣的硬件,不争气的软件 68
第6章 因特网蠕虫病毒的开始——莫里斯蠕虫 71
互联网的特性 71
具备攻击与防御能力的软件 72
软件漏洞:蠕虫病毒出现 72
和蠕虫的斗争 74
“大虫”后续 76
莫里斯事件逸闻 77
第7章 软件也能使战机坠毁 79
瑞典、JAS 39“鹰狮”战斗机坠毁事故 80
“鹰狮”试飞机坠毁 80
再次坠毁 81
原因在于软件 83
航空器中软件的作用日益突出 84
第8章 70亿美元的烟花秀:阿丽亚娜5号运载火箭航班501 87
蓬勃发展的商业化航天技术 87
阿丽亚娜5号火箭的研发 88
阿丽亚娜5号运载火箭航班501 89
事故还原 89
结论 97
第9章 软件可用性的错误设计:“文森斯”号事件 101
战火从陆地蔓延到海面 103
关系日益紧张的美国和伊朗 106
失误和误判,命运的交响曲 108
射向伊朗航空655次航班的导弹 114
飞机被击落之后 114
第10章 计算机难以理解的人类的时间计算 115
闰年 115
微软的野心之作与闰年Bug 116
让全世界游戏玩家备受煎熬PS3 闰年Bug 118
医院系统故障,纸笔代替电脑 119
罢工的导航仪 120
日常生活中的Y2K Bug 121
第11章 游戏Bug 125
生活中的电脑游戏 125
各种游戏Bug 125
《星战前夜》 128
《魔兽世界》 129
第12章 核武禁果 133
飞向苏联上空的核导弹 134
佩特罗夫的判断 135
佩特罗夫判断之后 137
北美防空联合司令部:NORAD 137
凌晨3点钟的电话 139
第13章 医疗仪器软件杀人:Therac-25医疗事故 141
与日俱增的癌症患者与癌症治疗方法 141
放射治疗 142
Therac-25的研发 143
1985年6月,Therac-25的第一位受害者 145
1985年7月,Therac-25的第二位受害者 146
1985年12月亚基马谷纪念医院,Therac-25的第三位受害者 148
1986年3月东得克萨斯癌症治疗中心,Therac-25的第四位受害者 149
1986年4月东得克萨斯癌症治疗中心,Therac-25的第五位受害者 153
1987年1月亚基马谷纪念医院,Therac-25的第六位受害者 155
事故原因1:软件 156
事故原因2:用户界面 159
事故原因3:文档 160
事故原因4:AECL对软件的无知 160
软件错误带来的惨剧 161
第14章 因软件错误而消失的火星探测器 169
“火星全球勘测者”号 169
“火星全球勘测者”号突然终止任务 171
软件错误惹的祸 173
开启火星探测机器人时代的“索杰纳” 175
“勇气”号:真正的火星探测机器人 178
“勇气”号的第一次危机:出现软件错误 178
“勇气”号的第二次危机:轮子出现故障 180
最后的“勇气”号 180
第15章 玩弄世界于股掌之间的金融软件Bug 183
温哥华证券交易所事件 183
四舍五入惹的祸 184
澳大利亚昆士兰州银行卡终端机故障 185
导致公司破产的软件Bug 187
第16章 软件本可以阻止的飞行事故:大韩航空801次航班和美国航空965次航班空难 191
关岛惨案:大韩航空801次航班 191
坠毁前的记录 192
本可以阻止的事故 195
假如软件发挥了应有的作用 196
美国航空965次航班 198
开始出错 201
“我们现在在哪?” 206
部分责任在于软件 208
第17章 153亿美元的彩票:数字预算会计系统 211
徘徊在地狱和天堂之间的政府 211
数字预算会计系统的开发 211
“较差”的项目 212
无视审计结果并强行运行系统 213
意料之中的漏洞 213
终于酿成大错 214
复合型人才的重要性凸显 214
第18章 丰田汽车“踏板门”事件与软件 217
“刹车失灵了” 218
丰田召回危机 219
丰田软件检测 223
ECU软件有可能导致汽车突然加速 224
Bug百出的丰田软件 226
Barr Group报告和丰田的低头认错并无直接关系 227
写给软件开发者的后记:为了开发无Bug软件 229
最早的Bug 229
软件的原罪:Bug 229
软件开发过程 231
软件Bug的成本 231
编码规范 232
静态代码分析 234