Pregunta

He escuchado que la industria automotriz tiene algo que se llama MISRA C.

¿Cuáles son los estándares relevantes para otras industrias de alta confiabilidad / disponibilidad / seguridad, como

  • espacio
  • aviones
  • Banca / financiera
  • automotriz
  • médico
  • Defensa / Militar
  • ???

-Adam

¿Fue útil?

Solución

Visite el Centro de vuelo espacial Goddard y su estándares de codificación . Uno de los estándares de C, que he adoptado en mi propio código, es que los encabezados deben ser autocontenidos, y proporcionan una manera simple de hacer cumplir eso: el encabezado de un módulo debe ser el primer archivo incluido en el módulo, por lo que si el archivo no es independiente, no se compilará.

Otros consejos

Si está preguntando específicamente acerca de la codificación, MISRA presenta algunas pautas para evitar errores comunes en C.

sin embargo, hay mucho más que un buen software que la codificación. La " biblia " De la industria de la aviación para su desarrollo es DO-178B. Le indica qué preguntas deben abordarse en las distintas fases de diseño y cómo deben documentarse las respuestas. Es una enorme cantidad de papeleo, pero si estás tratando de mantener los aviones en el aire, quieres que el punto más débil sea el humano (piloto), no el software.

Para programar sistemas de alta confiabilidad en Ada , hay: ISO / CEI TR 15942: " Tecnología de la información & # 8212; Lenguajes de programación & # 8212; Guía para el uso del lenguaje de programación Ada en sistemas de alta integridad " :

  

Introduction

     

Como sociedad, cada vez somos más   Dependiendo de sistemas de alta integridad:   para sistemas de seguridad (tales como   avioneta por cable), para seguridad   sistemas (para proteger digital   información) o para sistemas financieros   (por ejemplo, cajeros automáticos). Como el   La complejidad de estos sistemas crece, por lo que   hacer las demandas de técnicas mejoradas   Para la producción del software.   Componentes del sistema. Estos altos   Los sistemas de integridad deben demostrarse como   totalmente predecible en la operación y   tener todas las propiedades requeridas de   ellos. Esto solo puede ser logrado por   analizando el software, además de   El uso de la dinámica convencional.   pruebas. Hay, actualmente, no   lenguaje general de alto nivel donde   Todos los programas en ese idioma son   Garantizado para ser predecible y   analizable Por lo tanto para cualquier elección   del lenguaje de implementación es   esencial para controlar las formas en que el   El lenguaje es utilizado por la aplicación.   El lenguaje Ada [ARM] está diseñado   con mecanismos específicos para   Controlando el uso de ciertos aspectos.   de la lengua. Además,

     
      
  1. La semántica de los programas de Ada está bien definida, incluso en error   situaciones En concreto, el efecto   de un programa se puede predecir a partir de la   definición de lenguaje con pocos   dependencias de implementación o   interacciones entre el lenguaje   características.

  2.   
  3. La escritura fuerte dentro del lenguaje puede usarse para reducir la   Alcance (y costo) del análisis a verificar.   propiedades clave.

  4.   
  5. El lenguaje Ada se ha utilizado con éxito en muchas   aplicaciones de integridad. Esta   demuestra que validado Ada   los compiladores tienen la calidad requerida   para tales aplicaciones.

  6.   
  7. Se puede proporcionar orientación para facilitar el uso del idioma y   Fomentar el desarrollo de herramientas.   para mayor verificación.

  8.   
     

Ada es ideal para   implementando software de alta integridad   y este documento proporciona orientación en   Los controles que se requieren en el   uso de Ada para asegurar que los programas son   Predecible y analizable.

Puede que le resulte instructivo ver algunos de los requisitos de Carrier Grade Linux . Si bien (como su nombre indica) están especificando los requisitos de Linux, lo están haciendo para su uso en el segmento de alta disponibilidad de equipos de telecomunicaciones.

El NIST proporciona una gran cantidad de documentos relacionados, puedes analizar y analizar su trabajo, pero hay muchos de ellos, y todo es bastante detallado, por lo que no tengo uno específico para señalarte. Si quieres ser más específico con tus necesidades, podría reducirlo un poco ...

Además, Carnegie Mellon es prácticamente lo definitivo en lo que respecta a los procesos de desarrollo para la confiabilidad, lo suficientemente fácil como para encontrar sus estándares pero también bastante detallado.

Además, las industrias específicas a menudo tienen sus propios estándares, dependiendo también del país. Por ejemplo, la industria de tarjetas de crédito - PCI-DSS; La industria bancaria en la UE - Basilea II; Médico - HIPAA (aunque eso es bastante alto nivel); cualquier cosa relacionada con el gobierno de los Estados Unidos, varios documentos del NIST; etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top