Seminario web destacado: Pruebas de API mejoradas con IA: un enfoque de prueba sin código | Vea ahora

Conformidad de software ISO 26262 en la industria automotriz

Análisis estático

Muchas de las tareas de calidad especificadas en la norma ISO 26262, incluidos el análisis de flujo de datos y control y el análisis semántico, están respaldadas por herramientas avanzadas modernas como Parasoft C/C++test. Además, las herramientas de análisis estático incluyen métricas y admiten la revisión de código por pares con capacidades que ayudan a las pruebas unitarias y la detección de errores en tiempo de ejecución.

El papel del análisis estático en la verificación de software según la norma ISO 26262

Los métodos de verificación como el análisis estático proporcionan a los equipos una forma práctica de exponer, prevenir y corregir errores en los sistemas de software de automoción. El verdadero poder de las herramientas avanzadas de análisis estático proviene de la capacidad de analizar el código, basándose en estándares de cumplimiento de codificación de la industria como MISRA C / C ++, CERT C/C++y AUTOSAR C ++ 14.

El análisis informa sobre las violaciones de las normas y directivas del código, junto con las métricas de calidad y complejidad del código. Estos datos se pueden controlar en función de la fuente para fines históricos y de auditoría, pero igualmente importante es el uso de un sistema de seguimiento y gestión de defectos para proporcionar vistas analíticas significativas y priorización con la intención de resolver los problemas de mayor riesgo hasta los de menor riesgo.

ISO 26262 Parte 6, 9.4.2:2018 - Métodos para la verificación de unidades de software
ISO 26262 Parte 6, 9.4.2:2018
A continuación se describen las secciones específicas de la norma ISO 26262, parte 6: Desarrollo de productos: nivel de software que se aborda mediante herramientas de análisis estático.

Recorridos y inspecciones

Métodos informales utilizados para verificar el diseño y la implementación. Las herramientas de análisis estático automatizan gran parte de los aspectos tediosos de la inspección de código, como el cumplimiento de los estándares de codificación, al tiempo que señalan errores y posibles debilidades del software.

Análisis de flujo de control

Una técnica de análisis de código estático para determinar el flujo de control de un programa. Las herramientas de análisis estático avanzadas y modernas, como Parasoft C/C++test, utilizan un análisis sofisticado del flujo de datos y del control para detectar defectos complejos y vulnerabilidades de seguridad.

Análisis de flujo de datos

Una técnica para recopilar información sobre el posible conjunto de valores calculados en varios puntos de un programa informático. El análisis del flujo de datos es un aspecto fundamental de las herramientas de análisis estático avanzado que ayuda a detectar errores complejos, como vulnerabilidades de datos contaminados.

Análisis de código estático

El término general se utiliza para describir el análisis de código que se realiza sin ejecución de código real. Esto incluye los términos utilizados anteriormente.

El papel de las herramientas de análisis estático en apoyo de los principios de diseño de la norma ISO 26262 para el diseño y la implementación de unidades de software

Los estándares de codificación incorporan las mejores prácticas aprendidas a lo largo de años de experiencia y tienen como objetivo fortalecer el código evitando malas prácticas que resulten en una calidad y seguridad inadecuadas, al tiempo que promueven buenas prácticas que generan un código más resistente. En el caso de los estándares automotrices, se basan en las mejores prácticas más una guía para prevenir los tipos de fallas de software que se han observado a lo largo de los años.

Los estándares de codificación suelen definir un subconjunto de un lenguaje de programación que se considera más seguro y fiable de utilizar. El objetivo de esto es evitar comportamientos impredecibles en primer lugar, limitando las características riesgosas del lenguaje que los hacen posibles.

La única forma práctica, objetiva y sostenible de hacer cumplir los estándares de codificación es con herramientas de análisis de código estático, que pueden analizar automáticamente enormes cantidades de código fuente a la vez. Estas herramientas se integran en las compilaciones de software en un flujo de trabajo de CI/CD y están disponibles directamente en el IDE de un desarrollador. Además, brindan informes que indican la conformidad del software analizado con el estándar seleccionado.

Las siguientes secciones cubren los estándares importantes de la industria del software automotriz y cómo se pueden aprovechar la automatización, las herramientas y los procesos para facilitar el cumplimiento.

Diferentes tipos de análisis de código estático

