Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial Internet of Things >> Incrustado

Dominar la codificación embebida: Hábitos probados para reducir errores y mejorar la seguridad

En la última década, el software embebido ha crecido desde unas cientos de miles de líneas a más de 100 millones en un vehículo típico. El cambio a procesadores de 32 bits y la abundancia de memoria han desbloqueado una funcionalidad sin precedentes, pero también han amplificado el riesgo de errores sutiles que amenazan la seguridad y la protección.

Para mantenerse a la vanguardia, los desarrolladores deben adoptar un enfoque sistemático que prevenga los errores antes de que entren en la base de código. Dos categorías principales de errores merecen especial atención:

La implementación de un estándar de codificación riguroso, como MISRA C/C++, junto con pruebas basadas en requisitos, ofrece una poderosa "onza de prevención". Esta estrategia reduce el tiempo de depuración, ajusta los cronogramas y, en última instancia, protege el retorno de inversión (ROI).

Por qué la prevención importa

Los errores humanos son inevitables: los ingenieros se apresuran, pasan por alto detalles o malinterpretan flujos de datos complejos. Pero cuando el software crece en tamaño e interconectividad, estos simples resbalones pueden convertirse en fallos críticos. Un estándar de codificación disciplinado ayuda a detectar y eliminar muchos de estos escollos antes de que surjan.

En el ecosistema C/C++, aproximadamente el 80 % de los defectos provienen del mal uso de solo el 20 % del lenguaje. Al prohibir o restringir las construcciones problemáticas, un estándar eleva drásticamente la calidad del código.

Considere el comportamiento indefinido que surge cuando un entero con signo se desplaza a la derecha. Dependiendo del compilador, el resultado puede diferir, lo que conduce a un comportamiento inconsistente del programa. Del mismo modo, una función que lee un búfer circular puede devolver valores en un orden inesperado en algunos compiladores. Estos matices se destacan en las figuras a continuación.

Dominar la codificación embebida: Hábitos probados para reducir errores y mejorar la seguridad
Figura 1. Comportamiento dependiente del compilador en construcciones C/C++. Fuente: LDRA

Dominar la codificación embebida: Hábitos probados para reducir errores y mejorar la seguridad
Figura 2. Comportamiento no especificado en un ejemplo de búfer circular. Fuente: LDRA

Aprovechando MISRA C/C++

MISRA, publicado por primera vez en 1998 para la industria automotriz, sigue siendo el estándar de oro para la codificación embebida en C/C++. Especifica:

En 2016, MISRA se amplió para abordar código crítico para la seguridad, añadiendo 14 nuevas directivas. Por ejemplo, la Directiva 4.14 prohíbe explícitamente construcciones que pueden llevar a comportamiento indefinido, reforzando así la postura de seguridad.

Dominar la codificación embebida: Hábitos probados para reducir errores y mejorar la seguridad
Figura 3. Guía de MISRA sobre comportamiento indefinido y no especificado. Fuente: LDRA

Dominar la codificación embebida: Hábitos probados para reducir errores y mejorar la seguridad
Figura 4. Papel de la Directiva 4.14 en la prevención del comportamiento indefinido. Fuente: LDRA

Del código a la aplicación: El papel de los requisitos y las pruebas

Incluso un código impecable puede fallar si no cumple su propósito previsto. La trazabilidad de requisitos y las pruebas a nivel de unidad son esenciales para verificar que el software se comporta como se diseñó.

La trazabilidad bidireccional vincula cada función con su requisito de bajo nivel y con los objetivos a nivel de sistema. Este mapeo expone características faltantes o superfluas tempranamente.

Dominar la codificación embebida: Hábitos probados para reducir errores y mejorar la seguridad
Figura 5. Trazabilidad bidireccional de la función al requisito del sistema. Fuente: LDRA

Una vez definidos los requisitos de bajo nivel, los casos de prueba surgen naturalmente. Ejecutar estas pruebas, idealmente con herramientas automatizadas de pruebas unitarias, confirma que el código cumple su contrato.

Dominar la codificación embebida: Hábitos probados para reducir errores y mejorar la seguridad
Figura 9. Resultados de pruebas unitarias automatizadas. Fuente: LDRA

Adoptando nuevos hábitos de codificación

El desarrollo embebido moderno exige un enfoque holístico:

Estas prácticas entregan código más limpio y mantenible, simplifican la adición de características y reducen los costos de mantenimiento a largo plazo, beneficios que resuenan tanto en dominios críticos para la seguridad como en los que no lo son.

Adoptar estos hábitos no es opcional si se busca una ventaja competitiva. La diferencia entre una base de código que necesita lucha contra incendios constante y otra que evoluciona suavemente a menudo es solo un proceso disciplinado.

Artículo original de EDN.

Incrustado

  1. GE Digital Lanza Software de Gestión Predictiva de Activos, Cambiando el Mantenimiento de Reactivo a Proactivo
  2. Domine la capacitación en CMMS: Involucre equipos y aumente la retención
  3. Saelig presenta el Impact-D 100AL: PC embebido potente, compacto con vida de 15 años y E/S ricas
  4. Tres Pasos Comprobados para Asegurar su Cadena de Suministro de Software
  5. Cadenas de texto: Una vulnerabilidad oculta en el software embebido
  6. SOAFEE: Arquitectura Cloud-Native que Potencia Plataformas Automotrices Software-Defined
  7. Pixus Lanza Frontales 6U OpenVPX Robustos con Integridad Estructural Mejorada
  8. Kontron Presentación COM HPC: Nuevo Estándar Embedded Computing Alto Rendimiento
  9. Congatec presenta 10 nuevos módulos COM Express Type‑6 con procesadores Intel Coffee Lake H
  10. Asegurar Software Open-Source en IoT: Mitigar Riesgos de Software
  11. Aprovechar DevOps para superar los desafíos del software embebido