X
BLOG

Desglose de las pautas de codificación AUTOSAR C ++ 14 para AUTOSAR adaptable

Desglose de las pautas de codificación AUTOSAR C ++ 14 para AUTOSAR adaptable Tiempo de leer: 8 minutos

Las pautas de AUTOSAR C ++ 14 son una actualización de MISRA C ++ 2008, que proporcionan pautas de codificación para C ++ moderno según lo definido por ISO / IEC 14882: 2014.

AUTOSAR adaptable

La industria del automóvil ha experimentado cambios radicales en la última década. Las nuevas funcionalidades que se han introducido en los coches modernos los han transformado fundamentalmente en centros informáticos. Esto se refleja en el desarrollo de las plataformas que se utilizan para construir el software automotriz, específicamente AUTOSAR. El enfoque "clásico" que asumió una configuración estática en el momento de la compilación, sin asignación de memoria dinámica y el predominio del lenguaje C ya no es suficiente. Las nuevas funciones requieren mucho código avanzado, como:

  • Conducción automatizada
  • Comunicación V2X (comunicación de vehículo a vehículo y de vehículo a infraestructura)
  • Actualizaciones continuas por aire
  • Multimedia de alta definición
  • Computación AI, reconocimiento de imágenes

Estas nuevas características también requieren cambios en los paradigmas que fueron suficientes para el enfoque clásico. Para abordar estos desafíos y mejorar el desarrollo automotriz, el Consorcio AUTOSAR, que incluye a la mayoría de los principales fabricantes de automóviles del mundo, lanzó la nueva edición del estándar AUTOSAR en marzo de 2017, llamado Adaptive AUTOSAR.

El lanzamiento del nuevo estándar no invalida la Plataforma Clásica, seguirá siendo una opción principal para las unidades de control sin necesidades de conectividad, requisitos de hardware limitados y funcionalidad estricta en tiempo real.

Adaptive AUTOSAR define una plataforma para desarrollar unidades de control automotriz que brindan funciones sofisticadas como sistemas avanzados de asistencia a la conducción, transmisión de medios o actualizaciones de software a través de Internet. La plataforma contiene la especificación de interfaces que definen servicios y API. Algunas de las novedades introducidas en Adaptive AUTOSAR son:

  • Enfoque orientado a objetos
  • Lenguaje de programación C ++
  • Arquitectura orientada a Servicios
  • Sistema operativo POSIX
  • Cambios en la configuración de la ECU durante el tiempo de ejecución del sistema
  • Implementación y actualizaciones por aire

C no es suficiente

Adaptive AUTOSAR fue una respuesta a la creciente complejidad de los requisitos de los automóviles modernos y los nuevos desafíos que el paradigma del “mundo conectado” impuso a los sistemas automotrices. El lenguaje C, que era la opción principal en el pasado para los desarrolladores de automóviles, se convirtió en un bloqueador, o al menos en la desaceleración. La complejidad de los sistemas obligó a cambiar del lenguaje C a C ++, que ofrece un mejor soporte para estructurar los sistemas grandes y distribuidos, y proporciona mejores mecanismos para la encapsulación de datos.

Adaptive AUTOSAR se basa en el estándar de lenguaje C ++ 14. La elección de la versión estándar del idioma fue una selección entre "no demasiado antiguo" y "no demasiado nuevo". Por un lado, tenemos C ++ 98 y C ++ 03 que todavía se utilizan ampliamente en la industria automotriz, pero están desactualizados y no se corresponden con los patrones de desarrollo modernos. Por otro lado, tenemos el C ++ 17, estándar que aún está muy actualizado. El argumento para dejar atrás C ++ 98 y C ++ 03 fue:

  • Evolución / mejoras sustanciales del lenguaje C ++
  • Disponibilidad de mejores compiladores
  • Disponibilidad de mejores herramientas de prueba y análisis

Una de las principales razones para no optar por C ++ 17 fue que las nuevas características introducidas en el estándar pueden traer riesgos de seguridad a los sistemas; detectar y comprender las vulnerabilidades de seguridad requiere algo de tiempo. Además, los compiladores de C ++ que cumplen con el estándar C ++ 17 son todavía muy nuevos y requieren más pruebas y un mejor soporte para su uso en el desarrollo crítico para la seguridad. Por lo tanto, se tomó la decisión de confiar en el estándar C ++ 14 como una opción intermedia razonable.

