Únase a nuestro seminario web el 19 de septiembre: Pruebas de API mejoradas con IA: un enfoque de prueba sin código | Regístrese aqui

Una guía práctica para acelerar el cumplimiento de MISRA C 2023 con la automatización de pruebas

Introducción

Los desafíos de crear aplicaciones de software integradas continúan aumentando. Las demandas para incorporar competencias en conectividad de red, inteligencia artificial (IA) y otras mejoras de rendimiento han aumentado la complejidad del código y, a su vez, han aumentado el riesgo de vulnerabilidades y peligros de seguridad. Para ayudar a mitigar estos desafíos, muchas organizaciones recurren a las pautas de codificación de la Motor Industry Software Reliability Association (MISRA).

Directrices MISRA C 2023 Para el uso del lenguaje C en sistemas críticos es una definición de un subconjunto del lenguaje C diseñado para minimizar errores potenciales, vulnerabilidades de seguridad y errores que causan fallas en el programa o errores graves. Aunque inicialmente se crearon para sistemas automotrices, las pautas han sido adoptadas por muchas otras industrias para aplicaciones críticas para la seguridad. En todos los casos, determinar el cumplimiento, que es cada vez más necesario en las relaciones entre proveedores y clientes, puede resultar complejo y llevar mucho tiempo si no está automatizado.

Hay muchas herramientas en el mercado que informan errores que indican cuándo el código infringe una directriz. Sin embargo, pocas herramientas simplifican el proceso de informes y documentación requerido para demostrar el cumplimiento, ¡sin mencionar la implementación de las pautas en su proceso de desarrollo de software!

Soluciones de verificación y validación de pruebas como la marca de Parasoft alcanzar el cumplimiento de MISRA más rápido y con menos coste. La solución agiliza todo el proceso de lograr, documentar y mantener el cumplimiento de MISRA durante todo el ciclo de vida del producto. También optimiza otros métodos de prueba automatizados como unidad, regresión, integración, sistema, cobertura de código estructural y más.

Código heredado y existente

La reutilización de código es una realidad para cada proyecto. Sin embargo, reutilizar código heredado en un proyecto de software crítico para la seguridad y lograr el pleno cumplimiento de MISRA C 2023 es una tarea de enormes proporciones.

Los principios originales de MISRA fueron creados para ser aplicados como código en desarrollo. Incluso la propia norma ofrece una advertencia.

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

Debido a que muchas organizaciones necesitan reutilizar sus bases de código heredadas por motivos comerciales, la Cumplimiento de MISRA: 2020 El documento de orientación se creó en respuesta a estos desafíos. En él, hay una distinción clara entre el código nativo nuevo que se desarrolla en el alcance de un proyecto actual y el código adoptado que se desarrolla fuera del alcance del proyecto. Profundicemos en un enfoque práctico del código heredado y el cumplimiento de MISRA C.

Sombras de gris

Aunque parece que debería ser sencillo entender con qué tipo de código estás tratando, en muchos casos la situación no es blanca o negra. Por ejemplo, se produce un prototipo inicial que se desarrolló sin seguir las pautas de MISRA y luego la gerencia se da cuenta de que el cumplimiento es un requisito para el mercado previsto.

Por lo general, el código base heredado nunca se desarrolló teniendo en cuenta pautas de codificación. Por lo tanto, una base de código no puede clasificarse automáticamente como código adoptado si se requieren actualizaciones en el contexto de un nuevo proyecto, lo que aumenta la complejidad de la situación.

Con demasiada frecuencia, los escaneos iniciales de una gran base de código a través de una herramienta de análisis estático con todas las reglas MISRA C 2023 habilitadas, incluidas las últimas modificaciones al estándar, producen decenas de miles de violaciones. Después del shock inicial, los equipos comienzan a encontrar formas creativas de abordar las violaciones. Es importante que los equipos de desarrollo no se dejen disuadir. Hay luz al final del túnel.

Con el tiempo, hemos recopilado e identificado las mejores prácticas y enfoques que los equipos de desarrollo han utilizado para hacer que el código cumpla con las normas sin interferir con la velocidad de desarrollo en curso. En este documento, compartimos algunos enfoques prácticos y equilibrados para hacer que las bases de código existentes cumplan con MISRA.

Siga la orientación del Cumplimiento de MISRA: Marco 2020

MISRA C 2023 es un conjunto de pautas de codificación para el lenguaje de programación C. El objetivo del estándar es aumentar la seguridad del software evitando de forma preventiva que los programadores cometan errores de codificación que puedan provocar fallos en el tiempo de ejecución y posibles problemas de seguridad al evitar construcciones problemáticas conocidas en el lenguaje C. Sin embargo, MISRA continúa publicando enmiendas a sus últimas pautas de codificación MISRA C 2023 para mitigar el creciente riesgo de vulnerabilidades de codificación de seguridad cibernética.

