¡La Cumbre ASTQ está en vivo el 4 de noviembre! Escuche a los líderes de la industria compartir cómo están brindando calidad continua. Regístrate ahora "

X
BLOG

Comprobación de código MISRA C / C ++

Comprobación de código MISRA C / C ++ Tiempo de leer: 9 minutos

MISRA es el estándar legendario con el que los equipos de desarrollo miden una gran parte del software actual. Pero, ¿qué es exactamente MISRA, cómo se desarrolló, cómo los desarrolladores de C y C ++ comparan los estándares con él y cómo saben que están en cumplimiento?

En este artículo, examinamos el trasfondo convincente de cómo surgió MISRA. También respondemos las preguntas anteriores y revelamos cómo MISRA ayuda a los programadores de código C ++ y C a escribir de manera eficiente mientras aborda las preocupaciones actuales de seguridad y protección.

Específicamente, miramos:

  • Definición y antecedentes de MISRA
  • Reglas y pautas de MISRA
  • Cumplimiento
  • Informes
  • Usar con código heredado

¿Qué es MISRA?

Los estándares MISRA contienen pautas y reglas de código para escribir software. Las industrias automotriz, aeroespacial y de defensa, médica, de automatización industrial y ferroviaria, entre otras, utilizan el estándar para ayudar a sus desarrolladores a escribir código fuente que garantice la seguridad y la confiabilidad del software. Debido a que los ingenieros de software integrado usan los lenguajes de programación C y C ++ para escribir código para software crítico para la seguridad, los creadores del estándar MISRA lo crearon para codificadores que usan estos dos lenguajes.

Antecedentes

El consorcio de la Motor Industry Software Reliability Association (MISRA) es similar a la ISO (Organización Internacional de Normas) y la IEC (Comisión Electrotécnica Internacional), que establecen pautas generales de cumplimiento para la industria, como normas para el desarrollo de sistemas eléctricos / electrónicos. ISO 26262, publicado en 2011, es el estándar internacional para certificar la seguridad de la electrónica en los vehículos de carretera. Los sistemas de software que han logrado el cumplimiento de ISO / IEC pueden ser certificados por las autoridades de verificación como seguros.

MISRA, un consorcio de industrias relacionadas con la automoción, desarrolló sus primeras directrices en 1998, MISRA c1998. El consorcio se formó como resultado del Programa de Investigación de Sistemas Críticos de Seguridad del Reino Unido, que el gobierno del Reino Unido instituyó para abordar algunos de los desafíos que enfrenta la industria automotriz debido al mayor uso de software en la fabricación y operación de vehículos. Algunas de las industrias originales que ayudaron a desarrollar el estándar, todas las cuales también son actualmente miembros activos del comité de dirección, incluyeron:

  • Bentley Motors
  • Sistemas diesel Delphi
  • Ford Motor Company Ltd
  • Horiba Mira Ltd
  • Jaguar Land Rover
  • Protean Electric Ltd
  • Ricardo PLC
  • La Universidad de Leeds
  • Visteon Engineering Services Ltd
  • ZF TRW

Aunque el consorcio creó originalmente el estándar para el industria del automóvil, otras industrias integradas han adoptado el estándar, incluidas las que utilizan tecnología integrada que conecta dispositivos como los sistemas loT.

El cómo y el por qué de MISRA

A principios de la década de 1990, la electrónica se estaba volviendo cada vez más importante en los automóviles. También lo era el software integrado que era una parte integral de estos componentes electrónicos. Por lo tanto, los ingenieros y fabricantes comenzaron a darse cuenta de que la confiabilidad del software era de vital importancia, tanto por razones comerciales como de seguridad. El desafío es aún mayor en la actualidad porque el software para un solo automóvil puede involucrar más de 100 millones de líneas de codificación.

Software en automóviles y camiones

