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