Logotipo de Parasoft Buscar

¡Descubre GoogleTest, con certificación TÜV y la tecnología Agentic AI para pruebas de C/C++!
Obtenga los detalles »

Fondo geométrico con toques de azul y verde.
Guía para lograr la seguridad funcional en el software ferroviario: Cómo cumplir con los requisitos de la norma EN 50128 (imagen de portada del documento técnico)

White Paper

Guía para lograr la seguridad funcional en el software ferroviario: cómo satisfacer los requisitos de EN 50128

¿Te interesa saber qué contiene la guía? Empieza con la vista previa a continuación.

Introducción

Con la creciente dependencia del software en sistemas embebidosGarantizar la calidad se ha vuelto cada vez más complejo. Muchos desarrolladores no pueden ejecutar fácilmente programas de prueba en entornos de implementación reales debido a la falta de acceso al hardware del sistema final. Para abordar este y otros desafíos, es necesario considerar la calidad del código a lo largo de todo el ciclo de vida del desarrollo, mediante la sinergia de técnicas probadas para la prevención temprana de defectos, con el apoyo de la automatización para la implementación y el monitoreo.

A medida que aumenta la complejidad del software sistemas ferroviarios, así también los riesgos de fallos sistemáticos y aleatorios. La norma EN 50128 define los requisitos y procesos para reducir estos riesgos a un nivel tolerable. Pruebas de desarrollo en C y C++ La solución admite la aplicación de la norma EN 50128. y su sucesora EN 50716Permiten a los equipos producir software embebido de mayor calidad, realizar pruebas de forma más eficiente y hacer un seguimiento constante del progreso hacia los objetivos de calidad.

Parasoft automatiza las actividades clave de calidad, incluyendo el análisis estático, las pruebas unitarias y de componentes, y la cobertura de código, a lo largo de todo el ciclo de desarrollo, comenzando en el escritorio del ingeniero para prevenir la introducción de patrones de codificación propensos a defectos.

Este documento técnico explica cómo lograr la seguridad funcional en el software ferroviario cumpliendo con los requisitos de las normas EN 50128/EN 50716, y cómo Parasoft C/C++test ayuda a los equipos a alcanzar los niveles SIL 0-4 mediante análisis estático automatizado, pruebas dinámicas, cobertura e informes completos.

Acerca de la norma EN 50128

La norma EN 50128 forma parte de un grupo de normas europeas relacionadas que definen los requisitos para aplicaciones ferroviarias. Otras normas del grupo son:

  • EN 50126 "Especificación y demostración de fiabilidad, disponibilidad, mantenibilidad y seguridad (RAMS)"
  • EN 50129 "Sistemas de comunicación, señalización y procesamiento – Sistemas electrónicos de seguridad para señalización"

La norma EN 50128, titulada «Sistemas de comunicación, señalización y procesamiento: software para sistemas de control y protección ferroviarios», aborda específicamente el aspecto del software en las aplicaciones ferroviarias. Define cinco niveles de integridad de seguridad del software (SIL). El SIL más bajo es 0 y el más alto es 4.

El nivel de integridad del software depende del riesgo que pueda derivarse de un fallo del mismo. El software que conlleva un mayor riesgo de seguridad en caso de fallo se clasifica con un SIL más alto. Para cada SIL, las técnicas y medidas requeridas se definen en las tablas normativas del Anexo A de la norma EN 50128.

Sé consciente de EN 50716 Sustituye a las normas EN 50128 (señalización/control) y EN 50657 (material rodante a bordo), fusionándolas en una única norma unificada para el software ferroviario y alineándose estrechamente con las normas EN 50126 (RAMS) y EN 50129 (seguridad).

Acerca de Parasoft C/C++test

Parasoft C/C++test es una solución integrada de pruebas de desarrollo para automatizar una amplia gama de mejores prácticas que han demostrado mejorar la productividad del equipo de desarrollo de software y la calidad del software, entre las que se incluyen:

  • Análisis estático. Supervise el cumplimiento de los estándares de codificación y prevenga los defectos en las primeras etapas del ciclo de vida del desarrollo de software (SDLC).
  • Examen de la unidad. Cree y ejecute pruebas en el host o en el destino.
  • Cobertura y análisis. Identificar las deficiencias en la cobertura de pruebas y código.
  • Trazabilidad de requisitos. Vincular requisitos a pruebas y código.
  • Detección de errores en tiempo de ejecución. Detecta errores de acceso a la memoria, fugas, corrupción de datos y mucho más.

Esto proporciona a los equipos una forma práctica de prevenir, exponer y corregir errores para garantizar que su código C y C++ funcione correctamente. Para facilitar una rápida solución, cada problema detectado se prioriza según asignaciones de gravedad configurables, se asigna automáticamente al desarrollador que escribió el código relacionado y se distribuye a su IDE con enlaces directos al código problemático y una descripción de cómo solucionarlo.