Los fabricantes de automóviles utilizan software en las operaciones del motor y del tren de potencia. Supervisa y proporciona la cantidad correcta de combustible en los ICE (motores de combustión interna) y proporciona datos al ECM (módulo de control del motor, a veces llamado ECU o unidad de control del motor). Esta es la computadora automotriz principal que recopila información sobre el consumo de combustible, la potencia que genera el motor, las emisiones y otros datos vitales relacionados con el motor que son esenciales para una conducción segura y eficiente. (Los vehículos eléctricos e híbridos tienen requisitos de software similares relacionados con el motor y el tren motriz).

Los fabricantes también emplean software para operar computadoras a bordo para los sensores ubicuos en los vehículos actuales, incluido el monitoreo de puertas y ventanas, sistemas de control de clima y sensores de estacionamiento y tráfico. También los utilizan en sistemas críticos para la seguridad como airbags y ABS. Ciertamente, habrá más software relacionado con la operación en el futuro de los vehículos de carretera, con ingenieros y diseñadores que dedicarán gran atención a las capacidades de conducción autónoma, la eficiencia energética mejorada y la seguridad mejorada.

Más allá de la industria del motor

Las industrias de todo el mundo aceptan las reglas de MISRA C para escribir códigos C críticos para la seguridad. Las reglas y pautas inspiran confianza porque son legibles, concisas y porque se centran en lo esencial. Si bien la aplicación del estándar MISRA no garantiza que el software esté libre de problemas de seguridad y calidad, ayuda a los ingenieros de software a escribir un código más seguro, más robusto, más portátil y más fácil de mantener. (Las pautas de MISRA también abordan las vulnerabilidades de seguridad, pero otros estándares de codificación como CERT C abordan específicamente los problemas de seguridad escritos en el código).

Estándares de codificación MISRA para seguridad funcional

Hoy en día, los equipos de desarrollo emplean estándares de codificación como método para definir, gestionar y utilizar un grupo de prácticas de codificación, con el objetivo principal de la coherencia. El objetivo principal de una regla de codificación es limitar el uso del lenguaje para evitar que el desarrollador haga cosas que están "mal" y pueden ser potencialmente peligrosas.

Los desarrolladores pueden evitar muchos defectos en el software adoptando restricciones razonables en el uso del lenguaje. Esto da como resultado la uniformidad de estilo, que es valiosa como disciplina en un proyecto de software.

Versatilidad y vulnerabilidad de C y C ++

El aspecto de versatilidad de los lenguajes C ++ y C permite a un desarrollador escribir código que puede ser involuntariamente incorrecto y posiblemente peligroso. Es fácil para él o ella escribir código que se adhiera a los requisitos del estándar del lenguaje, pero esto, no obstante, puede resultar en un comportamiento indeseable y en el programa "fallas". Estos incluyen, por ejemplo, código que accede a la memoria más allá de los parámetros de un proceso aritmético, o de una matriz que da como resultado violaciones de la memoria o de los límites.

Obviamente, es importante identificar estos problemas potenciales. Pero el objetivo de MISRA es prevenir problemas, no simplemente identificarlos. Un compilador puede detectar algunos de ellos, pero utilizar una herramienta de análisis dedicada es más eficaz.

El estándar MISRA enfatiza que adherirse a las reglas de codificación es solo un componente para desarrollar software exitosamente. Los desarrolladores deben integrar cada proyecto de programación en un entorno de ingeniería disciplinado que incluye flujos de trabajo de desarrollo metódicos y la aplicación de herramientas de validación probadas en uso.

Pautas y reglas de lenguaje MISRA C y C ++ de uso común

Cada estándar MISRA incorpora un conjunto de parámetros y reglas de codificación, además de materiales de apoyo. Los materiales de apoyo son una parte complementaria del estándar y proporcionan información de antecedentes importante esencial para cualquier programador que desee obtener el cumplimiento.

