Tome un camino más rápido e inteligente hacia la automatización de pruebas C/C++ impulsada por IA. Descubra cómo >>
White Paper
¿Te interesa saber qué contiene el informe técnico? Empieza con el resumen a continuación.
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.
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.
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:
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.
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.
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.
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.
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:
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.
| 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 |
| 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 |
| 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 |
| 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 |
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?