Software error caused ‘serious incident’ for airline
事件摘要
2020 年一架 Tui Boeing 737 搭载 187 名乘客起飞。Booking system 把 38 位以 “Miss” 为称谓的成年女性识别为儿童,以每人 35 kg 而不是成年女性标准 69 kg 计算。AAIB 把其中一次起飞列为 serious incident:系统记录的飞机重量比实际少 1,244 kg,导致计算出的起飞推力略低于所需值。航班最终安全抵达,但后果本可能非常严重。
这不是一个“简单 coding bug”
| 层级 | 问题 | 所需控制 |
|---|---|---|
| Requirements | 把称谓当作年龄代理;忽略文化与语言语义 | 明确 age / date-of-birth 为 authoritative field |
| Data model | Title、gender、age 与 standard weight 被错误耦合 | schema validation、domain rules、异常组合检测 |
| Testing | 真实称谓、online check-in 与 weekend workflow 未充分覆盖 | boundary、locale、workflow、regression testing |
| Operations | 已知问题长期依赖人工改 “Miss” 为 “Ms” | 可靠修复、监控、双重检查与 escalation |
| Change management | 自动修复在起飞前 24 小时 online check-in 情况下失效 | end-to-end test 与 rollout verification |
Professional responsibility
- 不能把 client requirement 简化为开发团队的文化假设。
- 对 safety-relevant calculation 必须验证 source data、转换规则与 fallback。
- 已知缺陷的人工 workaround 只能是有 owner、coverage、audit trail 与结束条件的临时 control。
- 系统“最后没有出事”不等于风险可接受;near miss 也应触发 root-cause analysis。
IE project 应用
- 找出项目中由 label、category 或 proxy 推断真实属性的地方。
- 为不同语言、文化、device 和 workflow 建立 representative test data。
- 对重要计算记录 input provenance、assumption 与 validation rule。
- 设计异常值告警和 human review,而不是静默继续。
- 验证 workaround 在所有入口与时间窗口都有效。