Ejecución de pruebas e informes completos

Imagen de vías de ferrocarril

Prueba en el host, el simulador y el objetivo.

C/C++test automatiza todo el flujo de ejecución de pruebas, incluyendo la creación de casos de prueba, la compilación cruzada, el despliegue y la ejecución. A continuación, carga los resultados, que incluyen métricas de cobertura, en la interfaz gráfica de usuario (GUI). Las pruebas pueden ejecutarse de forma interactiva desde la GUI o desde la línea de comandos para la ejecución automatizada, así como para pruebas de regresión por lotes.

En el modo interactivo, los usuarios pueden ejecutar pruebas individualmente o en grupos seleccionados para facilitar la depuración o la validación. Para la ejecución por lotes, las pruebas se pueden agrupar según el código de usuario al que estén vinculadas, su nombre o su ubicación en el disco.

Informes detallados configurables

Los informes en formato HTML, PDF y formatos personalizados se pueden configurar mediante controles de interfaz gráfica o un archivo de opciones. Los informes estándar incluyen un resumen de los resultados del análisis de código y las pruebas (aprobado/reprobado), una lista de los archivos analizados y un resumen de la cobertura del código.

Los informes se pueden personalizar para incluir una lista de comprobaciones de análisis estático activas, resultados de pruebas ampliados con el estado de aprobado/reprobado de cada prueba, parámetros de gráficos de tendencias para métricas clave y listados completos del código con codificación por colores de todos los resultados de cobertura de código. Los informes generados se pueden enviar automáticamente por correo electrónico, según diversos filtros basados ​​en roles. Además de proporcionar datos directamente a los desarrolladores responsables del código marcado con defectos, C/C++test envía informes resumidos a gerentes y jefes de equipo.

Informes y análisis

Los resultados de análisis de código y pruebas, análisis de cobertura y otros datos de pruebas de C/C++ se pueden enviar a Parasoft DTP, donde se correlacionan con los datos generados por analizadores de terceros, control de versiones, seguimiento de defectos y otros componentes de infraestructura, y luego se procesan. El resultado es un análisis inteligente y práctico que proporciona visibilidad del riesgo asociado con la aplicación bajo prueba, y también la trazabilidad necesaria para Demostrar el cumplimiento de la norma EN 50128..

La revisión y corrección de defectos se facilitan mediante la asignación y distribución automatizada de tareas. Cada defecto detectado se prioriza, se asigna al desarrollador que escribió el código correspondiente y se distribuye a su entorno de desarrollo integrado (IDE) con todos los datos y enlaces al código. Para ayudar a los gerentes a evaluar y documentar las tendencias, los informes centralizados garantizan la visibilidad en tiempo real del estado y los procesos de calidad. Estos datos también ayudan a determinar si se necesitan acciones adicionales para alcanzar los objetivos internos o demostrar el cumplimiento normativo.

Cumplimiento de los requisitos de la norma EN 50128 con Parasoft

La norma EN 50128 define los requisitos para las herramientas de soporte utilizadas en el desarrollo y la verificación de software ferroviario. Parasoft C/C++test se clasifica como una herramienta de clase T2, que se define como una herramienta que "apoya la prueba o verificación del diseño o del código ejecutable, donde los errores en la herramienta pueden no revelar defectos, pero no pueden generar errores directamente en el software ejecutable". Como se exige para las herramientas de clase T2, C/C++test proporciona una guía de usuario que define claramente el comportamiento de la herramienta y ofrece instrucciones para su uso.

Las tablas que aparecen a continuación presentan las técnicas y medidas recomendadas y/o exigidas por la norma EN 50128, Anexo A normativo, que pueden cumplirse total o parcialmente utilizando Parasoft C/C++test. Para cada técnica y medida, las tablas siguientes incluyen una breve descripción de cómo cumplirla total o parcialmente utilizando las funcionalidades de Parasoft C/C++test. Los siguientes marcadores indican que, para el SIL dado:

  • M – La técnica es obligatoria
  • R – Se recomienda la técnica
  • HR – Se recomienda encarecidamente esta técnica.
  • – Sin recomendación

Matriz de conformidad EN 50128

Las siguientes tablas detallan cómo la funcionalidad de Parasoft C/C++test se ajusta a los requisitos de la norma EN 50128 en las distintas categorías de desarrollo y verificación de software. Cada tabla muestra las recomendaciones de Nivel de Integridad de Seguridad (SIL) aplicables.

Tabla A.4 – Diseño e implementación de software