¿Qué pasa con las pautas de codificación de AUTOSAR?

El lanzamiento de la plataforma Adaptive AUTOSAR aumentó la adopción de C ++ moderno en proyectos automotrices. Esto hizo que un problema específico fuera mucho más visible: mientras que la evolución del lenguaje C ++ se aceleró en los últimos años, los estándares de codificación automotriz parecían quedarse atrás. En el momento en que se lanzaron C ++ 11 y C ++ 14, el estándar de codificación automotriz más popular para C ++, MISRA C ++ 2008, ya estaba seriamente desactualizado y se dirigía solo a la versión C ++ 03 del lenguaje.

Cada año, el problema crecía y se volvía más molesto. Los desarrolladores aceptaron ampliamente las nuevas características de los últimos estándares de C ++ y comenzaron a usarlas sin la orientación adecuada o las mejores prácticas. Esta situación fue especialmente problemática para los equipos que desarrollan sistemas críticos para la seguridad que son requeridos por ISO26262 para usar análisis estático con un subconjunto adecuado de pautas de codificación.

Para resolver este problema, el Consorcio AUTOSAR publicó la documentación de pautas dedicadas como parte de la plataforma Adaptive AUTOSAR, que se titula "Pautas para el uso del lenguaje C ++ 14 en sistemas críticos y relacionados con la seguridad". Depender de MISRA C ++ 2008 sin modificar sería simplemente un delito. La situación se describe en la línea de tiempo a continuación:

1998 - Lanzamiento del estándar C ++ 98

2003 - Lanzamiento del estándar C ++ 03

2008 - MISRA C ++ 2008 (cubre C ++ 03)

2011 - Lanzamiento del estándar C ++ 11

2014 - Lanzamiento del estándar C ++ 14

2017 - AUTOSAR C ++ 14 (marzo)

2017: lanzamiento del estándar C ++ 17 (diciembre)

Directrices de codificación AUTOSAR C ++ 14

El documento de pautas de AUTOSAR C ++ 14 está destinado a ser una actualización de MISRA C ++ 2008 y proporciona pautas de codificación para C ++ moderno según lo definido por ISO / IEC 14882: 2014. La principal aplicación de este estándar de codificación es la industria automotriz, pero puede usarse en otras industrias donde se requiere programación integrada.

El estándar especifica 342 reglas:

  • Se adoptaron 154 reglas de MISRA C ++ 2008 sin modificaciones (67%)
  • 131 reglas se basan en estándares C ++ existentes
  • 57 reglas se basan en la investigación u otra literatura o recursos

El estándar está bien documentado y proporciona trazabilidad a los otros estándares de C ++ existentes, como HIC ++ 4.0, JSF, SEI CERT C ++, C ++ Core Guidelines y, por supuesto, a MISRA C ++ 2008.

AUTOSAR C ++ 14 sigue el enfoque de clasificación de reglas de MISRA C ++ 2008. Las reglas se clasifican según el nivel de obligación:

  • Reglas requeridas: obligatorio para reclamar el cumplimiento de la norma
  • Asesor reglas: recomendado pero sin estado obligatorio

Además, las reglas también se clasifican si se aplican automáticamente mediante herramientas de análisis estático:

  • Email: puede ser totalmente compatible con herramientas de análisis estático
  • Parcialmente automatizado: puede ser compatible con herramientas de análisis estático, pero puede requerir prácticas adicionales, como la revisión de código.
  • No automatizado: no se puede admitir con herramientas de análisis estático.

Y finalmente, las reglas se clasifican según el objetivo de asignación: implementación, verificación, cadena de herramientas e infraestructura. Las reglas del estándar AUTOSAR C ++ 14 están etiquetadas con la información sobre la clasificación, por ejemplo:

Cómo seleccionar la herramienta adecuada para el cumplimiento de AUTOSAR C ++ en apoyo de ISO 26262