A lo largo de los años, muchos desarrolladores de sistemas integrados se quejaban (y todavía se quejan) de que MISRA C era un estándar demasiado estricto y que el costo de escribir código totalmente compatible era difícil de justificar.

De manera realista, dado que MISRA C se aplica en software crítico para la seguridad, el valor de aplicar el estándar a un proyecto depende de factores como los siguientes.

  • Riesgo de mal funcionamiento del sistema debido a un fallo del software.
  • Riesgo de explotación del sistema debido a una vulnerabilidad del software.
  • Costo de una falla del sistema para el negocio.
  • Herramientas de desarrollo y plataforma de destino.
  • Nivel de experiencia del desarrollador.

 

Gráfico que muestra una falla del sistema de alerta roja en la pantalla de una computadora.

 

Los programadores deben encontrar un término medio práctico que satisfaga el espíritu del estándar y aun así reclamar el cumplimiento de MISRA sin desperdiciar esfuerzos en actividades sin valor agregado. En el documento, Cumplimiento de MISRA: 2020, el Consorcio MISRA brinda la respuesta que necesitaba la comunidad, con un marco razonablemente bien definido de lo que realmente significa la frase “cumple con MISRA”.

Para reclamar el cumplimiento de MISRA, se requiere establecer:

  • Uso de un proceso de desarrollo de software disciplinado.
  • Exactamente qué directrices se están aplicando.
  • La eficacia de los métodos de ejecución.
  • El alcance de cualquier desviación de las directrices.
  • El estado de cualquier componente de software desarrollado fuera del proyecto.

Prueba de cumplimiento: el objetivo final

Un problema clave que enfrentan los desarrolladores de software crítico para la seguridad es cómo demostrar y demostrar el cumplimiento al final del proyecto. Hay una tendencia a agregar más información a los informes de la necesaria. Puede convertirse en un tema polémico, lo que resulta en una pérdida de tiempo y esfuerzo si los criterios de evaluación se basan en opiniones subjetivas de las distintas partes interesadas.

Un enfoque recomendado para mejorar la evaluación de la preparación para el cumplimiento es utilizar plantillas existentes tanto para el informe final de cumplimiento como para la calificación de la herramienta. Si la información no es requerida por la norma, evite agregarla. Combinar información adicional no sólo es una pérdida de tiempo, sino que también introduce el riesgo de retrasar el proceso de auditoría. Tener la documentación generada automáticamente, como lo hace Parasoft, es la solución definitiva.

El documento MISRA Compliance: 2020 también ayuda a las organizaciones a utilizar un lenguaje común que articule los requisitos de cumplimiento mediante la definición de los siguientes artefactos.

  • Resumen de cumplimiento de directrices
  • Plan de cumplimiento de directrices
  • Informe de desviaciones
  • Plan de recategorización de directrices

Las siguientes capturas de pantalla muestran informes generados automáticamente con enlaces a otros registros y/o ampliación de información en la página.

Informe de cumplimiento del centro de aprendizaje MISRA El resumen del Informe de cumplimiento de directrices de Parasoft es el registro principal del cumplimiento general del proyecto.

 

Plan de aplicación de las directrices del Centro de Aprendizaje MISRA El Plan de cumplimiento de directrices de Parasoft demuestra cómo se verifica cada directriz de MISRA.

 

Informe de desviación del Centro de aprendizaje MISRA El Informe de desviación de Parasoft documenta todos los permisos de desviación aprobados.

 

Plan de recategorización de directrices del Centro de Aprendizaje MISRA El Plan de Recategorización de Directrices de Parasoft comunica cómo se aplicarán las directrices como parte de la relación entre las partes interesadas y el proveedor.

Empiece por establecer los objetivos finales

Trabajar con las partes interesadas y establecer el Plan de Recategorización de Directrices (GRP) al inicio del proyecto. Es posible que haya varios GRP.

Icono de una estrella blanca dentro de un círculo azul.

Un GRP para el código nuevo que se escribe durante la vida del proyecto para garantizar que se entregue un alto nivel de calidad del código.

Icono de una estrella blanca dentro de un círculo azul.

Otro GPR para el uso de código heredado que contiene un conjunto diferente de expectativas porque puede haber demostrado su eficacia en el campo durante muchos años.

También tenga en cuenta lo siguiente.

  1. Por cada cambio incremental, ¿hay visibilidad de cuántos elementos de trabajo quedan para lograr el cumplimiento total? Esto ayuda a planificar el trabajo en consecuencia y establecer las expectativas correctas con la dirección.
  2. ¿Se han revisado las plantillas de informes del Resumen de Cumplimiento de Directrices (GPS) con el adquirente al comienzo del proyecto? ¿Fueron aceptables y completos?

