写点什么

NASA 是如何测试航天飞机和猎户座 MPCV 的软件的

  • 2025-08-18
    北京
  • 本文字数:1671 字

    阅读完需:约 5 分钟

大小:824.28K时长:04:41
NASA是如何测试航天飞机和猎户座MPCV的软件的

美国国家航空航天局(NASA)通过使用多重测试级别、独立验证、标准化、安全社区和工具来确保安全性。Darrel Raines 在NDC Tech Town上就航天飞机和猎户座多用途载人飞船(Orion MPCV)的软件开发和测试发表了演讲。他解释了他们是如何从失败和接近失误中进行学习,并不断改进其流程的。

 

与航天飞机时代的初期相比,软件开发领域已经有了很大的差异,因为我们现在拥有各种各样的工具,Darrel Raines 在“从航天飞机和猎户座多用途载人飞船的嵌入式软件开发中学习”的演进中这样说到。

 

Raines 说,各种级别的测试有助于确保软件开发的安全性。在软件被认为适合飞行之前,程序需要进行 4 到 7 个级别的测试,每个级别都依赖不同的人或团队来执行。程序有一个独立的验证和校验小组,他们会执行他们认为必要的任意测试以确保软件的安全性。这种多样化的人员参与测试有助于带来新的视野以及与原始开发者不同的视角。

 

Raines 提到,NASA 及其承包商都有一个安全社区。还有一个 NASA 软件质量保证(Software Quality Assurance,SQA)团队,通常还会有一个合作伙伴承包商 SQA 团队:

这些团队被要求监督软件开发的过程,并指出软件中的实际和潜在缺陷。他们还负责确保整体软件质量。他们关注软件的关键安全功能。

 

Raines 说,有了所有这些检查之后,我们开始感觉到有了足够的制衡措施来生产安全的软件。他补充说,即便如此,我们仍在不断重新评估我们的安全立场,并寻求改进。

 

Raines 解释说,NASA 的软件开发团队选择使测试更容易而不降低测试真实性的工具:

我们使用了涵盖电路内仿真器到独立测试环境的所有工具。目标是使用多样化的工具来发现所有可能的潜在错误,让每个工具的优势在发现缺陷中发挥作用。

 

Raines 说,NASA 有软件开发的标准,合同对特定设备有额外的要求。NPR 7150.2 要求所有测试都进行单元测试以衡量多重条件/决策覆盖率(MC/DC)。只要单元测试专注于展示所有功能,就有助于确保软件的质量。

 

Raines 提到,他们不能找到代码中的所有缺陷,但必须进行尝试。“我们越寻找,就会发现越多”。因此,必须在开发期间留出足够的时间进行充分的测试。

 

Raines 说,工程学这门科学尚未达到它理应要求的标准。软件开发是一门相对较新的学科,他解释道:

当我在大学时,甚至没有软件工程学位。因此,我们必须不断质疑我们所“知道”的,并尝试提高我们对这一领域的知识。

 

InfoQ 采访了 Darrel Raines,讨论了衡量软件测试和学习的问题。

InfoQ:你如何衡量软件测试的有效性?

Darrel Raines:一项基于 30 年航天飞机软件开发的研究显示,每个测试级别发现的剩余缺陷百分比与其他级别相同。因此,我们可以推断,我们进行的测试越多,我们发现的缺陷就会越多。回报会呈现出递减的趋势,但它是一种减少软件错误数量的有效方法。

 

InfoQ:你如何分析灾难和接近失误?

Raines:我们对每个案例都进行非常深入的分析。当我们失去一个航天器时,就像我们失去挑战者号和哥伦比亚号那样,我们会暂停该项目,直到这些问题的根本原因得到解释和修复。这是非常耗时的。但我们想要把事情做对。

 

当我们看到像挑战者号这样的事故时,它对团队成员的心理会造成很大的影响。我们会继续问自己,“我个人能做些什么来阻止这种情况发生?”当我们最终恢复前进的能力时,我们会带着我们在软件开发中犯的错误可能会导致某人失去亲人的警醒。需要有一种特殊类型的人来承受这种可能性,并且仍然能够在他们的工作中取得进步。

 

