Test, Measurement & Inspection Product of the Year
Product Name: SuperGuard C Library Safety Qualification Suite
Company: Solid Sands
Entry Statement
Software solutions play an ever-increasing role in safety-critical and safety-related systems, meaning software malfunctions now represent liabilities and a real threat in terms of injury, loss of life, the interruption of essential services, or damage to the environment. As a result, international standards organizations such as the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC) have published widely recognised and adopted standards against which software developers can certify the safety of their software.
The responsibility for demonstrating that application software, and the software methods, processes, and tool chains used to develop it, comply with the relevant functional safety standards lies firmly with the application developer. However significant parts of the tool chain lie outside the developer’s control, making it vital to know where a compiler malfunctions so compiler errors can be avoided.
A significant part of the source code that typically ends up as a compiled binary in an application never goes through the compiler under exactly the same use-case, set of compiler options, and target hardware environment being used by the developer. This is because part of the code that typically ends up in an application comprises pre-compiled library functions, such as those in the C Standard Library (libc) often supplied in binary format as part of a software development kit (SDK).
The commonly held belief is that because a library is supplied in binary format it is insensitive to any particular use-case i.e. the code is invariant. However, this is not the case. The inclusion of macros and type-generic templates frequently makes library components use-case sensitive. So even if the library was pre-qualified by the SDK supplier using the same compiler delivered with the SDK, the matching use-case, compiler options, and target hardware environment requirements are almost certain not to have been met, making it difficult to demonstrate functional safety standard compliance.
To overcome this limitation, Solid Sands has introduced a new library qualification tool called the SuperGuard C Library Safety Qualification Suite a requirements-based test suite for the C Standard Library with full traceability from individual test results back to requirements derived from the ISO C language specification. SuperGuard can be used to support qualification of C Standard Library implementations for safety-critical applications both for unmodified third-party library implementations and self-developed or self-maintained implementations.
Within SuperGuard, the requirements and test specifications are documented for the C library tests, as already available in SuperTest. Uniquely, SuperGuard provides full traceability between the requirements derived from the ISO C language definition and the test suite. It also maintains the documentation needed to deliver information and transparency as required by international certification authorities.
SuperGuard delivers:
• Comprehensive documentation of C library test requirements, test specifications, and implementations provides developers with the information needed to comply with functional safety standards
• Full traceability and transparency between library test and the requirements derived from the ISO C language standard
The development of SuperGuard came after many Solid Sands customers advised the company of their need to qualify standard libraries. The library becomes an integral part of the applications and there was a lack of professional tools for library qualification in the market.
All C compilers are used with a standard library. Functions from the library are linked into the application and executed on the target. This makes it incumbent on developers of safety-critical applications to demonstrate that the library code is as rigorously tested as code they write themselves
Solid Sands’ current product SuperTest not only validates the compiler, it also contains a comprehensive suite of tests to validate the library. The need now was to provide developers with the necessary documentation to show how those library tests are based on requirements and test specifications, to the level required by functional safety standards.
The C language specification does not explicitly define a set of requirements that can be tested for each library function, yet such requirements are an essential component of functional safety standards approvals such as ISO 26262. They therefore need to be created from the language specification by the test developer, in this case Solid Sands. These requirements, and the traceability of the tests, are what differentiates SuperGuard.
SuperGuard C Library Safety Qualification Suite is available both as a stand-alone product and as an add-on for SuperTest users. A similar package for the C++ standard library is currently under development.