Hay plantillas para estos documentos que los proveedores comerciales de herramientas de análisis estático, incluido Parasoft, proporcionan para ayudar a las organizaciones a cumplir con el marco de cumplimiento de MISRA 2020.

Adopte un enfoque gradual: divide y vencerás

El escaneo inicial del código existente mediante una herramienta de análisis estático tiende a producir miles de violaciones, particularmente cuando se utiliza un conjunto de reglas predeterminado. No es práctico detener nuevos esfuerzos de desarrollo para centrarse en solucionar todas estas violaciones identificadas. De hecho, hemos visto casos en los que se introdujeron regresiones cuando se realizaron cambios significativos en el código base para corregir las violaciones del análisis estático. Por lo tanto, es importante establecer un flujo de trabajo para corregir las infracciones con el tiempo sin interrumpir el proceso de desarrollo ni degradar la calidad del software.

A continuación se ofrecen recomendaciones clave para utilizar herramientas de análisis estático por primera vez en un proyecto.

Orientación

Después del análisis inicial del código, marque todas las infracciones iniciales como “que se abordarán más adelante” y configúrelas como punto de referencia. A partir de ese momento, al actualizar el código existente y/o desarrollar código nuevo, mantenga una política de "no se permiten nuevas infracciones". Esta política se puede aplicar mediante la herramienta de análisis estático, aplicando un proceso de revisión de código o una herramienta de integración continua (CI) como GitHub, GitLab, Azure DevOps, Jenkins u otras. Cuando los desarrolladores tienen algunas horas o días libres, pueden resolver las infracciones restantes marcadas desde la línea de base.

Las organizaciones pueden priorizar este enfoque basándose en lo siguiente.

Ícono de una llave inglesa y un engranaje dentro de un círculo azul

Código actual en desarrollo.

Icono de búsqueda que muestra una lupa dentro de un círculo azul.

Hallazgos de la revisión del código

Icono del gráfico del eje y del hacha dentro de un círculo azul

Confiar en métricas, como la gravedad, para sugerir la siguiente infracción a resolver

Linea en la arena

El desarrollo fija una fecha: la línea en la arena. Después de esta fecha, cada unidad de traducción (archivo fuente individual) modificada debe tener abordadas todas las violaciones. Todas las unidades de traducción no modificadas caen automáticamente bajo la verdadera definición de código adoptada del documento de cumplimiento de MISRA.

Priorización basada en la gravedad

El desarrollador corrige todos los hallazgos obligatorios para el módulo que se le ha asignado. Con el tiempo, abordan todas las infracciones requeridas según lo permita el tiempo, según una prioridad seleccionada por el líder del equipo. Parasoft utiliza inteligencia artificial y aprendizaje automático para aprender de este proceso de priorización y puede hacerse cargo de esta tarea basándose en el comportamiento histórico del mundo real.

Para cualquiera de los enfoques descritos anteriormente, es importante que los líderes técnicos y la gerencia monitoreen constantemente el progreso y el estado de cumplimiento del proyecto a través de un panel centralizado. Por ejemplo, el centro de informes de Parasoft proporciona el siguiente panel de estado de cumplimiento preconfigurado.

Centro de aprendizaje MISRA Parasoft DTP Parasoft DTP: panel de cumplimiento de informes y análisis

Competencia y capacitación del personal

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 ser coherente y garantizar una base para la calidad del código. El objetivo principal de una regla de codificación es limitar el uso del lenguaje para evitar que el desarrollador haga cosas "incorrectas" y que puedan ser potencialmente peligrosas. Los desarrolladores pueden evitar muchos defectos en el software adoptando restricciones sensatas en el uso del lenguaje. Esto da como resultado una uniformidad de estilo, que es valiosa como disciplina en proyectos de software.

El aspecto de versatilidad del Lenguajes C++ y C permite a los desarrolladores escribir código que puede ser involuntariamente incorrecto y posiblemente peligroso. Es fácil para él o ella escribir código que cumpla con los requisitos del estándar del lenguaje, pero esto, no obstante, puede resultar en comportamientos no deseados y fallas del programa. 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 resulta en violaciones de memoria o 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, pero utilizar una herramienta de análisis dedicada es más eficaz.

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

La experiencia y la capacitación del personal de desarrollo son factores clave que las organizaciones de software a menudo pasan por alto y los auditores los identifican con frecuencia como el problema número uno al evaluar la preparación de un producto.

Foto que muestra una larga mesa de trabajo con jóvenes profesionales colaborando y escribiendo en computadoras portátiles. Según las directrices de MISRA, la competencia del personal es una parte importante del cumplimiento de MISRA. Es mejor realizar la capacitación al comienzo del proyecto y tener registrada una fecha de capacitación con todos los desarrolladores confirmando que recibieron la capacitación. Al final del proyecto, el equipo de desarrollo debería poder demostrar lo siguiente.

  • El personal que aprueba las desviaciones comprende y ha sido capacitado para reconocer los riesgos asociados con la infracción.
  • El personal ha sido capacitado para configurar y utilizar adecuadamente las herramientas de desarrollo y análisis estático antes de su uso.

