Las soluciones de software desempeñan un papel cada vez más importante en los sistemas de seguridad crítica y relacionados con la seguridad en general, de manera que el mal funcionamiento del software implica responsabilidades y una amenaza real que se puede manifestar en forma de heridas, pérdida de vidas, la interrupción de servicios esenciales o daños al medio ambiente.
Como resultado de ello, organismos internacionales de estandarización como ISO (International Organization for Standardization) e IEC (International Electrotechnical Commission) han publicado estándares ampliamente reconocidos y adoptados que sirven a los desarrolladores de software para certificar la seguridad de su software. Algunos ejemplos son ISO 26262 (Vehículos de carretera – Seguridad funcional) para el automóvil, EN 50128 (Sistemas de comunicación, señalización y procesamiento – Software para sistemas de control y protección del ferrocarril) para el transporte ferroviario e IEC 61508 (Seguridad funcional de sistemas eléctricos, electrónicos y electrónicos programables) para las aplicaciones industriales.
La responsabilidad de demostrar que el software de aplicación y los métodos, los procesos y las cadenas de herramientas de software que se han utilizado para su desarrollo cumplen los estándares correspondientes de seguridad funcional recae claramente en el desarrollador de la aplicación. No obstante, es un hecho que partes significativas de la cadena de herramientas quedan fuera del control del desarrollador. Esta es una de las razones por las cuales la validación del compilador, un segmento en el que Solid Sands ya es líder mundial, se ha convertido un aspecto fundamental para los desarrolladores de sistemas de seguridad crítica. En la práctica ningún compilador está libre de errores, por lo que es extremadamente importante saber dónde falla un compilador con el fin de evitar errores de compilación.
También es cierto que una parte significativa del código que pasa a formar parte de la aplicación completa será compilada probablemente con diferentes casos de uso, conjuntos de opciones del compilador y entornos de compilación respecto a los utilizados por el desarrollador. Esto se debe a que una parte del código que suele acabar en una aplicación está constituida por funciones de la biblioteca compiladas previamente, como la Biblioteca Estándar de C (libc), que a menudo se suministra en formato binario dentro de un kit de desarrollo de software (SDK).
En contra de lo que se suele pensar, que una biblioteca suministrada en formato binario sea insensible a cualquier caso de uso concreto, es decir, que el código sea invariable, en la práctica no es así. La incorporación de macros y plantillas de tipo genérico suele provocar con frecuencia que los componentes de la biblioteca sean sensibles al caso de uso. Por tanto, aunque la biblioteca fuera prevalidada por el proveedor del SDK usando el mismo compilador suministrado con el SDK, es casi seguro que no habrán encajado los requisitos del caso de uso, las opciones del compilador y el entorno de hardware de destino, y esto hace que resulte difícil demostrar el cumplimiento del estándar de seguridad funcional.
Para superar esta limitación, Solid Sands ha presentado una nueva herramienta de validación de la biblioteca denominada SuperGuard C Library Safety Qualification Suite. Se trata de un paquete de prueba basado en requisitos para la Biblioteca Estándar de C con total trazabilidad desde los resultados de cada prueba hasta los requisitos derivados de la especificación del lenguaje ISO C.
SuperGuard se puede utilizar para validar implementaciones de la Biblioteca Estándar de C en aplicaciones de seguridad crítica, tanto en implementaciones de la biblioteca de terceros sin modificar como de desarrollo y mantenimiento propios. Se muestra a continuación su papel en el Modelo V para desarrollo de software.