Echemos un vistazo a los estándares de codificación actuales de C y C ++ MISRA y a breves descripciones.

  • MISRA C ++ 2008. Aunque C siguió siendo el lenguaje de codificación predominante, esta versión se refirió al mayor uso de C ++. Nota: Muchas empresas están optando por estandarizar AUTOSAR C ++ 14, que cubre cambios recientes en C ++. De echo, AUTOSAR y MISRA unieron fuerzas para producir la próxima generación de estándares.
  • MISRA C 2012. Lanzada en 2013, esta versión, también conocida como MISRA C3, desarrolló aún más el estándar MISRA C. Se basó en 14 años de experiencia de interacción con miles de organizaciones y usuarios, e incluyó algunas reglas nuevas, cerró algunas lagunas y mejoró las explicaciones y descripciones detrás de reglas previamente existentes. El soporte extendido estándar de C99 y los mantuvo para C90, C11 y C18. También realizó una serie de mejoras que redujeron la complejidad y el costo del cumplimiento.
    • MISRA C 2012 Enmiendas para seguridad y protección. Con el lenguaje de programación C en evolución y para enfatizar que MISRA C: 2012 era igualmente valioso en aplicaciones de seguridad, MISRA publicó varios apéndices de apoyo y enmiendas al estándar que ofrecían nuevas reglas y pautas para mejorar la cobertura de seguridad y vulnerabilidades de seguridad conocidas.
  • Cumplimiento de MISRA 2020. Este documento actual establece un marco para lograr el cumplimiento del estándar de codificación MISRA. Reemplaza los requisitos de cumplimiento y proceso y desviación en versiones anteriores de la norma.

Lograr el cumplimiento de MISRA mediante el análisis estático

El estándar de codificación MISRA proporciona reglas y pautas completas para que las empresas puedan proteger sus aplicaciones contra errores de tiempo de ejecución y fallas de software, y hacerlas menos propensas a las vulnerabilidades de seguridad. El cumplimiento del estándar MISRA ayuda a mejorar la sintaxis, crea conformidad del código y facilita la portabilidad. Para los equipos que no utilizan soluciones o herramientas de análisis estático (o SAST - Static Application Security Testing), validar el cumplimiento puede resultar problemático. Parasoft simplifica el proceso, que es fundamental para garantizar la entrega oportuna del software y la seguridad de la codificación.

Libro blanco gratuito: Introducción al análisis estático

Para lograr un cumplimiento exitoso, las soluciones deben ofrecer:

  1. Aplicación dinámica mediante la verificación del cumplimiento de MISRA a través del análisis de código estático cada vez que los codificadores modifican el software.
  2. Integración del análisis estático en su canalización de CI / CD optimizada con pruebas continuas que brindan software de alta calidad rápidamente.
  3. Validación de cumplimiento mediante la creación de informes y resúmenes detallados de alto nivel a los que puede hacer referencia rápidamente.

Es importante aplicar el cumplimiento de MISRA durante todo el ciclo de vida del desarrollo de software, incluso durante la implementación del código para las pruebas de cambio a la izquierda y para acelerar las revisiones del código. Esto proporciona no solo mejoras de calidad, sino también métricas de progreso, trazabilidad continua y cumplimiento. Automatizar la documentación y los informes de cumplimiento según MISRA Compliance 2020 también es un factor clave para ahorrar recursos y tiempo, y para evitar la frustración cuando se trata de solucionar las infracciones por sí mismas.

Se pueden configurar herramientas como Parasoft para detectar un subconjunto de todos los estándares MISRA. Esto reduce la cantidad de ruido producido por el análisis y aumenta el enfoque en abordar violaciones graves.

Informes de cumplimiento

Uno de los problemas asociados con las empresas que logran el cumplimiento de MISRA ha sido la ausencia de un mecanismo estándar para demostrar el cumplimiento. Para abordar este problema, MISRA publicó "Cumplimiento de MISRA 2020: Lograr el cumplimiento de las pautas de codificación de MISRA", que es la última actualización que proporciona una definición más concreta de "cumplimiento de MISRA" e identifica varios entregables necesarios para demostrar el cumplimiento de la norma MISRA.

  • El resumen de cumplimiento de las pautas. Un registro primario y obligatorio del cumplimiento general del proyecto. La GCS incluye una entrada para cada directriz, su nivel de cumplimiento, cualquier desviación y / o recategorización.