En la práctica, la formación de un equipo experimentado es relativamente corta. Unos pocos días invertidos en el inicio del proyecto ahorran semanas de retrabajo, problemas de calidad en el futuro y plazos incumplidos.

Calificación de la herramienta

Un componente menos obvio del cumplimiento de MISRA, que a menudo se deja hasta el final del proyecto, es la calificación de las herramientas de desarrollo utilizadas en el producto y la demostración de que son adecuadas para su propósito de acuerdo con el estándar de seguridad pertinente. Si una herramienta necesita calificación, ¿qué nivel de validación se debe realizar?

La calificación de la herramienta debe comenzar con la selección de la herramienta, garantizando que esté utilizando una herramienta de desarrollo certificada por una organización, como TÜV SÜD. Esto reducirá significativamente el esfuerzo a la hora de cualificar las herramientas.

Certificado del Centro de Aprendizaje MISRA
Certificado TÜV SÜD de prueba Parasoft C/C++

Parasoft C / C ++test está certificado por TÜV SÜD para seguridad funcional de acuerdo con los estándares IEC 61508, ISO 26262 e IEC 62304 para aplicaciones de destino integradas y basadas en host, allanando el camino para una calificación optimizada de análisis estático, pruebas unitarias y requisitos de cobertura para la seguridad. estándares críticos.

Si bien en muchos casos se requiere la calificación de la herramienta, el método utilizado para realizar la calificación de la herramienta varía según el riesgo asociado con el mal funcionamiento de la herramienta y el nivel de criticidad del software. Parasoft proporciona un kit de calificación y certificaciones para estándares de seguridad específicos y sus requisitos.

En ausencia de este kit eficiente, los equipos de software deben considerar los costos de calificación de las herramientas al evaluar herramientas comerciales, gratuitas y de código abierto. Algunas normas como DO-178C brindan orientación razonable sobre los requisitos de calificación de herramientas. Independientemente del método, el objetivo del proceso de calificación de la herramienta es afirmar que “la herramienta es válida para el uso previsto” y proporcionar una prueba y justificación de cómo el equipo llegó a esta conclusión.

 

Reduzca el esfuerzo manual de calificación de herramientas

Tradicionalmente, la calificación de herramientas ha significado cantidades significativas de trabajo manual, pruebas y documentación de herramientas de desarrollo para satisfacer una auditoría de certificación. Pero este proceso lleno de documentación requiere interpretación y finalización manual. Como tal, lleva mucho tiempo y es propenso a errores humanos.

Una forma sensata de reducir la carga de trabajo es automatizar el proceso con kits de cualificación. Los kits de calificación guían al usuario a través de un flujo de trabajo intuitivo para reducir drásticamente la cantidad de esfuerzo requerido.

Por ejemplo, estos son los beneficios de utilizar los kits de calificación de Parasoft.

Icono de una flecha hacia abajo

Reduzca automáticamente el alcance de la calificación solo a las partes de la herramienta en uso.

Icono de círculo con flecha que representa la automatización.

Automatizar al máximo las pruebas necesarias para la cualificación.

Icono de búsqueda que muestra una lupa dentro de un círculo azul.

Maneje las pruebas manuales de la manera más elocuente posible e integre los resultados junto con las pruebas automatizadas.

Icono de dos documentos dentro de un círculo azul.

Genere automáticamente documentación lista para auditoría que informe exactamente qué se está calificando, ¡ni más ni menos!

Resumen

No existe una fórmula mágica que facilite el cumplimiento de MISRA en proyectos críticos para la seguridad. Sin embargo, al introducir el marco MISRA Compliance 2020 y utilizar un enfoque práctico y gradual con un punto final claramente definido en mente, los equipos de desarrollo de software pueden lograr el cumplimiento sin interrumpir significativamente su proceso de desarrollo. La conclusión es que todavía queda mucho trabajo por hacer para lograr el cumplimiento, pero la automatización contribuye en gran medida a reducir los tediosos procesos manuales.

“MISRA”, “MISRA C” y el logotipo del triángulo son marcas comerciales registradas de The MISRA Consortium Limited. © The MISRA Consortium Limited, 2021. Todos los derechos reservados.

Pancarta azul oscuro con imagen de un hombre hablando con una mujer sosteniendo una tableta en la mano en una sala de servidores.
Imagen de un hombre y una mujer con una tableta en la mano conversando en una sala de servidores.

Mejore sus pruebas de software con las soluciones de Parasoft.