Logotipo de Parasoft
Imagen de portada del informe técnico

White Paper

Guía para lograr la seguridad funcional en la automatización industrial: cómo satisfacer los requisitos SIL de IEC 61508

¿Te interesa saber qué contiene el informe técnico? Empieza con el resumen a continuación.

Descripción general

Las funciones de seguridad en la automatización industrial se ejecutan cada vez más mediante sistemas eléctricos, electrónicos y electrónicos programables complejos. Probar estos sistemas es esencial, pero complejo debido a su complejidad. La norma IEC 61508 proporciona orientación para reducir los riesgos de fallos sistemáticos y aleatorios de hardware a niveles tolerables.

Este documento técnico detalla cómo Parasoft ayuda a los equipos de desarrollo de software a cumplir con los requisitos de SIL, presentando el concepto de SIL según lo define IEC 61508, describiendo la solución integrada de Parasoft para automatizar las mejores prácticas y mostrando cómo satisfacer los requisitos del proceso de desarrollo de software para niveles de SIL específicos.

Niveles de integridad del software

Nivel de integridad de seguridad (SIL), definido por el Estándar IEC 61508—es uno de los cuatro niveles (SIL1-SIL4) que corresponden al rango de probabilidad objetivo de fallos peligrosos de una función de seguridad dada. Cada función de seguridad en un sistema relacionado con la seguridad debe tener asignado un nivel de integridad de seguridad adecuado. Un sistema relacionado con la seguridad E/E/PE generalmente implementa más de una función de seguridad. Si los requisitos de integridad de seguridad para estas funciones de seguridad difieren, a menos que exista suficiente independencia de implementación entre ellas, los requisitos aplicables al nivel de integridad de seguridad más alto relevante se aplicarán a todo el sistema relacionado con la seguridad E/E/PE.

Según la norma IEC 61508, el nivel de integridad de seguridad de una función determinada se evalúa en función de la probabilidad promedio de fallo al realizar su función de diseño bajo demanda (para un modo de operación de baja demanda) o en función de la probabilidad de un fallo peligroso por hora (para un modo de operación de alta demanda o continuo).

La norma IEC 61508 especifica los requisitos para alcanzar cada nivel de integridad de seguridad. Estos requisitos son más rigurosos a niveles más altos de integridad de seguridad para lograr la menor probabilidad de fallos peligrosos requerida.

Acerca de la solución de pruebas de desarrollo de Parasoft para C y C++

Parasoft C/C++test es una solución integrada Para automatizar una amplia gama de buenas prácticas que han demostrado mejorar la productividad y la calidad del equipo de desarrollo de software. C/C++test facilita:

  • Análisis de código estático. Incluye flujo de datos, flujo de control y análisis de métricas.
  • Prueba unitaria. Crear, ejecutar, optimizar y mantener.
  • Cobertura de código. Expone qué código no se ha ejecutado mediante pruebas.
  • Trazabilidad de requisitos. Vincular requisitos a pruebas y código.
  • Detección de errores en tiempo de ejecución. Encuentre errores de acceso a memoria, fugas, corrupciones y más.
  • Revisión de código por pares. Examinar algoritmos, diseñar y buscar errores sutiles.

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.

Para el desarrollo integrado y multiplataforma, C/C++test se puede utilizar tanto en análisis de código basados ​​en host como en destino y en flujos de prueba.

Gráfico que muestra robots automatizados en una línea de montaje de automóviles.

Pruebas unitarias y de integración con análisis de cobertura

La automatización de Parasoft C/C++test aumenta considerablemente la eficiencia de las pruebas de corrección y fiabilidad de código nuevo o heredado. C/C++test genera automáticamente pruebas completas, incluyendo controladores y casos de prueba para funciones individuales, completamente en código C o C++. Estas pruebas, con o sin modificaciones, se utilizan para la validación inicial del comportamiento funcional del código. Al utilizar condiciones límite, estos casos de prueba generados automáticamente también comprueban las respuestas de las funciones a entradas inesperadas, lo que revela posibles problemas de fiabilidad.

Informes detallados configurables

Los informes HTML, PDF y formatos personalizados de Parasoft C/C++test se pueden configurar mediante controles de la interfaz gráfica de usuario o un archivo de opciones. Los informes estándar incluyen un resumen de aprobado/reprobado del análisis de código y los resultados de las pruebas, 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 las comprobaciones de análisis estático activas, resultados de prueba 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 la cobertura del código.

Integración DTP

Se pueden enviar análisis de código y resultados de pruebas, análisis de cobertura y otros datos de pruebas de C/C++ a DTP de Parasoft Donde se correlaciona con datos generados por analizadores externos, control de origen, seguimiento de defectos y otros componentes de infraestructura, y procesados ​​por DTP. El resultado es un análisis inteligente y práctico que no solo proporciona visibilidad del riesgo asociado a la aplicación bajo prueba, sino también la trazabilidad necesaria para cumplir con los requisitos de SIL.

