不收"理论败北",只收"真有人死、真有钱烧、真有项目被叫停"的案例。SE 共识不是被某位天才建立的——是被这些尸体一具一具教出来的。10 座墓碑按时间排序,分成 4 类:安全软件失败、接口与单位失败、组织与文化失败、部署与流程失败。
I.
Three Mile Island
PWR control room failure
1979-03-28 · 🇺🇸 PA
主张纵深防御 + 告警面板足以让操作员正确响应任何瞬态。
致命PORV 卡开但指示灯显示"已关闭",操作员误判堆芯水位高、关停高压注射,约 50% 燃料熔化。
遗产人因工程进核电执照评审;NUREG-0700;INPO 行业自律。
值班长 Craig Faust 后来作证:"我看到墙上 100 多个红灯亮起,听到至少 6 种喇叭声,我根本分不清哪个先响。" 整场事故操作员喝了约 12 壶咖啡。
II.
Therac-25
Race condition in radiation therapy
1985–1987 · 🇨🇦/🇺🇸
主张软件互锁取代硬件互锁——更便宜、更灵活;软件经过实战验证无需独立形式化分析。
致命6 起严重过量辐射事故,3 死 3 重伤(最严重者 ~100 倍正常剂量)。1993 Leveson 论文逐行拆解:操作员 8 秒内修改光束类型 → 计数器溢出 → 互锁失效。
遗产IEC 61508 SIL;FDA SaMD 法规;几乎所有软件工程教材必读案例。
东德州癌症中心 Ray Cox 第二次过量后冲出治疗室喊:"你们对我做了什么?" 操作台只显示 "MALFUNCTION 54",AECL 客服建议"按 P 继续"。
III.
Challenger
Normalization of deviance
1986-01-28 · 🇺🇸
主张O-ring 历次烧蚀都"在可接受范围"——上次没事这次也没事。
致命升空 73 秒后火球爆炸,7 名宇航员死亡。Diane Vaughan 1996 揭示是"正常化越轨" + 工程师警告被压制。
遗产Roger Boisjoly 工程师警告流程标准化;NASA 安全文化重塑;SE 教材必收的"组织事故"案例。
Feynman 在 1986 Rogers 委员会发布会当众把 O-ring 浸入冰水演示——它瞬间脆化。"For a successful technology, reality must take precedence over public relations."
IV.
Chernobyl
Organizational accident, RBMK
1986-04-26 · 🇺🇦/🇷🇺
主张RBMK 反应堆运行规程足以应对所有低功率瞬态;操作员服从命令即可。
致命4 号机组凌晨低功率测试中正反馈失控,蒸汽爆炸释放 5.3 EBq 放射性。James Reason 1990 据此提出"瑞士奶酪"组织事故模型。
遗产WANO 全球核电运营者协会;IAEA 文化指标;STAMP 模型间接受到启发。
控制员 Akimov 直到死前都不相信反应堆已经爆炸——他派人去看堆顶时,那个员工先看到的是辐射检测器爆表。
V.
Ariane 5 Flight 501
Reused legacy software
1996-06-04 · 🇫🇷/🇪🇺
主张Ariane 4 SRI 惯导软件经过 5 年实战,可直接复用到 Ariane 5。
致命发射 37 秒自毁,损失 ~3.7 亿美元。原因:64 位浮点水平速度转 16 位整数溢出,新型号速度比 Ariane 4 大但代码无 try/catch。
遗产软件复用必须经新环境完整测试;ESA 复用准则改写;ICD 工程在欧洲航天界严格化。
事故报告 Lions 报告:故障根因是"未按 Ariane 5 实际飞行轨迹做仿真"——这种简单测试 Ariane 4 团队做过,Ariane 5 团队认为"复用就不用再做了"。
VI.
Mars Climate Orbiter
英制/公制单位错配
1999-09-23 · 🇺🇸
主张洛克希德和 JPL 是同一个项目,单位约定不必明文写在 ICD。
致命火星气候轨道器失踪,损失 3.27 亿美元。洛克希德地面软件用磅力·秒,JPL 飞行软件用牛顿·秒。轨道注入推力计算偏差 4.45 倍,探测器烧毁在火星大气。
遗产NASA 项目"任何接口必须有书面 ICD"硬性规定;单位转换在所有 NASA 软件入口校验。
事后调查:洛克希德工程师其实在导航数据里写过"lbf-s",JPL 团队从未读这份元数据——3.27 亿美元的预算和 1 行文档的距离。
VII.
FBI VCF + Sentinel
Government IT mega-failure
2005, 2010 · 🇺🇸
主张大瀑布合同 + 单一承包商可在 36 个月交付 FBI 案件管理系统。
致命VCF 项目 2005 取消(损失 $170M,净 $104M);继任 Sentinel 烧 $451M、6 年才上线。GAO 报告指控制流程失效 + 需求漂移 + SE 治理缺失。
遗产美国联邦 IT 项目转向敏捷/迭代;FITARA 法案;TechFAR 现代化合同范式。
VCF 报废前 FBI 探员仍在用 1990 年代的 ACS 终端——9/11 之后无法跨办公室共享线索的核心原因之一。
VIII.
A380 接线危机
CATIA v4/v5 incompatibility
2006 · 🇪🇺
主张汉堡和图卢兹工厂用各自习惯的 CAD 版本不影响整机集成。
致命线束图纸长度不一致——汉堡 CATIA v4、图卢兹 CATIA v5——整机 530 公里布线需返工。A380 推迟 2 年交付,亏损 ~60 亿欧元。空客 CEO Forgeard 辞职。
遗产MBSE/数字孪生鼻祖案例;空客转向"single source of truth"模型驱动工程;后续 A350 全 CATIA v5。
工程师后来回忆:当 530 公里电缆铺好后才发现两端长度不对——必须把整个机身的电缆重新拆一遍,每架飞机的人工成本是原计划 4 倍。
IX.
Boeing 737 MAX MCAS
Single-point failure + hidden control
2018-10, 2019-03 · 🇺🇸
主张737 MAX 与老 737 同型号证书,MCAS 是"轻微调整"——飞行员不需要专门训练,FAA 监管可走快速通道。
致命狮航 JT610(189 死)+ 埃航 ET302(157 死)共 346 死。MCAS 由单一 AoA 传感器触发,自动俯冲 2.5° 反复执行。Leveson 用 STAMP 重做分析揭示 23 处控制结构失效。
遗产FAA 认证流程改革;波音 CEO 辞职 + 200 亿美元损失;MCAS 改为双 AoA 比较 + 飞行员可关停。
埃航 ET302 副驾驶 Yared Getachew 25 岁,发现 MCAS 反复俯冲后大喊 "Pull up, pull up!"——但他和机长之前都不知道 MCAS 存在。
X.
Knight Capital
Deployment inconsistency, no kill-switch
2012-08-01 · 🇺🇸
主张新交易系统部署到 8 台服务器、回滚机制完备、无需人工 kill-switch。
致命部署到 7 台正确,第 8 台旧代码触发"测试模式"——45 分钟内 154 只股票自动连环交易,亏损 4.4 亿美元。Knight 当周流动性危机,被 Getco 收购。
遗产SEC Reg SCI 法规(市场系统必须有 kill-switch);金融业部署一致性自动检测成为标配;CI/CD 蓝绿部署主流化。
Knight CEO Tom Joyce 当天告诉媒体:"我们 17 年来第一次在交易日亏钱——也是最后一次。" 4 个月后公司被卖。