¿Cómo puedo cumplir?

En 2016, el consorcio MISRA publicó un documento titulado "Cumplimiento de MISRA: 2016 Lograr el cumplimiento de las Directrices de codificación de MISRA". Este documento fue muy bien recibido en la industria, ya que abordó una necesidad muy importante de definir el proceso para lograr el cumplimiento, especificando qué significa exactamente cumplir.

AUTOSAR C ++ 14 no proporciona ninguna orientación similar sobre el proceso de lograr el cumplimiento, al menos no directamente. Pero dado que las pautas de AUTOSAR C ++ se basan en MISRA C ++ 2008, es razonable volver a consultar el estándar MISRA para buscar orientación sobre el proceso para lograr el cumplimiento.

  • Producir una matriz de cumplimiento que indique cómo se aplica cada regla
  • Producir un procedimiento de desviación
  • Formalizar las prácticas laborales dentro del sistema de gestión de la calidad

Cumplir con estos requisitos significa un papeleo adicional. Lo primero que debería suceder es una definición de la matriz de cumplimiento, que es efectivamente una declaración de cómo vamos a hacer cumplir cada directriz. Vea el ejemplo a continuación:

La situación deseada es tener una herramienta de análisis estático que cubra tantas pautas como sea posible. Las reglas que no se pueden hacer cumplir con el análisis estático probablemente requerirán revisiones manuales, que son costosas.

Además de la matriz de cumplimiento, es necesario establecer un procedimiento de manejo de desviaciones. El procedimiento de desviación formaliza los pasos que deben tomarse cuando el desarrollo necesita desviarse de una directriz específica. Como lo prescribe MISRA, se espera que

"... el procedimiento se basará en obtener una aprobación para cada desviación o clase de desviación".

- MISRA

Esta es una pieza muy importante del rompecabezas: evita que los desarrolladores abusen del concepto de desviación que se desvían a voluntad. Efectivamente, necesitaremos algún tipo de tickets formales almacenados en nuestro sistema que documenten cada desviación en el código fuente. Lo mismo se aplica a la matriz de cumplimiento y cualquier configuración adicional y descripciones de proceso creadas para hacer cumplir el cumplimiento. MISRA C ++ 2008 es muy claro aquí y requiere "formalización dentro del sistema de calidad".

Finalmente, si todos los procedimientos descritos en MISRA C ++ 2008 punto 4.3 están en su lugar, podemos reclamar el cumplimiento demostrando lo siguiente:

  • Se ha completado una matriz de cumplimiento que muestra cómo se ha aplicado el cumplimiento.
  • Todo el código C ++ en el producto cumple con las reglas del documento MISRA C ++ 2008 o está sujeto a desviaciones documentadas
  • Se mantiene una lista de todas las instancias de las reglas que no se siguen y para cada instancia hay una desviación debidamente firmada.

El documento “Cumplimiento de MISRA: 2016” actualiza las instrucciones dadas en MISRA C ++ 2008 para establecer el proceso de cumplimiento. Algunos equipos pueden preferir usarlo como base para el proceso de cumplimiento de AUTOSAR C ++ 14, ya que es más nuevo y más detallado. Al igual que con MISRA C ++ 2008, “Cumplimiento de MISRA: 2016” requiere un proceso formal para manejar las desviaciones y debe documentar los métodos de ejecución para cada directriz aplicable. Este documento se denomina Plan de cumplimiento de las pautas (GEP).

“Cumplimiento de MISRA: 2016” amplía los requisitos para el proceso de cumplimiento e introduce algunos conceptos nuevos, como el Plan de Recategorización de Pautas (GRP), que documenta de manera formal los cambios que se introducen en las categorías de reglas, y el Resumen de Cumplimiento de Pautas (GCS ), que es básicamente un artefacto final del proceso de cumplimiento que presenta el nivel de cumplimiento que se logró para cada directriz.

“MISRA Compliance: 2016” también utiliza categorizaciones de reglas que se introdujeron en MISRA C 2012, y son diferentes de las de los estándares MISRA C ++ 2008 y AUTOSAR C ++ 14. Sin embargo, estas diferencias no parecen ser fundamentales, y la adopción de “MISRA Compliance: 2016” como base para AUTOSAR C ++ 14 es sin duda una opción.

