EMB_83

EMBEDDED 83 • FEBBRAIO • 2022 58 re su sistemi con meno di 4K di memoria: SuperGuard risulta quindi idonea per sistemi embedded molto piccoli. Per implementare i test basati su requisiti, SuperGuard scompone le specifiche della Libreria Standard del C in requisiti di implementazione testabili, insieme a specifi- che di collaudo che descrivono come viene testato ogni requisito. Ricollegando i risultati di esecuzione dei singoli test alla specifica di test, al requisito e alla funzione di li- breria standard corrispondenti, SuperGuard offre piena tracciabilità dei test basati su requisiti. Per fornire evi- denza di completezza, SuperGuard offre una copertura del codice strutturale quasi del 100% per oltre l’80% delle funzioni, con un livello elevato di Modified Condition/De- cision Coverage (MC/DC). Il ruolo di SuperGuard nel modello a V Può inoltre supportare la qualificazione delle imple- mentazioni della Libreria Standard del C per applica- zioni critiche di sicurezza, sia per librerie di terze parti non modificate, sia per implementazioni sviluppate o mantenute autonomamente. Obiettivo della qualificazione La qualificazione della libreria software è importante perché il codice della libreria viene integrato nell’appli- cazione e installato sul dispositivo target. Un componente difettoso della libreria metterebbe quindi a rischio la sicu- rezza funzionale dell’intera applicazione. Gli obiettivi di utilizzo della libreria software all’interno degli standard di sicurezza funzionale hanno solitamente uno scopo con- diviso: verificare che l’implementazione della libreria sia conforme alle specifiche. Ad esempio, ISO 26262 prevede due percorsi di qualificazione della libreria, descritti nella ISO 26262 Parte 8 e nella ISO 26262 Parte 6. SuperGuard funziona in entrambi i casi. Come vengono sviluppati i test con SuperGuard Quando si effettuano test basati su requisiti così come rac- comandato nella Parte 8 e nella Parte 6 della ISO 26262, il problema principale per le specifiche della Libreria Stan- dard del C è che, pur fornendo una descrizione dettaglia- ta del comportamento di ogni funzione, nessuna delle due parti definisce requisiti chiari. I requisiti devono quindi essere ricavati dalle descrizioni. SuperGuard incorpora la suite collaudata per i test sulla Libreria Standard del C messa a disposizione dalla suite di collaudo e verifica del compilatore Super Test di Solid Sands. I test di SuperGuard, idonei per un’ampia gamma di am- bienti di sviluppo, verificano che il comportamento in fase di implementazione sia conforme alle specifiche della li- breria. Ciascun test esegue il costrutto o la funzione sotto esame e confronta i risultati dell’esecuzione con i risultati attesi (“modello”) definiti nella specifica della libreria. Il test stesso comunica l’esito positivo o negativo al driver del test. Per verificare il comportamento in fase di implementazio- ne, i test vengono compilati ed eseguiti in un ambiente di esecuzione, in modo tale che l’intera toolchain, compreso il processore target, sia coinvolta in ciascun test. Super- Guard risulta così idoneo per verificare la libreria coinvol- gendo anche l’hardware (hardware-in-the-loop). I test per la parte “freestanding” della libreria (tipicamen- te utilizzata nei sistemi a metallo nudo) richiedono risorse minime. La maggior parte dei test SuperGuard può gira- Un esempio Ogni test di libreria di SuperGuard viene sviluppato se- condo una metodologia omogenea. Questa è la specifica nella Sezione 7.21.2.4 della definizione di linguaggio C99: 7.21.2.4 La funzione strncpy Sinopsi 1 #include <string.h> char * strncpy(char * restrict s1, const char * restrict s2, size_t n). Descrizione 2 La funzione strncpy copia non più di n caratteri (i ca- ratteri che seguono un carattere nullo non vengono co- piati) dall’array puntato da s2 all’array puntato da s1. Se la copiatura avviene fra oggetti che si sovrappongono, il comportamento è indefinito. 3 Se l’array puntato da s2 è una stringa più corta di n caratteri, i caratteri nulli vengono aggiunti alla copia SOFTWARE | SOFTWARE LIBRARIES

RkJQdWJsaXNoZXIy Mzg4NjYz