美国宇航局编写任务关键代码的规则

当你是NASA的时候,开发关键的应用程序(比如控制飞机和航天器的代码),代码质量和安全是最重要的。这就是为什么他们一直在研究编码标准或规则,以确保关键软件的可靠性。...
Illustration for article titled NASA's Rules for Writing Mission Critical Code

当你是NASA的时候,开发关键的应用程序(比如控制飞机和航天器的代码),代码质量和安全是最重要的。这就是为什么他们一直在研究编码标准或规则,以确保关键软件的可靠性。

该指南是由加州理工学院喷气推进实验室(JPL)根据与美国宇航局的合同制定的,目前正在喷气推进实验室进行实验,结果令人鼓舞。由于C语言的悠久历史和广泛的工具支持,该指南主要关注用C语言编写的代码,但也可以适用于其他编程语言,即使您的软件程序不会用于发射飞机。

这里有10条规则,使集合变得足够小和清晰以便于记忆。其中一些是良好编码风格和实践的广泛接受的标准,例如在最小范围级别声明数据对象(第6条规则)和每天至少使用一个源代码分析器检查代码(第10条规则)。有些可能看起来很严格或有限制,例如第四条规则:

函数的长度不应超过以标准参考格式打印在一张纸上的长度,每个语句一行,每个声明一行。通常,这意味着每个函数不超过60行代码。

理由:每个函数都应该是代码中的一个逻辑单元,可以作为一个单元来理解和验证。要理解一个逻辑单元在计算机显示器上跨越多个屏幕或打印时跨越多个页面要困难得多。过长的函数通常是代码结构不良的标志。

然而,正如指导方针所指出的,这些规则旨在使关键任务代码更清晰、更易于分析,并最终更安全。

查看下面的PDF,了解十条规则及其原理。

通过JAXenter开发安全关键代码(PDF)的十条规则的威力

旅行者雷尼摄。

  • 发表于 2021-05-18 18:20
  • 阅读 ( 109 )
  • 分类:互联网

你可能感兴趣的文章

7个简单的windows脚本,为您节省时间和精力

对于初学者来说,开始编写脚本是非常可怕的。不过,在Windows10 PC上使用脚本有一些主要的好处。如果您刚刚开始,使用他人编写的Windows脚本通常可以让您对工作方式有一个很好的了解。 ...

  • 发布于 2021-03-15 21:37
  • 阅读 ( 283 )

创建web界面:从何处开始

...都对执行速度着迷。为此,他们将优化语言本身,以提高编写和创建可读行的速度。这就是所谓的句法糖衣。HTML社区已经做出了一些这样的努力。 ...

  • 发布于 2021-03-16 05:47
  • 阅读 ( 265 )

想学编程吗?你应该知道的5个关键术语

... 虽然文本编辑器只关注您正在编写的代码,但是IDE是一个沙盒,它允许您编写、编译(从文本转换为计算机语言)、测试和调试(或更正)应用程序。“集成开发环境”中的单词环境是关键:使用IDE意...

  • 发布于 2021-03-23 09:19
  • 阅读 ( 304 )

编码(coding)和编程(programming)的区别

...彼此却大不相同。 什么是编码(coding)? 简单编码意味着编写代码,而编码者是从一种语言编码到另一种语言的个体。编码也是编程,但它被用来实现计算机编程的初始步骤。术语“编程”是在更广泛的意义上使用的,与编码不...

  • 发布于 2021-06-25 04:52
  • 阅读 ( 1221 )

编译程序(compiler)和交叉编译器(cross compiler)的区别

...编译器的主要区别在于,编译器是一种将用高级编程语言编写的计算机程序转换成机器语言的软件,而交叉编译器是一种可以为运行编译器的平台以外的平台创建可执行代码的编译器。 程序员用高级语言为计算机编写程序。计...

  • 发布于 2021-06-30 18:25
  • 阅读 ( 346 )

编码(coding)和编程(programming)的区别

编码和编程的主要区别在于编码是使用编程语言为计算机编写指令以执行任务的过程,而编程是一个更广泛的概念,涉及识别问题、分析问题、编码和测试。 编码和编程这两个术语在软件开发中可以互换使用。编码是指使用编...

  • 发布于 2021-06-30 22:23
  • 阅读 ( 472 )

脚本语言(scripting language)和程序设计语言(programming language)的区别

脚本语言和编程语言的主要区别在于,用脚本语言编写的源代码使用解释器转换为机器代码,而用编程语言编写的源代码使用编译器或解释器转换为机器代码。 脚本语言是一种在一个文件中包含一系列命令的计算机语言,可以...

  • 发布于 2021-07-01 02:49
  • 阅读 ( 260 )

标记语言(markup language)和程序设计语言(programming language)的区别

...档进行编码,而编程语言提供了一组命令和语法,可用于编写用户理解的计算机程序计算机。 标记语言(markup language)是一种用于在样式精确的电子文档中注释文本和嵌入标记的语言,与计算机平台、操作系统、应用程序或程...

  • 发布于 2021-07-01 02:50
  • 阅读 ( 634 )

虚拟机(jvm)和清除(clr)的区别

...一方面,CLR或公共语言运行时提供了执行在.NET framework中编写的程序的环境。它还提供其他服务,包括类型安全、异常处理、垃圾收集、线程管理和安全性。 覆盖的关键领域 1.什么是JVM–定义,功能2.什么是CLR–定义,功能3.JVM...

  • 发布于 2021-07-01 03:02
  • 阅读 ( 265 )

机器代码(machine code)和汇编语言(assembly language)的区别

...编程序的软件将其转换成机器代码。 程序员用编程语言编写计算机程序。程序是执行特定任务的一组指令。程序设计语言主要有三类:高级程序设计语言、汇编语言和机器代码。在这里,人类可以很容易地理解高级语言,而计...

  • 发布于 2021-07-01 03:33
  • 阅读 ( 801 )
ghze1559
ghze1559

0 篇文章

相关推荐