Soporte para AUTOSAR C ++ 14 en la prueba Parasoft C / C ++

La única forma práctica de exigir el cumplimiento de un estándar de codificación como AUTOSAR C ++ 14 es con una herramienta de análisis estático, como Parasoft C / C ++test, una herramienta de calidad de código que admite múltiples tecnologías de prueba. La prueba Parasoft C / C ++ admite AUTOSAR C ++ mejor que cualquier otra herramienta de calidad de código. Las reglas de AUTOSAR C ++ 14 son parte del Paquete de Cumplimiento Automotriz de Parasoft, que extiende la funcionalidad de la prueba de Parasoft C / C ++ específicamente para desarrolladores automotrices. Además de las reglas de análisis estático específicas de la industria, como AUTOSAR C ++ 14, HIC ++ o MISRA, Automotive Compliance Pack de Parasoft ofrece un sofisticado sistema de informes interactivos que se personaliza según los requisitos impuestos por AUTOSAR, HIC ++ y MISRA, y permite un flujo de trabajo diario eficiente para el equipo.

La prueba Parasoft C / C ++ permite a los desarrolladores verificar el cumplimiento de su código sin dejar sus IDE e integra el proceso de escaneo en las compilaciones de CI en los servidores. Con el sistema de informes específico para automóviles de Parasoft, los miembros del equipo pueden monitorear continuamente su proceso de cumplimiento con facilidad.

Al limpiar las bases de código existentes, los equipos se benefician de la capacidad de crear políticas de cumplimiento que definan lo que asegura la consistencia de la práctica de prueba. En tales casos, es una práctica recomendada comenzar con el subconjunto de reglas del estándar y aumentar progresivamente el número de reglas activas a medida que avanza la limpieza del código. Esta capa de informes le permite monitorear constantemente el progreso de su base de código, controlar el proceso de desviación y tomar decisiones informadas sobre la extensión del conjunto de reglas.

Pruebe la prueba Parasoft C / C ++: una solución unificada de pruebas de desarrollo C y C ++ para proyectos de software integrados y críticos para la seguridad.
Solicita Una Demo

¿A dónde vamos desde aquí?

La industria automotriz está evolucionando dinámicamente. Entre muchos otros cambios, estamos siendo testigos de la transformación del automóvil en una experiencia que se parece más a usar un teléfono inteligente. El concepto de comprar una funcionalidad específica de un automóvil en forma de aplicación es una realidad. ¿Largo viaje de vacaciones? ¿Por qué no comprar el control de crucero durante 2 semanas?

Para hacer frente a estos desafíos y reducir potencialmente el tiempo de desarrollo, la industria automotriz necesita una innovación constante en el área de las plataformas de hardware y software que se utilizan en los automóviles modernos. Estas innovaciones deben estar respaldadas por estándares apropiados, en varios niveles, que aseguren la seguridad funcional, la calidad y la seguridad. AUTOSAR C ++ 14 ciertamente contribuye a este proceso.

Pero los estándares en sí mismos son solo una hoja de papel (si los imprimimos) y su implementación simplemente no es posible sin herramientas que lleven la automatización a las prácticas y procesos y permitan a los equipos de desarrollo de software automotriz enfocarse en brindar funcionalidades mejores y más avanzadas. Parasoft C / C ++test es la solución más completa para el desarrollo de C / C ++ de seguridad crítica, con más soporte para los estándares de codificación automotriz (AUTOSAR C ++, CERT C / C ++, MISRA) que cualquier otro proveedor de herramientas, y un sistema de informes dinámico, flexible y útil que permite todo su equipo para tener éxito con el cumplimiento.

Escrito por

Miroslaw Zielinski

Gerente de producto para las soluciones de prueba integradas de Parasoft, las especialidades de Miroslaw incluyen C / C ++, RTOS, análisis de código estático, pruebas unitarias, gestión de la calidad del software para aplicaciones críticas de seguridad y cumplimiento del software con los estándares de seguridad.

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

Prueba Parasoft