案例1:Ariane 5火箭
1996年6月4日,Ariane 5火箭在法属圭亚那库鲁航天中心首次发射。火箭在发射37秒之后偏离其飞行路径并突然发生爆炸,与Ariane5火箭一同化为灰烬的还有4颗太阳风观察卫星。这是世界航天史上的一大悲剧,也是历史上损失最惨重的软件故障事件。
事后的调查显示,控制惯性导航系统的计算机向控制引擎喷嘴的计算机发送了一个无效数据,其原因在于将一个64位浮点数转换成16位有符号整数时产生了溢出。这个溢出值测量的是火箭的水平速率,开发人员在设计Ariane 4火箭的软件时,认真分析了火箭的水平速率,确定其值绝不会超出一个16位的数。而Ariane 5火箭比Ariane 4的速度高出近5倍,显然会超出一个16位数的范围。不幸的是,开发人员在设计Ariane 5火箭时只是简单地重用了这部分程序,并没有检查它所基于的假设。
案例2:Therac 25 放射治疗仪
Therac 系列仪器是由加拿大原子能有限公司(AECL)和法国CGL公司联合制造的一种医用高能电子线性加速器,用来杀死病变组织癌细胞,同时使其对周围健康组织影响尽可能降低,Therac 25属于第三代医用高能电子线性加速器。20世纪80年代中期,Therac 25放射治疗仪在美国和加拿大发生了多次医疗事故,5名患者治疗后死亡,其余患者则受到了超剂量辐射而严重灼伤。
Therac 25放射治疗仪的事故是由操作员失误和软件缺陷共同造成的。当操作员输入错误而马上纠正时,系统显示错误信息,操作员不得不重新启动机器。在启动机器时,计算机软件并没有切断X光束,病人一直在治疗台上接受着过量的X光照射,最终使辐射剂量达到饱和的25000拉德,而对人体而言,辐射剂量达到1000拉德就已经是致命的了。
案例3:东京证券交易所
2005年11月1日,日本东京证券交易所股票交易系统发生大规模系统故障,导致所有股票交易全面告停,短短2个小时造成了上千亿元的损失。故障原因是当年10月为增强系统处理能力而更新的交易程存在缺陷,由于系统升级造成文件不兼容,从而影响交易系统的使用。
案例4:12306火车票网上订票系统
国内12306铁道部火车票网上订票系统历时两年研发成功,耗资3亿元人民币,于2011年6月12日投入运行。2012年1月8日春运启动,9日网站点击量超过14亿次,系统出现网站崩溃、登录缓慢、无法支付、扣钱不出票等严重问题。2012年9月20日,由于正处中秋和“十一”黄金周,网站日点击量达到14.9亿次,发售客票超过当年春运最高值,再次出现网络拥堵、重复排队等现象。其故障的根本原因在于系统架构规划以及客票发放机制存在缺陷,无法支持如此大并发量的交易。