Captura de pantalla del Informe de cumplimiento de MISRA para un proyecto que enumera la directriz, la categoría (recomendada o requerida), el cumplimiento (cumple con las infracciones, no cumple o cumple), el número de infracciones y el número de desviaciones.

  • El plan de reclasificación de la guía. Se deben seguir todas las pautas obligatorias para lograr el cumplimiento. Sin embargo, las pautas obligatorias y de asesoramiento se pueden volver a categorizar en categorías más estrictas (como de Asesor a Obligatorio), pero solo las pautas de asesoramiento se pueden volver a categorizar en categorías menos estrictas (por ejemplo, de Asesoramiento a Desactivada).

Captura de pantalla de un plan de recategorización de la guía MISRA utilizando la prueba Parasoft C / C ++ como herramienta de análisis. El plan enumera las descripciones de las pautas de MISRA con categorías originales y revisadas.

  • Informe de desviaciones. Su proyecto puede tener desviaciones de las pautas o violaciones de las reglas y aún así ser considerado en cumplimiento si las desviaciones están justificadas, documentadas en el informe y no afectan la seguridad.

Captura de pantalla del Informe de desviación de MISRA utilizando la prueba Parasoft C / C ++ como herramienta de análisis. El informe enumera cada regla y estado de Sin reglas habilitadas, Sin desviaciones o desviaciones. Para aquellos con desviaciones, proporciona detalles como el ID de la regla, el tipo de desviación y el historial de modificaciones.

  • Plan de aplicación de las directrices. Demuestra cómo verificar cada pauta de MISRA. En el contexto del cumplimiento de MISRA con Parasoft, el GEP asigna las pautas de MISRA a las reglas de análisis de código de Parasoft y la funcionalidad DTP.

Captura de pantalla del plan de cumplimiento de las pautas de MISRA que enumera la pauta, la categoría, la descripción, el compilador, el ID de la regla de Parasoft y los detalles de la revisión manual.

Certificado para su uso en software de seguridad crítica, incluso en dispositivos médicos

Certificada por TÜV SÜD, la prueba C / C ++ automatiza la aplicación y monitoreo de criterios de codificación de análisis como MISRA. Esto incluye una plataforma de prueba unitaria. Esta plataforma integra la creación y ejecución de pruebas, y también la generación de informes de cobertura. Luego, el centro de informes y análisis centralizados de Parasoft Parasoft DTP, que también está certificado por TÜV, agrega y correlaciona los datos de análisis y pruebas de la Parasoft C / C ++test.

Lograr el cumplimiento total de MISRA con el código heredado, incluidos los sistemas integrados

Es un hecho que los desarrolladores reutilizan el código heredado para software crítico para la seguridad. Sin embargo, reutilizar el código heredado y lograr el cumplimiento completo de MISRA C 2012 puede ser abrumador.

El cumplimiento de MISRA es mucho más fácil de administrar y lograr a medida que se escribe el código. El documento MISRA C 2012 incluso proporciona una advertencia que podemos interpretar al aplicarlo a programas heredados:

“… Es probable que un proyecto que verifica el cumplimiento de MISRA al final de su ciclo dedique una cantidad considerable de tiempo a volver a codificar, revisar y probar. Por lo tanto, se espera que el proceso de desarrollo de software requiera la aplicación temprana de los principios de MISRA C ".

Observando la reutilización del software heredado, MISRA Consortium Limited, la organización responsable de crear y mantener el estándar MISRA, creó la versión actualizada y actual de MISRA Compliance: 2020. Este documento proporciona una guía para los desarrolladores que escriben código nuevo y para aquellos que utilizan código heredado o adoptado.