Funcionalidad de prueba de C/C++ SIL 0 SIL 1 SIL 2 SIL 3 SIL 4
Enfoque modular HR M M M M
Utilice los módulos de estándares de codificación y métricas de código para verificar que el código tenga la modularidad adecuada, comprobando la métrica de acoplamiento entre objetos, el uso de variables globales, el número de parámetros de función, la documentación del código y otros aspectos.
Componentes HR HR HR HR HR
Utilice el módulo de estándares de codificación para verificar la robustez y la mantenibilidad de los componentes de software. Consulte la Tabla A.20 para obtener más detalles.
Estándares de diseño y codificación HR HR HR M M
Utilice una de las configuraciones de prueba predefinidas para estándares de codificación (MISRA C, MISRA C++, JSF++, etc.) o prepare una configuración de prueba personalizada utilizando un conjunto apropiado de reglas de estándares de codificación integradas y definidas por el usuario, incluyendo las mejores prácticas de C/C++, evitando código peligroso, cumpliendo con las convenciones de nomenclatura y formato para facilitar la lectura, y mucho más. Consulte la Tabla A.12 para obtener más detalles.
Programación estructurada R HR HR HR HR
Utilice los módulos de estándares de codificación y métricas de código para verificar la complejidad estructural de los componentes de software (por ejemplo, manteniendo los valores de las métricas de complejidad ciclomática y esencial para las funciones en un nivel apropiado).
Subconjunto de idioma HR HR
Utilice el módulo de estándares de codificación con una configuración personalizable de reglas de estándares de codificación para verificar que el código aplica el subconjunto de lenguaje C/C++ deseado; utilice una de las configuraciones predefinidas (por ejemplo, MISRA C/C++, CERT C/C++, JSF++, Ellemtel Coding Standards y más) o prepare un subconjunto de C/C++ personalizado.
Programación orientada a objetos R R R R R

Tabla A.5 – Verificación y pruebas

Funcionalidad de prueba de C/C++ SIL 0 SIL 1 SIL 2 SIL 3 SIL 4
Análisis estático HR HR HR HR
Realice un análisis estático utilizando un conjunto personalizable de estándares de codificación, reglas de control de flujo y reglas de análisis de flujo de datos. Consulte la tabla A.19 para obtener más detalles.
Análisis y pruebas dinámicas HR HR HR HR
Realice la ejecución de pruebas unitarias (en diferentes niveles: desde el ámbito de archivo hasta el ámbito de proyecto) y la monitorización de la aplicación, ambas con análisis de cobertura de código. Consulte la tabla A.13 para obtener más detalles.
Métrica R R R R
Utilice los módulos de métricas de código y estándares de codificación para calcular una amplia gama de métricas de código, incluidas métricas de complejidad, acoplamiento entre objetos, profundidad de herencia, etc.
Trazabilidad R HR HR M M
Vincula las pruebas unitarias con los requisitos, las tareas de desarrollo o los defectos insertando la información adecuada como metadatos en los comentarios del código.
Cobertura de pruebas para el código R HR HR HR HR
Utilice el módulo de cobertura para generar informes sobre la cobertura de código de las pruebas unitarias y funcionales ejecutadas mediante la monitorización de la aplicación en ejecución. Consulte la Tabla A.21 para obtener más detalles.
Pruebas funcionales/de caja negra HR HR HR M M
Ejecute las pruebas unitarias preparadas para verificar la funcionalidad del código desarrollado. Consulte la Tabla A.14 para obtener más detalles.
Prueba de interfaz HR HR HR HR HR
Ejecuta las pruebas unitarias que se generaron automáticamente utilizando una amplia gama de valores de entrada para las funciones probadas (valores límite, valores de parámetros característicos, valores definidos por el usuario para tipos dados, etc.). Utiliza fuentes de datos externas para definir una única prueba unitaria con varias combinaciones de entrada.

Nota: Las tablas de cumplimiento adicionales (A.6, A.7, A.8, A.12, A.13, A.14, A.19, A.20, A.21, A.22, A.23) siguen la misma estructura, asignando capacidades de prueba de C/C++ a los requisitos SIL en las categorías de Integración, Pruebas generales de software, Técnicas de análisis de software, Estándares de codificación, Análisis y pruebas dinámicas, Pruebas funcionales/de caja negra, Análisis estático, Componentes, Cobertura de pruebas para código, Arquitectura de software orientada a objetos y Diseño detallado orientado a objetos. Cada tabla proporciona descripciones detalladas de cómo cumplir con los requisitos específicos de EN 50128 utilizando las herramientas de Parasoft.

Resumen

Parasoft C/C++test ayuda a los equipos de desarrollo de software ferroviario a satisfacer total o parcialmente los requisitos del proceso de desarrollo y verificación de software definidos por la norma EN 50128. y su sucesora EN 50716Los equipos obtienen información importante cuando DTP agrega los resultados de Pruebas automatizadas y análisis de código en C/C++test. El análisis inteligente y la monitorización continua de las pruebas reducen significativamente el trabajo necesario para la verificación del software.

Equipo de desarrolladores

¿Listo para sumergirte más profundamente?

Obtenga el documento técnico completo