Skip to the content.

:balance_scale: Estándares de codificación y requisitos normativos

C++ ha ocupado tradicionalmente las áreas donde el costo de un error no se mide en dinero perdido sino en vidas humanas: electrónica automotriz, dispositivos médicos, aviónica, automatización industrial, transporte ferroviario. En tales proyectos, la libertad del lenguaje se convierte en un problema, por lo que se restringe, con un conjunto de reglas de codificación, comprobaciones obligatorias y un proceso de desarrollo documentado.

Este artículo es un mapa general del territorio, no una guía de certificación. Su objetivo es que comprendas a qué se refiere cuando una oferta de trabajo dice “experiencia en MISRA” o “proyectos ISO 26262”, y que sepas dónde buscar los detalles.

Hay una gran cantidad de estándares y requisitos, y a continuación solo se recopilan los más destacados. No existe un “conjunto obligatorio” único: cada proyecto utiliza su propio subconjunto según la industria, el país, el cliente y la clase de criticidad. Tiene sentido profundizar en un estándar específico cuando te lo encuentras realmente en tu proyecto, no solo por si acaso.

:warning: Los requisitos y los plazos cambian. Antes de tomar decisiones, verifica con las ediciones actuales de los estándares y con los abogados de tu empresa: este artículo es para orientación, no para conclusiones legales.

:straight_ruler: Estándares de codificación

Restringen el lenguaje a un subconjunto con menos formas de dispararte en el pie: sin asignación dinámica de memoria después de la inicialización, sin excepciones, sin conversiones de tipos implícitas, etc. El cumplimiento es verificado por analizadores estáticos; tales conjuntos de reglas no se verifican a mano.

:shield: Seguridad funcional

Éstos responden a la pregunta “qué debe suceder para que el sistema no haga daño en caso de un fallo”. Regulan no tanto el código como el proceso: requisitos, trazabilidad, pruebas, documentación y calificación de las herramientas utilizadas.

El estándar base en esta área es IEC 61508, que introduce los Niveles de Integridad de Seguridad (Safety Integrity Levels) SIL 1-4. Los estándares de la industria a continuación son sus adaptaciones:

:lock: Ciberseguridad y la cadena de suministro

Un tema relativamente nuevo para el mundo de C++: los reguladores están transfiriendo la responsabilidad de las vulnerabilidades al proveedor de software.

:computer: Qué significa esto en la práctica

Si terminas en un proyecto de este tipo, lo que cambia no es tanto el lenguaje como el entorno alrededor del código:

:question: Quién necesita esto realmente

No todos. Si escribes juegos, aplicaciones de escritorio, backends o sistemas de trading, en la práctica lo más probable es que no te encuentres con estos estándares, y no tiene sentido estudiarlos especialmente.

El tema se vuelve obligatorio si entras en la electrónica automotriz, dispositivos médicos, aviación, espacio, transporte ferroviario o automatización industrial. Para todos los demás es suficiente saber que estos estándares existen y de qué tratan, eso es suficiente para una entrevista.

La excepción es CRA y SBOM. Se refieren a una gama mucho más amplia de productos que la seguridad funcional clásica, por lo que vale la pena familiarizarse con ellos incluso como un desarrollador “común” cuyos productos se venden en Europa.


A la página principal