Pautas de codificación de Gerald J. Holzmann
Las reglas de Power of 10 fueron creadas en 2006 por Gerard J. Holzmann del Laboratorio de Software Confiable de la NASA/JPL . [1] Las reglas tienen como objetivo eliminar ciertas prácticas de codificación en C que dificultan la revisión o el análisis estático del código. Estas reglas son un complemento de las pautas de MISRA C y se han incorporado al conjunto más amplio de estándares de codificación del JPL . [2]
Normas
Las diez reglas son: [1]
- Evite construcciones de flujo complejas, como goto y recursión .
- Todos los bucles deben tener límites fijos. Esto evita que el código se descontrole.
- Evite la asignación de memoria del montón .
- Restringir las funciones a una sola página impresa.
- Utilice un mínimo de dos afirmaciones de tiempo de ejecución por función.
- Limite el alcance de los datos al mínimo posible.
- Verifique el valor de retorno de todas las funciones que no sean nulas, o convierta a nulo para indicar que el valor de retorno es inútil.
- Utilice el preprocesador con moderación.
- Limite el uso de punteros a una única desreferencia y no utilice punteros de función .
- Compilar con todas las advertencias posibles activas; todas las advertencias deben abordarse antes de lanzar el software.
Usos
El estudio de la NASA sobre el firmware del control electrónico del acelerador de Toyota encontró al menos 243 violaciones de estas reglas. [3] [4]
Véase también
Lectura adicional
- GJ Holzmann (19 de junio de 2006). "El poder de 10: reglas para desarrollar códigos críticos para la seguridad". IEEE Computer . 39 (6): 95–99. doi :10.1109/MC.2006.212.
Referencias
- ^ ab El poder del 10: reglas para desarrollar un código crítico para la seguridad
- ^ Estándar de codificación C del JPL - Laboratorio JPL para software confiable
- ^ Aceleración no intencionada y otros errores de software integrado, 1 de marzo de 2011, por Michael Barr, Embedded Gurus
- ^ Informe de evaluación técnica del Centro de seguridad e ingeniería de la NASA, Administración Nacional de Seguridad del Tráfico en las Carreteras, Investigación de aceleración involuntaria de Toyota, Apéndice A
Enlaces externos
- Sistema de Normas Técnicas de la NASA Garantía de Software y Estándar de Seguridad de Software
- Satélite de código abierto: ¿Cómo crear un software lo suficientemente confiable para las misiones espaciales?