构建大规模安全关键系统的关键策略
在QCon纽约会议上,Robin Yeman分享了构建大规模安全关键系统的关键策略。她强调了将系统分解为更小可解决的问题、早期投资测试环境以及通过实验解决未知问题的重要性。
系统分解与问题解决
Yeman建议将系统问题分解为更小、可解决的子问题。首先解决已知问题,然后通过一系列实验解决未知问题。这种迭代和增量的方法有助于构建经过持续验证的解决方案。
测试环境的早期投资
Yeman强调了早期投资软件和硬件测试环境的重要性。她指出,许多情况下测试不够早,尤其是在瀑布式生命周期中,测试通常在后期进行。然而,在敏捷开发中,早期和频繁的测试是必要的。这种测试驱动的方法可以提高系统的安全性、可靠性、可用性和安全性。
系统目标的传达
Yeman建议通过系统的意图和目标来传达目标,而不是具体的任务。例如,确保系统能够安全地与军事平台通信,而不是具体定义系统必须通过link-16进行通信。
需求的具体化
Yeman指出,每个需求都应编写成不需要解释的目标测试用例。大规模系统由多个团队构建,不同的人对需求的理解不同,需求中的模糊性会导致问题。她举例说明了1999年火星轨道器因单位混淆导致的导航错误。
数字孪生与模型
Yeman提到,洛克希德·马丁公司在F-35或猎户座等项目早期就利用模型和数字孪生进行验证和确认。数字孪生是物理系统的数字副本,不同保真度的数字孪生根据生命周期阶段和投资程度而定。高保真孪生与物理系统连接,处理完整的遥测数据。
敏捷开发中的合规与安全
在敏捷开发中,Yeman建议从约束开始,使用安全测试驱动开发和合规驱动开发。这迫使我们在构建系统时将合规性和安全性融入其中,而不是在系统构建后附加。
早期反馈的好处
Yeman强调,早期反馈可以减少返工并尽早降低风险。她举例说明,在某些情况下,通过早期反馈,她发现超过30%的需求无法测试,从而节省了数百万美元和无数小时的挫折。她建议像木匠一样,测量两次,切割一次。
总结
构建大规模安全关键系统需要将系统分解为更小的问题、早期投资测试环境、通过实验解决未知问题,并通过系统的意图和目标传达需求。早期反馈和数字孪生的使用可以显著提高系统的安全性、可靠性和效率。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。