write safety critical code

(1 min to read)

The power of 10: Rules for developing safety-critical code

由NASA创造的10条用于消除C语言代码中难以检查的问题的规则。

  • 避免复杂的控制流,如goto和递归
  • 循环需要有固定且有限的长度
  • 避免堆内存分配
  • 将函数限制到一页
  • 每个函数最多使用两个运行时断言
  • 将数据作用域限制到最小
  • 检查非void函数的返回值,或者转化为void
  • 谨慎使用预处理器
  • 限制指针仅使用单次解引用,不使用函数指针
  • 编译开启所有警告,不能忽略任何警告

less is more!

遵循编码规则,使用静态分析

  • MISRA C/C++(C/C++语言的一个安全子集)
  • AUTOSAR coding guidelines
  • parasoft test

降低圈复杂度

使用可形式化验证的语言

  • Ada,SPARK
  • simulink、matlab