你的位置: 首页 > 新闻博客 > 技术博客

美国国家航空航天局 (NASA)程序员编程的10条黄金法则

2023-04-20 14:50:57

rules-of-coding-nasa.jpg

 begin

您知道美国国家航空航天局 (NASA) 的程序员如何编写关键项目代码吗?为了编写具有高可读性、安全性和易于理解的代码,NASA推进火箭实验室制定了10条开发应用程序和应用程序的规则,该机构的所有开发人员都必须遵守这些规则。我们正在继续审查这些规则...

可以想象,在NASA担任程序员和开发人员是编程世界中最具吸引力和最危险的工作之一。这的确很危险,因为一个错误bug可以让无数人数年的工作和数百万美元在太空中灰飞烟灭!NASA程序员编写代码和开发软件,甚至不能自信地判断它是重要的还是不重要的。要了解这种软件的重要性,请想象自己是一名NASA程序员。在这种情况下,遵循一套代码规则和原则是绝对必要的。这些规则涵盖了软件开发的不同方面,例如如何编写NASA软件,编程语言中的哪些功能应该可用,等等。

虽然很难就编码标准达成普遍协议,但NASA的JPL(推进火箭研究实验室)已经为程序员制定了名为“安全代码编写的10条法则”的规则。这些规则通常侧重于 C 编程,因为 JPL 使用这种语言的历史悠久,但也很容易将这些规则应用于其他编程语言例如我们最喜欢的Pascal。根据JPL研究团队负责人Gerard Holzmann的说法,这些规则是为了实现高安全性而编写的,程序员应该遵循这些规则。NASA编程的10条法则是:

1、在非常简单的控制结构中限制代码执行的流程。避免使用 goto、longjmp 和 setjmp 指令结构,以及直接和间接递归命令。

2、所有循环必须具有最大迭代次数。此规则可能会让您认为定义最大循环重复次数会静态限制它并且不允许进展(如果循环范围不是静态的,请忽略此规则)。

3、避免在初始化后动态分配内存。

4、函数(函数或过程)及其主体应逐行书写,并以符合编程原理的正确格式书写,并且可以轻松打印在标准纸张上。在某种程度上,函数每行编写的代码数不应超过 60 行限制。

5、每个函数的通知数必须至少为两个。用于调查异常情况的通知应以在软件的最终版本中没有通知的方式进行管理。通知不应该有任何副作用,应该定义为“布尔”测试,即只考虑两种不寻常和正常的情况。一旦通知执行失败,就必须调用其恢复指令。例如,可以将错误消息返回或返回给执行通知的函数。善用通知,不要简单地走过它们。

6、应在尽可能小的范围内定义包含特定数据的数据对象。为每个数据对象指定的范围应与其数据内容一致,而不是更多。

7、对于输出不是 void 的任何函数,应在调用或调用期间检查输出值。还应适当检查同一函数内每个函数的输入参数的验证。

8、预处理器或预处理的使用应仅限于简单的宏和头文件。不允许使用令牌、省略号和递归宏调用 (RMC)。所有宏都应开发为一个在语法上具有含义的单元。

9、限制指针的使用。更重要的是,不允许引用或多级引用。引用指针的方式不应隐藏在宏定义或 typedef 定义中。根本不要对函数使用指针。

10、所有代码必须由最编译器和最严格的设置进行编译,并且从第一天开始编译过程中遇到的所有错误都必须与代码一起记录在开发日志上。

最后,必须使用相同的编译器和严格的设置编译所有代码,并且没有错误。所有编写的代码应每天至少审查一次,甚至使用最新的源代码分析技术进行更多审查,并且结果应没有任何分析错误。

总的来说,NASA对这些规则的看法可以总结如下:

这些规则的工作方式与你的汽车安全带相同;一开始你可能觉得不舒服,但一旦你习惯了它们,就不可能想象不适用。

一个有趣的事实是,2004年,当我们敬爱的Firouz Naderi博士管理的火星探测器成功降落在火星的土壤上时,与该项目相关的大约500万行Java代码得到了开发公司的书面合同担保!显然,如果代码中存在导致项目失败的错误,该公司将被罚款约2亿美元!而这十条编程法则将让你的公司避免这种损失。

end。


QQ在线咨询
售前咨询
0531-66900120
售后服务
13287796906
QQ在线咨询
售前咨询
0531-66900120
售后服务
13287796906