Sin embargo, es posible que la distinción no sea del todo clara. Por ejemplo, durante el desarrollo de un producto, un codificador escribe software para un prototipo solo para descubrir que el proyecto necesita el cumplimiento de MISRA, por lo que debe retroceder y aplicar las pautas. Si bien esto no aplica MISRA al código heredado, es similar en que cuando el código se escanea o analiza, los resultados revelan miles, si no decenas de miles, de violaciones. Agregue esto al hecho de que los escritores de software integrado a menudo afirman que desarrollar un código totalmente compatible es demasiado difícil, la tarea de cumplir con MISRA puede parecer abrumadora. Pero es posible encontrar un término medio realista entre “intimidación” y cumplimiento.

Considere el objetivo final

MISRA Compliance 2020 ayuda a aclarar cómo probar y demostrar la conformidad al final de un proyecto. La entrega de los cuatro documentos obligatorios es imprescindible. Considere lo siguiente para el cumplimiento de códigos nuevos y heredados:

  1. ¿Ha establecido un GRP (Plan de Recategorización de Directrices) al inicio del proyecto? Los estándares MISRA sugieren negociar con el cliente y también crear varios GRP adaptados al código adoptado, que los desarrolladores pueden usar sin modificar, así como para el nuevo código.
  2. ¿Ha revisado el cliente las plantillas de GPS (Resumen de cumplimiento de directrices) al inicio del proyecto? ¿Están completos y son aceptables?

Parasoft automatiza los informes necesarios para ayudar a las empresas a cumplir con la agenda de cumplimiento de MISRA 2020.

Un enfoque incremental

Es inteligente establecer un flujo de trabajo para corregir las infracciones en un horario razonable sin interrumpir el desarrollo del código y, por lo tanto, degradarlo. Las recomendaciones cruciales incluyen:

  • Establecer una línea de base. Después de la exploración inicial, marque las infracciones como "abordar más tarde", estableciendo esto como una línea de base. A partir de ese momento, cuando los programadores desarrollen un código nuevo, mantenga una estrategia de "no nuevas infracciones".
  • Establecer una fecha límite. Establezca una fecha después de la cual los desarrolladores deben haber resuelto todas las infracciones para cada archivo fuente.
  • Priorizar en función de la gravedad. El líder del equipo selecciona las infracciones en función de su importancia y los desarrolladores corrigen todas las que les asigna.

Para facilitar esto, el centro de informes DTP de Parasoft incluye un panel de estado de cumplimiento.

Libro blanco gratuito: Cómo elegir una herramienta de análisis estático moderna

Calificación de la herramienta

El objetivo de calificar las herramientas es certificar que son válidas para el uso previsto. Incluye una prueba de cómo el equipo llegó a calificarlos y la razón de ser de ello. La prueba Parasoft C / C ++ y nuestra herramienta de informes, Parasoft DTP, han sido certificadas por TÜV SÜD para su uso en aplicaciones críticas para la seguridad, y existe un kit de calificación de herramientas para algunos de los estándares de proceso más estrictos, como DO-178B / C y lo que requieren.

Capacitación y competencia del personal

El estándar MISRA también enfatiza la competencia, la experiencia y la capacitación del personal como factores clave para evaluar la preparación del producto. Esto incluye reconocer los riesgos de infracciones y configurar y utilizar correctamente las herramientas de desarrollo y el análisis estático.

Conclusión

Es importante respaldar el cumplimiento de MISRA durante todo el ciclo de vida del desarrollo de software. Alcanzar el cumplimiento de MISRA es más fácil con la solución integral de Parasoft. Con el cumplimiento continuo, la trazabilidad y la documentación automatizada, los equipos pueden ahorrar tiempo, recursos y aliviar las frustraciones que surgen con el cumplimiento de esta guía.

El texto es el título del documento técnico El valor de usar una solución de prueba unificada de C / C ++ con un botón rojo de llamada a la acción debajo: Descargar el documento técnico

Escrito por

Ricardo Camacho

Ricardo, gerente sénior de marketing técnico de productos para las soluciones de pruebas integradas de Parasoft, tiene experiencia en SDLC y automatización de pruebas de aplicaciones integradas en tiempo real, de seguridad y críticas para la seguridad, y cumplimiento de software con los estándares de la industria.

Reciba las últimas noticias y recursos sobre pruebas de software en su bandeja de entrada.