InfoQ:你如何从每个案例中学习?

Raines: 我们会记录灾难调查的结果。我每年都会接受过去失败和如何避免它们的培训。这是我们安全遗产的一部分,我们意识到我们必须执行我们的使命,尽管这非常困难。这种培训和 NASA 对安全的重视给了我做好工作的正确工具,我只需要执行即可。

 

我必须继续学习。我每年都会挑战自己去尝试不同的事情,做不同的事情,改进我所做的事情,并对我的学科了解得更多。当我学到新东西时,我会与我周围的人分享我的发现。这意味着我也必须倾听我的同事的发现。尽管我现在知道很多,但还有更多要去学习。

 

原文链接:

How NASA Tests Their Software for the Space Shuttle and the Orion MPCV

2025-08-18 14:154216

评论

发布
暂无评论

北京突然宣布,元宇宙重大消息

CECBC

面试官:Redis中的布隆过滤器与布谷鸟过滤器,你了解多少?

Java全栈架构师

Java redis 程序员 面试 后端

EA中的业务对象和业务实体你分得清吗?

涛哥 数字产品和业务架构

企业架构 TOGAF Archimate

桌面软件开发框架大赏

RTE开发者社区

软件开发

Prometheus 启动时被禁止的功能特性

耳东@Erdong

Prometheus Feature 7月月更

elasticsearch实战三部曲之二:文档操作

程序员欣宸

Java Elastic Search 7月月更

Discourse 自定义头部链接(Custom Header Links)

HoneyMoose

十月阿里社招Java面试题:数据库+分布式+高并发+JVM+Spring

程序知音

Java 阿里巴巴 程序员面试 后端技术 八股文

《SpringBoot 手册》:国际化组件 MessageSource

看山

springboot MessageSource

区块链,得这样练

CECBC

基于MySQL数据库,Redis缓存,MQ消息中间件,ES搜索引擎的高可用方案解析

Java永远的神

Java 数据库 redis ES 消息中间件

什么是数字货币、数字金融 和区块链?

CECBC

Microsoft SQL服务器被黑客入侵 带宽被窃取

郑州埃文科技

microsoft 数据安全 代理IP

分布式限流 redission RRateLimiter 的使用及原理

王小凡

Java redis 分布式 SpringCloud 框架

干货来袭!2022阿里巴巴全新出品Spring全家桶全栈笔记(终极版)奉上

程序员小毕

Java spring 程序员 面试 微服务

SpringBoot实现异步任务Async及异步任务实现发送邮件

宁在春

springboot 异步 7月月更 邮件发送

Bootstrap 模态框Modal【前端Bootstrap框架】

恒山其若陋兮

7月月更

新型LaaS协议Elephant Swap给ePLATO提供可持续溢价空间

股市老人

C# 之 $ – 字符串内插

陈言必行

7月月更

新一代开源免费的终端工具,太酷了

程序知音

备战金九银十!2022面试必刷大厂架构面试真题汇总+阿里七面面经+架构师简历模板分享

Java永远的神

Java 程序员 面试 程序人生 简历模板

手慢无!阿里亿级流量高并发系统设计核心原理全彩笔记现实开源

Java全栈架构师

Java 面试 程序人生 分布式锁 架构师

你必须知道的一些JVM技术点

Java学术趴

7月月更

关于JVM的内存模型

Java学术趴

7月月更

区块链的诞生是为了解决——“去中心化的协同”这个问题

CECBC

鸿湖万联扬帆富设备开发板正式合入OpenHarmony主干

科技汇

横向对比5种常用的注册中心,无论是用于面试还是技术选型,都非常有帮助

程序员小毕

Java 程序员 面试 微服务 后端

历时两月,终拿字节跳动offer,算法面试题分享「带答案」

程序知音

Java 字节跳动 算法 程序员面试 八股文

元宇宙改变人类工作模式的四种方式

CECBC

NASA是如何测试航天飞机和猎户座MPCV的软件的_安全_Ben Linders_InfoQ精选文章