Uno de los tipos más comunes de análisis de código estático es Pruebas de seguridad de aplicaciones estáticas o SASTEsto también se considera una práctica recomendada para las pruebas de seguridad de aplicaciones, pero se puede aplicar en otros ámbitos. Para identificar todas las clases de errores, es posible que sea necesario utilizar varios estándares de codificación (MISRA, AUTOSAR, CERT, CWE).

Como tal, es mejor familiarizarse con varios tipos de análisis de código estático y los errores que deben detectar.

Ícono dentro de un círculo azul que muestra una flecha blanca que apunta hacia arriba.

Rendimiento

Estas pruebas identifican errores que reducirán el rendimiento general. También se pueden utilizar para garantizar que los desarrolladores se mantengan actualizados con las mejores prácticas actuales.

Icono dentro de un círculo azul que muestra un candado blanco.

Seguridad

Sin duda, una prueba crítica: el análisis del código fuente relacionado con la seguridad encuentra riesgos de seguridad como criptografía débil, problemas de configuración y errores de inyección de comandos específicos del marco.

Ícono dentro de un círculo azul que muestra un escudo de seguridad delineado en blanco con una marca de verificación en el centro.

Fiabilidad

Estas pruebas ayudan a prevenir problemas de funcionalidad. Ningún desarrollador quiere lidiar con un mensaje de emergencia de servicio que no responde a las 4 a. m. Este tipo de análisis de código estático es útil para detectar fugas de memoria o problemas de subprocesos.

Icono dentro de un círculo azul que muestra un contorno blanco de una lupa.

Estilo

Este tipo de análisis estático alienta a los equipos a adoptar estilos de codificación uniformes para facilitar su uso, comprensión y corrección de errores. Dado que identifica infracciones de estilo, los desarrolladores no tienen que perder tiempo buscándolas.

¿Qué errores puede detectar el análisis de código estático?

Cada regla o directriz de análisis estático aborda diferentes cuestiones. Algunos problemas que afectan la confiabilidad pueden ser pérdidas de recursos para C o excepciones de puntero nulo en C ++. MISRA C: 2023 La Directiva 4.12 existe para evitar el uso de memoria dinámica que puede provocar fallas de tiempo de ejecución sin almacenamiento, lo cual no es deseable.

La directriz establece: “No se deben utilizar los identificadores 'calloc', 'malloc', 'realloc', 'aligned_alloc' y 'free' y no se debe expandir ninguna macro con uno de estos nombres”.

Por lo tanto, el siguiente código producirá una violación.

int* p1 = (int*)malloc(10); /* Violación */

libre(p1); /* Violación */

La solución recomendada es preasignar un bloque de memoria y administrarlo según sea necesario a través de los equivalentes definidos de “malloc” y “free”. De manera similar, en C++, la solución habitual es sobrecargar los operadores “new” y “delete”.

La intención del software, el lenguaje y la plataforma afectan los tipos de errores que puede detectar el análisis de código estático.

Desviaciones de análisis de código estático

El análisis de código estático identifica errores en función de conjuntos de reglas determinados. Esto significa que, si alguna línea desafía una regla, se marcará. Por supuesto, como en la vida real, existen algunas excepciones a estas reglas en los distintos tipos de software.

En situaciones como estas, los desarrolladores permiten desviaciones. Las reglas pueden ajustarse a las circunstancias y permitir problemas especiales. Un equipo puede decidir si esa desviación es aceptable o no. Esto también se documenta porque viola las reglas originales.

Cómo elegir una herramienta de análisis de código estático

El conjunto de herramientas de Parasoft para automatizar las pruebas de software funciona en distintos flujos de trabajo y composiciones de equipo. Cuando se trata del análisis de código estático, esto suena igual de cierto. Acelera el ciclo de desarrollo, reduce las tasas de defectos y proporciona una mejora continua. Identificar qué herramienta podría funcionar mejor para sus necesidades comienza simplemente con el lenguaje base del código fuente. Además de Soluciones en C y C++Parasoft también proporciona Soluciones para pruebas Java con Jtest así como Prueba de lenguajes C# y VB.NET con dotTEST.

El análisis de código estático se puede realizar en el IDE (Eclipse, VS Code, Visual Studio) o mediante la interfaz de línea de comandos para la automatización y los procesos de integración continua. Se puede acceder a los resultados del análisis inmediatamente dentro del IDE y desde los informes generados (HTML, PDF, XML), así como agregarlos para su posterior posprocesamiento, generación de informes y análisis desde el galardonado panel de análisis e informes de Parasoft DTP.

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.