永发信息网

NASA 顶级程序员是如何编程的

答案:1  悬赏:30  手机版
解决时间 2021-11-27 02:17
NASA 顶级程序员是如何编程的
最佳答案
你好:美国国家航空航天局(NASA)开发人员的工作是编程界最具挑战性的工作之一。 他们编写代码并开发关键任务应用程序,安全是他们主要关注的重点。
在这种情况下,制定严谨的编码准则并遵循,对于他们来说十分重要。这些规则涵盖了软件开发的各个方面,如应该如何编写软件,应该使用哪些语言特性等等。
尽管很难就一个编码标准达成共识,NASA 的 JPL 首席科学家 Gerard J. Holzmann 还是制定了一套名为“发展安全关键代码的十大规则”的代码准则,由所有工作人员共同遵循。
由于 JPL 的工作内容与 C 语言相关,因此本指南主要关注用 C 编程语言编写的代码。但也可以灵活运用到其他语言上。
NASA 的十大编码准则如下:
1、简化控制流程:使用尽可能精简的控制流程构造编写程序 – 不要使用 setjmp 或 longjmp 构造、goto 语句,以及直接或间接的递归调用。
2、为循环使用固定次数上限:所有的循环必须有一个固定的上限。 必须可以被某个检测工具静态证实,该循环不能达到预置的迭代上限值。如果该上限值不能被静态证实,那么可以认为违背该原则。
3、不要在初始化完成后进行动态内存分配。
4、不使用冗长的函数:如果标准格式为一个语句一行、一个声明一行,那么函数的长度应在一张纸的范围内,即每个函数的代码行不能超过 60。
5、低断言密度:代码中断言的密度平均低至每个函数 2 个断言。断言被用于检测在实际执行中的异常情况。断言必须没有副作用,并应该定义为布尔测试。当一个断言失败时,应该执行一个明确的恢复操作,例如,把错误情况返回给执行该断言失败的函数调用者。对于静态工具来说,任何能被静态工具证实其永远不会失败或永远不能触发的断言违反了该规则(例如,通过增加无用的 assert(true) 语句是不可能满足这个规则的)。
6、以最小范围级别声明数据对象:该原则同时也是数据隐蔽(Data hiding)的基本原则。所有数据对象均必须以尽可能最小的范围级别进行声明。
7、检查参数和返回值:应在每次调用函数后检查非空函数的返回值,并在每个函数内部检查参数的有效性。
8、限制预处理程序的使用:预处理器的使用仅受包含头文件和简单的宏定义的限制。符号拼接、可变参数列表(省略号)和递归宏调用不被允许。所有的宏必须扩展为完整的语法单元。通常不建议使用条件编译指令,但也不总是能够避免每次在代码中这样做的时候必须有基于工具的检查器进行标记,并有充足的理由。
9、限制指针的使用:具体来说,不允许有超过一级的解除指针引用。解除指针引用操作不可隐藏在宏定义或类型声明中。不允许使用函数指针。
10、编译所有代码:从开发工作第一天开始时,在编译器开启最高级别警告选项的条件下对代码进行编译。在此设置之下,代码必须零警告编译通过。代码必须通过源代码静态分析工具,每天检查一次以上,且零警告通过。
请参考!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
歌词是:“那是一个难忘的夜晚,星儿和月儿诉
百世快递(陡坑村百世快递)地址好找么,我有些
千寻美妆日化地址有知道的么?有点事想过去!
艺苑美术书法学校地址在什么地方,我要处理点
怎么在VB中设置本地时间和日期格式??
清表土可以作为绿化培植土吗?
一株花一座黑山打一成语
设n为整数,请你证明(2n+1)2-5一定能被4整
求《辉煌的降头师》TXT
广州佛山男人哪里可以卖身?
萨德能拦截东风31吗
锐志6缸用什么机油最好提升发动机动力?
京东地址在什么地方,我要处理点事!
我去点了颗痣,重新办了张身份证,以前的内个
别克凯越和赛欧3相比哪个好一些
推荐资讯
德力西漏电断路器dz47le-100a 3p+n d型三相四
图纸上DN50-3.2是什么意思 3.2是标高吗
多拿滋甜甜圈的经营设计
什么太什么了我们什么
有电影黑豹的高清资源吗?谢谢
麦力快递(龙床井巷苏格伦旁)地址好找么,我有
Jack London 与其他自然主义作家有什么不同?
请问什么配置的笔记本电脑能较快的运行WinCC
电动窗帘停电了怎么办?
做长春21路公交车去北湖在那站下车
R语言如何查询正弦波的波峰值
大学里有专门的礼仪专业?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?