EMB98

EMBEDDED 98 • NOVEMBRE • 2025 28 SOFTWARE | SICUREZZA Per svolgere efficacemente questa attività, è necessario un certo livello di competenza nel linguaggio C, nell’ar- chitettura di destinazione e negli aspetti di sicurezza funzionale Functional Safety (FuSa) del software uten- te. L’efficienza e l’efficacia di questa attività dipendono in larga misura dalla qualità della segnalazione del bug messa a disposizione dal fornitore del compilatore. Spesso si utilizza uno strumento di analisi statica per identificare i costrutti del codice sorgente che corri- spondono agli schemi descritti negli errori. Se gli er- rori descrivono un particolare costrutto del codice sorgente, è possibile utilizzare strumenti simili a grep o equivalence checker più avanzati per individuare le occorrenze dei costrutti problematici nella codebase. Tuttavia, i risultati di questa attività sono spesso de- ludenti, perché la descrizione del problema mostra in genere un frammento di codice specifico che lo cau- sa. È necessaria una descrizione generica della causa principale del problema e del modo in cui questa causa principale si propaga a livello di linguaggio sorgente C. Tali descrizioni dettagliate dei problemi sono raramen- te fornite nelle segnalazioni di bug e spesso sono diffi- cili da sviluppare per la classe di bug trattata in questo articolo. Se il fornitore del compilatore mette a disposizione una diagnostica o una mitigazione specifica per un problema, è relativamente semplice applicare queste soluzioni durante la fase di sviluppo del software. Tut- tavia, una volta che il software è stato rilasciato, non è generalmente possibile utilizzare la mitigazione per determinare se il software è affetto dal problema. Solo quando gli effetti di una mitigazione arrivano fino al dettaglio è possibile eseguire con successo un successi- vo controllo binario dell’assieme o del file binario. La strumentazione del codice, che prevede l’inserimen- to di registrazioni o asserzioni intorno alle aree sospet- tate di essere interessate dall’errore, presenta diverse sfide. Spesso la descrizione del problema non è suffi- cientemente dettagliata per identificare tutte le aree che richiedono la strumentazione. Inoltre, questo me- todo è invasivo e può influire negativamente sul com- portamento di temporizzazione del software, portando a risultati di bassa qualità e a costi elevati. La verifica formale della corrispondenza tra la seman- tica del codice sorgente e le istruzioni del file binario è oggi possibile, ma allo stato attuale della tecnologia può essere applicata con successo solo a piccole codebase. Per codebase di grandi dimensioni, ci si deve limitare a verificare solo le sezioni di codice critiche per la sicu- rezza. I fornitori di compilatori che si rivolgono al settore del- la sicurezza funzionale possono offrire compilatori per il controllo dei bug. Questi strumenti funzionano come i compilatori standard, ma generano un messaggio diagnostico che individua i punti del codice sorgente dell’utente che attivano il bug del compilatore. In ge- nere, questi compilatori per il controllo dei bug sono disponibili solo su richiesta del cliente e per i contratti di assistenza che includono questo servizio. Tuttavia, alcuni fornitori come Tasking offrono compilatori per il controllo dei bug sotto forma di prodotti supplementari ai loro compilatori standard. Questi strumenti specifici del fornitore di compilatori offrono in genere i risultati di qualità più elevata. Estratto del portale Tasking Issues Portal

RkJQdWJsaXNoZXIy Mzg4NjYz