Cumplimiento de los requisitos SIL con Parasoft C/C++test

Las siguientes tablas describen cómo Parasoft C/C++test admite los métodos del ciclo de vida de desarrollo de software necesarios para que las funciones de seguridad alcancen un SIL determinado. Tenga en cuenta que esta información presenta brevemente el uso de C/C++test en el proceso de verificación y pruebas relacionadas con el SIL. Consulte la norma y consulte a expertos en seguridad funcional para aclarar los requisitos definidos por la norma IEC 61508. Si tiene alguna pregunta adicional sobre cómo usar C/C++test en el proceso de certificación IEC 61508, póngase en contacto con su representante de Parasoft.

Los siguientes marcadores se utilizan en las tablas que se presentan a continuación para indicar:

  • R: Métodos de correspondencia de funcionalidades recomendados por la norma IEC 61508
  • HR: Métodos de adaptación de funcionalidades altamente recomendados por la norma IEC 61508
  • —: Sin recomendación

Las técnicas y medidas definidas en los anexos A y B de la norma IEC 61508-3 edición 2.0 2010 que satisface la funcionalidad de prueba C/C++ se han capturado en las tablas siguientes.

Automatización de Pruebas

Funcionalidad de prueba de C/C++ SIL 1 SIL 2 SIL 3 SIL 4
Estándares de diseño y codificación
Uso de un estándar de codificación para reducir la probabilidad de errores (Tabla B.1: 1) - R HR HR
No hay objetos dinámicos (Tabla B.1: 2) R HR HR HR
No hay variables dinámicas (Tabla B.1: 3a) - R HR HR
Comprobación en línea de la instalación de variables dinámicas (Tabla B.1: 3b) - R HR HR
Uso limitado de interrupciones (Tabla B.1: 4) R R HR HR
Uso limitado de punteros (Tabla B.1: 5) - R HR HR
Uso limitado de la recursión (Tabla B.1: 6) - R HR HR
No hay flujo de control no estructurado en programas en lenguajes de nivel superior (Tabla B.1: 7) R HR HR HR
Sin conversión automática de tipos (Tabla B.1: 8) R HR HR HR
Análisis y pruebas dinámicas
Ejecución de casos de prueba a partir del análisis de valores límite (Tabla B.2: 1) R HR HR HR
Ejecución de casos de prueba a partir de la suposición de errores (Tabla B.2: 2) R R R R
Ejecución de casos de prueba a partir de la siembra de errores (Tabla B.2: 3) - R R R
Clases de equivalencia y pruebas de partición de entrada (Tabla B.2: 6) R R R HR
Cobertura de pruebas estructurales (puntos de entrada) 100% (Tabla B.2: 7a) HR HR HR HR
Cobertura de pruebas estructurales (declaraciones) 100% (Tabla B.2: 7b) R HR HR HR
Cobertura de pruebas estructurales (ramas) 100% (Tabla B.2: 7c) R R HR HR
Cobertura de pruebas estructurales (condiciones, MC/DC) 100% (Tabla B.2: 7d) R R R HR
Pruebas funcionales y de caja negra
Clases de equivalencia y pruebas de partición de entrada, incluido el análisis de valores límite (Tabla B.3: 4) R HR HR HR
Test de rendimiento
Pruebas de avalancha/estrés (Tabla B.6: 1) R R HR HR
Análisis estático
Análisis del valor límite (Tabla B.8: 1) R R HR HR
Listas de verificación (Tabla B.8: 2) R R R R
Análisis del flujo de control (Tabla B.8: 3) R HR HR HR
Análisis del flujo de datos (Tabla B.8: 4) R HR HR HR
Error de adivinación (Tabla B.8: 5) R R R R
Inspecciones formales, incluidos criterios específicos (Tabla B.8: 6a) R R HR HR
Recorrido virtual (software) (Tabla B.8: 6b) R R R R
Ejecución simbólica (Tabla B.8: 7) - - R R
Revisión del diseño (Tabla B.8: 8) HR HR HR HR
Análisis estático del comportamiento de los errores en tiempo de ejecución (Tabla B.8: 9) R R R HR
Enfoque modular
Límite de tamaño del módulo de software (Tabla B.9: 1) HR HR HR HR
Control de la complejidad del software (Tabla B.9: 2) R R HR HR

Diseño y Desarrollo de Software

