Functional Safety Viewpoint
Purpose
The Functional Safety Viewpoint focuses on cross-checking all techniques and measures required by [IEC 61508-3:2010] against the architecture of the QP/C Framework component. The rigor of the required design process and control measures is a function of a Safety Integrity Level (SIL 3 in this case). This is evaluated through a detailed assessment of the architecture and the quality and safety management system against the requirements in [IEC 61508-3:2010] 7.4.3 and 7.4.4:
Architectural Views
This architectural viewpoint frames the following views:
Recommendation Levels
Functional safety standards make recommendations about techniques and measures to be applied at different safety integrity levels. The following table harmonizes the recommendation levels across standards: IEC 61508, ISO 26262, and IEC 62303:| Recommendation Level | IEC 61508 | ISO 26262 | IEC 62304 |
|---|---|---|---|
| Highly recommended | HR | "++" | Advised for Class B, Mandatory for Class C |
| Recommended | R | "+" | Advised for Classes B/C |
| Neutral / optional | — | "o" | Optional for Classes B/C |
| Noth recommended | NR | "-" | Discouraged for Class B, Not allowed for Class C |
In functional safety standards, such as IEC 61508, the designations HR (highly recommended) and NR (not recommended) have a specific technical meaning. For a given SIL, techniques marked as HR are expected to be applied unless a documented and justified rationale demonstrates that they are unnecessary or that an alternative measure provides equivalent risk reduction. Conversely, techniques marked as NR are generally not suitable for use at that SIL; if they are applied, the development team must provide a documented justification demonstrating that their use does not compromise the required safety integrity.
Software Systematic Capability is defined as the measure of the confidence that the systematic safety integrity of the software meets the requirements of the specified SIL 3, in respect of the specified software safety function, when the software is applied by the instructions specified in the compliant item Safety Manual [DOC_SSM_QP] for the software.
The following Table SAS-FUSA lists the systematic capability techniques and measures for software architecture required by [IEC 61508-3:2010] Table A.2 to achieve SIL 3. The last columns defines how these techniques are to be addressed in the architecture of QP/C Framework component component.| Technique/Measure(*) | IEC 61508 Ref. | SIL 3 | Specs for QP framework | |
|---|---|---|---|---|
| 1 | Fault detection | C.3.1 | HR | SAS_QP_SSC_01 |
| 2 | Error detecting codes | C.3.2 | R | SAS_QP_SSC_02 |
| 3a | Failure assertion programming (*) | C.3.3 | R | SAS_QP_SSC_03A |
| 3b | Diverse monitor techniques (*) (with independence between the monitor and the monitored function in the same computer) | C.3.4 | R | see choice 3a(*) |
| 3c | Diverse monitor techniques (*) (with separation between the monitor computer and the monitored computer) | C.3.5 | R | see choice 3a(*) |
| 3d | Diverse redundancy, implementing the same software safety requirement specification (*) | C.3.5 | — | see choice 3a(*) |
| 3e | Functionally diverse redundancy, implementing different software safety requirement specifications (*) | C.3.5 | R | see choice 3a(*) |
| 3f | Backward recovery | C.3.6 | — | see choice 3a(*) |
| 3g | Stateless software design (or limited state design) | C.2.12 | R | see choice 3a(*) |
| 4a | Re-try fault recovery mechanism | C.3.7 | — | see choice 4b(*) |
| 4b | Graceful degradation | C.3.8 | HR | SAS_QP_SSC_04B |
| 5 | Artificial intelligence - fault correction | C.3.9 | NR | SAS_QP_SSC_05 |
| 6 | Dynamic reconfiguration | C.3.10 | NR | SAS_QP_SSC_06 |
| 7 | Modular approach | Table B.9 | HR | SAS_QP_SSC_07 |
| 8 | Use of trusted/verified software elements (if available) | C.2.10 | HR | SAS_QP_SSC_08 |
| 9 | Forward traceability between the software safety requirements specification and software architecture | C.2.11 | HR | SAS_QP_SSC_09 |
| 10 | Backward traceability between the software safety requirements specification and software architecture | C.2.11 | HR | SAS_QP_SSC_10 |
| 11a | Structured diagrammatic methods (*) | C.2.1 | HR | SAS_QP_SSC_11A |
| 11b | Semi-formal methods (*) | Table B.7 | HR | SAS_QP_SSC_11B |
| 11c | Formal design and refinement methods (*) | B.2.2, C.2.4 | R | see choice 11b(*) |
| 11d | Automatic software generation (*) | C.4.6 | R | SAS_QP_SSC_11D |
| 12 | Computer-aided specification and design tools | B.2.4 | HR | SAS_QP_SSC_12 |
| 13a | Cyclic behavior, with guaranteed maximum cycle time (*) | C.3.11 | HR | see choice 13c(*) |
| 13b | Time-triggered architecture (*) | C.3.11 | HR | see choice 13c(*) |
| 13c | Event-driven, with guaranteed maximum response time (*) | C.3.11 | HR | SAS_QP_SSC_13C |
| 14 | Static resource allocation | C.2.6.3 | HR | SAS_QP_SSC_14 |
| 15 | Static synchronization of access to shared resources | C.2.6.3 | R | SAS_QP_SSC_15 |
Fault detection: QP/C Framework component shall apply assertion-based fault detection policy.
Description
Fault detection is the activity of checking a system for erroneous states (caused by a fault within the (sub)system to be checked). The primary goal of fault detection is to inhibit the effect of wrong results. Fault detection is based on the principles of redundancy. In software, special methods include: assertion programming, n-version programming, and the diverse monitor technique.
The method elected for the QP/C Framework component is the assertion programming and failure assertion programming methods. The assertion facilities shall be defined in the QP Functional Safety (FuSa) Subsystem with the following safety specifications:
Example
The following pseudocode shows the use of the general-purpose assertion as well as specialized assertion facilities, illustrating the compact, idiomatic, and easily identifiable format:
Backward Traceability
Forward Traceability (truncated to 1 level(s))
Error detecting codes: QP/C Framework component shall apply error detection based on Duplicate Inverse Storage and Duplicate Storage.
Description
QP/C Framework component shall implement the following error-detecting code techniques in the indicated contexts:
Duplicate Inverse Storage (DIS)
Duplicate Storage (no bitwise inversion)
Backward Traceability
Forward Traceability (truncated to 1 level(s))
Mechanisms for graceful degradation in QP/C Framework component.
Description
Graceful degradation aims to maintain more critical system functions available, despite failures, by dropping the less critical functions. QP/C Framework component supports graceful degradation by providing mechanisms to protect the more critical functions from interference by the less critical ones. The main such mechanisms are:
Example
The following pseudocode illustrates unreliable event allocation and delivery to a less-important functionality:
Backward Traceability
Forward Traceability (truncated to 1 level(s))
NO use of artificial intelligence for fault correction in QP/C Framework component.
Backward Traceability
Forward Traceability (truncated to 1 level(s))
NO dynamic reconfiguration for fault correction in QP/C Framework component.
Backward Traceability
Forward Traceability (truncated to 1 level(s))
Modular approach in QP/C Framework component.
Description
QP/C Framework component architecture shall apply the following rules for modularity (traceability: SRS_QP_NF_01):
Backward Traceability
Forward Traceability (truncated to 1 level(s))
Only trusted/verified software elements in QP/C Framework component.
Description
QP/C Framework component implementation shall NOT use any 3rd-party software elements. The reliance on standard libraries shall be limited to header-only facilities (e.g., <stdint.h>), but not any standard library code. All dependencies on external components (such as real-time kernel) shall be abstracted and restricted to the well-defined Operating System Abstraction Layer (OSAL).
Backward Traceability
Forward Traceability (truncated to 1 level(s))
Consistent forward traceability between Safety Requirements and Software Architecture in QP/C Framework component.
Forward Traceability (truncated to 1 level(s))
Consistent backward traceability between Safety Requirements and Software Architecture in QP/C Framework component.
Backward Traceability
Forward Traceability (truncated to 1 level(s))
Structured diagrammatic methods in QP/C Framework component.
Description
QP/C Framework component documentation shall use the well-defined UML diagrams whenever applicable. Non-UML diagrams shall have legends explaining the symbols and semantics.
Forward Traceability (truncated to 1 level(s))
Semi-formal methods in QP/C Framework component.
Description
QP/C Framework component shall use the following semi-formal methods (see [IEC 61508-7:2010] Table C.17)
Backward Traceability
Forward Traceability (truncated to 1 level(s))
Automatic code generation in QP/C Framework component.
Description
QP/C Framework component design and implementation shall support automatic code generation.
Backward Traceability
Forward Traceability (truncated to 1 level(s))
Computer-aided specification and design tools use in QP/C Framework component.
Description
QP/C Framework component source code shall be modeled with the QM model-based design tool [QM-Tool:2024].
Backward Traceability
Forward Traceability (truncated to 1 level(s))
Event-driven architecture with guaranteed maximum response time in QP/C Framework component.
Description
QP/C Framework component implements precisely the highly recommended event-driven architecture. Moreover, the preemptive, non-blocking kernel is fully compliant with the requirements of the Rate-Monotonic Scheduling/Analysis (RMS/RMA) method, by which hard-real-time execution can be guaranteed.
Backward Traceability
Forward Traceability (truncated to 1 level(s))
Static resource allocation in QP/C Framework component.
Description
QP/C Framework component shall apply exclusively static resource allocation and shall strictly avoid dynamic resource allocation.
Forward Traceability (truncated to 1 level(s))
Static synchronization of access to shared resources in QP/C Framework component.
Description
QP/C Framework component shall apply only the non-blocking critical section mutual exclusion mechanism to protect its internal shared resources.
Backward Traceability
Forward Traceability (truncated to 1 level(s))
This architectural view frames the following concerns:
The programming language safe subset (coding standard) to achieve the required SIL 3
The following Table SDS-A3 lists the techniques and measures for programming language and support tools required by [IEC 61508-3:2010] Table A.3 to achieve SIL 3. The last column of the table defines how these techniques are to be addressed in the architecture of QP/C Framework component.| Technique/Measure(*) | IEC 61508 Ref. | SIL 3 | Specs for QP Framework | |
|---|---|---|---|---|
| 1 | Suitable programming language | C.4.5 | HR | SAS_QP_PL_01 |
| 2 | Strongly typed programming language | C.4.1 | HR | SAS_QP_PL_02 |
| 3 | Language subset | C.4.2 | HR | SAS_QP_PL_03 |
| 4a | Certified tools and certified translators (*) | C.4.3 | HR | see choice 4b(*) |
| 4b | Tools and translators: increased confidence from use (*) | C.4.4 | HR | SAS_QP_PL_04B |
Suitable programming language for QP/C Framework component.
Description
The QP/C Framework component shall be implemented in the ISO C11 programming language, which has the following properties recommended by [IEC 61508-3] C.4.5:
However, at the same time, the full ISO C11 programming language also exhibits the following undesirable properties:
does not automatically check array bounds
Because of the undesired properties listed above, according to IEC 61508-3 Table C.1 reproduced below, the full C programming language is NR (not recommend) for SIL 3. However, C with subset, coding standard, and use of static analysis tools is HR (highly recommended). Therefore this architectural specification for the suitable programming language necessarily includes architectural specification SAS_QP_PL_03.| Programming language | SIL 3 | |
|---|---|---|
| ... | ... | ... |
| 9 | C | NR |
| 10 | C with subset and coding standard, and use of static analysis tools | HR |
| ... | ... | ... |
Backward Traceability
Forward Traceability (truncated to 2 level(s))
Strongly typed programming language for QP/C Framework component.
Description
QP/C Framework component shall be implemented in the ISO C11 programming language version, which supports many features to enforce type safety, but is not a strongly typed language as defined in IEC 61508 Annex C.4.5. To mitigate this, QP/C Framework component shall adopt a restricted subset of and enforce coding guidelines that ensure type safety through explicit conversions, static analysis, and compiler diagnostics.
Backward Traceability
Forward Traceability (truncated to 2 level(s))
Safe language subset for QP/C Framework component.
Description
Backward Traceability
Forward Traceability (truncated to 2 level(s))
Tools and translators: increased confidence from use for QP/C Framework component.
Description
Forward Traceability (truncated to 2 level(s))
QP/C functional safety management is architecturally separated from the nominal functional behavior of the QP/C Framework component. This separation ensures that safety mechanisms remain easily identifiable, reviewable, and traceable, and that they can be assessed independently of the application-specific logic built on top of the framework.
QP/C Functional Safety Subsystem.
Description
The QP/C Functional Safety Subsystem (QP/C FuSa) defines the general internal safety mechanisms applied consistently throughout the QP/C Framework component. The QP/C Functional Safety Subsystem provides the following mechanisms:
Forward Traceability (truncated to 2 level(s))