高可靠性/可用性/安全性的编码 - 我读什么标准?

时间:2008-09-27 01:40:45

标签: security coding-style reliability

我听说汽车行业有一种名为MISRA C的东西。

其他高可靠性/可用性/安全性行业的相关标准是什么,例如

  • 空间
  • 飞机
  • 银行/金融
  • 汽车
  • 医疗
  • 国防/军事
  • ???

- 亚当

6 个答案:

答案 0 :(得分:6)

查看戈达德太空飞行中心及其coding standards。我在自己的代码中采用的C标准之一是标头必须是自包含的,它们提供了一种简单的方法来强制执行 - 模块的标头必须是模块中包含的第一个文件,所以如果文件不是自包含的,则不会编译。

答案 1 :(得分:4)

如果你专门询问编码,MISRA提出了一些避免C中常见错误的指导原则。

然而,好的软件还有很多比编码更多的东西。用于sw开发的航空业的“圣经”是DO-178B。它告诉您在各个设计阶段需要解决哪些问题以及如何记录答案。这是一个非常多的文书工作,但如果你想让飞机停在空中,你想要最弱点是人(飞行员),而不是软件。

答案 2 :(得分:3)

对于Ada中的高可靠性系统编程,有:ISO/IEC TR 15942:"Information technology — Programming languages — Guide for the use of the Ada programming language in high integrity systems"

  

<强>简介

     

作为一个社会,我们越来越多   依赖高完整性系统:   用于安全系统(如   为了安全起见,电传飞机   系统(保护数字   信息)或金融系统   (例如,自动提款机)。作为   这些系统的复杂性也在增长   满足改进技术的要求   用于生产软件   系统的组成部分。这些高   必须证明完整性系统   完全可预测的操作和   拥有所需的所有属性   他们。这只能通过以下方式实现   分析软件,除了   使用常规动态   测试。目前没有   主流高级语言在哪里   该语言的所有程序都是   保证是可预测的   可分析。因此任何选择   它的实现语言   控制方式至关重要   应用程序使用语言。   Ada语言[ARM]的设计   具体的机制   控制某些方面的使用   的语言。此外,

     
      
  1. Ada程序的语义定义明确,即使是错误的   的情况。具体来说,效果   一个程序的可以预测   语言定义很少   实现依赖或   语言之间的互动   特征

  2.   
  3. 语言中的强类型可以用来减少   验证分析的范围(和成本)   关键属性。

  4.   
  5. Ada语言已成功应用于很多高级语言   诚信应用。这个   证明了经过验证的Ada   编译器具有所需的质量   对于此类申请。

  6.   
  7. 可以提供指导以便于使用该语言和   鼓励开发工具   进一步验证。

  8.         因此,Ada非常适合   实施高完整性软件   并且本文档提供了指导   上需要的控件   使用Ada来确保程序   可预测和可分析的。

答案 3 :(得分:2)

您可能会发现查看Carrier Grade Linux的某些要求很有帮助。虽然他们(顾名思义!)正在指定linux要求,但他们正在这样做,以便在电信设备的高可用性部分中使用。

答案 4 :(得分:2)

答案 5 :(得分:1)

NIST提供了大量相关文档,你可以深入了解他们的工作 - 但是它有很多,而且它都非常冗长,所以我没有特定的文件可以指向你。
> 如果你想更具体地满足你的需求,我可能会缩小它... ...

此外,Carnegie Mellon在可靠性的开发过程中非常明确,很容易找到他们的标准,但也非常冗长。

此外,特定行业通常也有自己的标准,具体取决于国家。例如,信用卡行业 - PCI-DSS;欧盟银行业 - 巴塞尔协议II;医疗 - HIPAA(虽然这是相当高级别的);美国政府相关的任何内容,各种NIST文档;等。