Funcionalidad de prueba de C/C++ SIL 1 SIL 2 SIL 3 SIL 4
Diseño de Arquitectura de Software
Detección de fallas (Tabla A.2: 1) - R HR HR
Diversas técnicas de monitorización (con separación entre el ordenador monitor y el ordenador monitorizado) (Tabla A.2: 3c) - R R HR
Redundancia diversa, implementando la misma especificación de requisitos de seguridad del software (Tabla A.2: 3e) - - - R
Uso de elementos de software confiables/verificados (si están disponibles) (Tabla A.2: 8) R HR HR HR
Herramientas de soporte y lenguaje de programación
Lenguaje de programación adecuado (Tabla A.3: 1) HR HR HR HR
Lenguaje de programación fuertemente tipado (Tabla A.3: 2) HR HR HR HR
Subconjunto lingüístico (Tabla A.3: 3) - - HR HR
Herramientas certificadas y traductores certificados (Tabla A.3: 4a) R HR HR HR
Herramientas y traductores: mayor confianza gracias a su uso (Tabla A.3: 4b) HR HR HR HR
Diseño de detalle
Métodos estructurados (Tabla A.4: 1a) HR HR HR HR
Métodos de diseño formal y refinamiento (Tabla A.4: 1c) - R R HR
Programación defensiva (Tabla A.4: 3) - R HR HR
Enfoque modular (Tabla A.4: 4) HR HR HR HR
Estándares de diseño y codificación (Tabla A.4: 5) R HR HR HR
Programación estructurada (Tabla A.4: 6) HR HR HR HR
Uso de elementos de software confiables/verificados (Tabla A.4: 7) R HR HR HR
Trazabilidad hacia adelante entre la especificación de requisitos de seguridad del software y el diseño del software (Tabla A.4: 8) R R HR HR
Pruebas e integración de módulos de software
Análisis y pruebas dinámicas (Tabla A.5: 2), (Tabla A.9: 4) R HR HR HR
Registro y análisis de datos (Tabla A.5: 3) HR HR HR HR
Pruebas funcionales y de caja negra (Tabla A.5: 4) (Tabla A.7: 4) HR HR HR HR
Pruebas de interfaz (Tabla A.5: 7) R R HR HR
Herramientas de gestión y automatización de pruebas (Tabla A.5: 8) R HR HR HR
Trazabilidad hacia adelante entre la especificación de diseño de software y las especificaciones de prueba de integración y módulo (Tabla A.5: 9) R R HR HR
Verificación formal (Tabla A.5: 10) - - R R
Modificación
Verifique nuevamente el módulo de software modificado (Tabla A.8: 2) HR HR HR HR
Vuelva a verificar el módulo de software afectado (Tabla A.8: 3) R HR HR HR
Revalidar el sistema completo (Tabla A.8: 3) - R HR HR
Validación de regresión R HR HR HR
Verificación de software
prueba formal - R R HR
Análisis estático R HR HR HR
Análisis y pruebas dinámicas (Tabla A.5: 2), (Tabla A.9: 4) R HR HR HR
Trazabilidad hacia adelante entre la especificación de diseño del software y el plan de verificación del software (incluida la verificación de datos) R R HR HR
Trazabilidad hacia atrás entre el plan de verificación del software (incluida la verificación de datos) y la especificación del diseño del software R R HR HR

Integración de electrónica programable

Funcionalidad de prueba de C/C++ SIL 1 SIL 2 SIL 3 SIL 4
Hardware y Software
Pruebas funcionales y de caja negra (Tabla A.6: 1) HR HR HR HR
Trazabilidad hacia adelante entre los requisitos de diseño del sistema y del software para la integración de hardware/software y la especificación de pruebas de integración de hardware/software (Tabla A.6: 3) R R HR HR

Especificación de requisitos de seguridad del software

Funcionalidad de prueba de C/C++ SIL 1 SIL 2 SIL 3 SIL 4
Panel de informes y análisis de Parasoft DTP
Trazabilidad hacia adelante entre los requisitos de seguridad del sistema y los requisitos de seguridad del software (Tabla A.1:2) R R HR HR
Trazabilidad hacia atrás entre los requisitos de seguridad y las necesidades de seguridad percibidas (Tabla A.1:3) R R HR HR
Herramientas de especificación asistidas por computadora para respaldar las técnicas/medidas apropiadas mencionadas anteriormente (Tabla A.1:4) R R HR HR

Resumen

Parasoft C/C++test ayuda a los equipos de desarrollo de software a cumplir con los requisitos de seguridad funcional de IEC 61508. Una amplia gama de tipos de análisis, incluidos análisis de cumplimiento de estándares de codificación, análisis del flujo de datos y control, pruebas unitarias, monitoreo de aplicaciones, componentes del flujo de trabajo y proceso de revisión de código entre pares, junto con los informes de pruebas configurables que contienen un alto nivel de detalles, facilitan significativamente el trabajo requerido para el proceso de verificación del software.

¿Listo para sumergirte más profundamente?

Obtenga el documento técnico completo