Questa pagina è stata tradotta automaticamente.
Completa un sondaggio di 1 minuto sulla qualità di questa traduzione.
Un workflow conforme a ISO 26262 per applicazioni di guida autonoma con MATLAB: linee guida e best practice
Di Lars Rosqvist, MathWorks
L'uso di Simulink® e Stateflow® per lo sviluppo di software ISO® 26262 è ben consolidato per le centraline elettroniche automobilistiche. Esiste una tendenza crescente, in particolare nelle applicazioni di guida automatizzata, verso l’implementazione di progetti software utilizzando le funzioni MATLAB® così come blocchi Simulink e grafici Stateflow . Questo articolo offre le best practice per utilizzare un workflow incentrato su MATLAB per verificare la conformità agli standard software ISO 26262 [1]. Queste best practice completano il workflow di riferimento ISO 26262 utilizzando la progettazione Model-Based illustrata in IEC Certification Kit.
Modello di modellazione consigliato
In questo articolo utilizziamo un modello di sviluppo software in cui un modello Simulink incorpora un blocco funzione MATLAB (Figura 1). Il modello Simulink di livello superiore contiene tutte le impostazioni di configurazione per la generazione del codice. Il blocco funzione MATLAB richiama funzioni MATLAB esterne.
Questo modello di modellazione sfrutta tutti gli strumenti di verifica e validazione disponibili per i modelli Simulink, consentendo al contempo l'implementazione delle funzionalità utilizzando il linguaggio MATLAB [2]. Sfrutta inoltre le ampie funzionalità disponibili in MATLAB. Ad esempio, lo sviluppo ADAS viene generalmente implementato utilizzando MATLAB perché funzionalità matematiche complesse possono essere espresse in modo conciso ed elegante.
Esistono modi alternativi per utilizzare MATLAB [3] in un ambiente di sviluppo prodotto critico per la sicurezza, che non è menzionato in questo articolo.
Workflow di riferimento MATLAB ISO 26262: Panoramica
Come accennato in precedenza, il workflow descritto in questo articolo si basa sul workflow di riferimento ISO 26262 nel IEC Certification Kit (Figura 2).
Il workflow basato su MATLAB include ulteriori suggerimenti per le seguenti attività di verifica e convalida:
- Creazione dei requisiti e verifica dell'architettura
- Analisi del modello statico
- Test MIL e test SIL o PIL back-to-back
- Analisi statica del codice
- Documentazione
Creazione dei requisiti e verifica dell'architettura
La norma ISO 26262 richiede la prova che tutti i requisiti siano stati implementati e testati. Nel workflow di riferimento ISO 26262, le attività di verifica dell'architettura e di creazione dei requisiti evidenziate nella Figura 3 forniscono questa prova.
Collegamento dei requisiti al codice MATLAB
Utilizzando i Requirements Toolbox™, puoi collegare i requisiti alle righe di codice nelle funzioni MATLAB nello stesso modo in cui colleghi i requisiti ai blocchi Simulink. La differenza è che il controllo esistente per i requisiti mancanti non controlla il codice MATLAB esterno. Il suggerimento è di implementare un controllo Model Advisor che cerchi contenitori MATLAB non collegati a un requisito. Un contenitore è in genere il file MATLAB esterno o una funzione MATLAB, a seconda della dimensione del file.
Analisi del modello statico
È necessario verificare la leggibilità, la comprensibilità e la testabilità di ogni componente del modello di implementazione (Figura 4). Simulink Check™ viene utilizzato per valutare la conformità del modello alle linee guida ad alta integrità di ISO 26262 e MathWorks.
Subset del linguaggio
La programmazione in MATLAB può comportare l'uso di funzioni da diversi toolbox diversi. Poiché MATLAB è un linguaggio potente con un elevato grado di astrazione, puoi sviluppare funzionalità complesse con poche righe di codice. In alcuni casi, una singola riga di codice MATLAB può risultare in molte righe di codice C, rendendo difficile la verifica del codice generato con una copertura completa. È importare sapere che la funzionalità che stai implementando è testabile. La norma ISO 26262 prevede l'uso di un subset di linguaggi (Tabella 1 nella norma ISO 26262) in base al tipo di funzioni che si sta utilizzando.
Ti consigliamo di effettuare le seguenti operazioni per soddisfare i requisiti del subset di linguaggi:
- Valuta le funzioni MATLAB utilizzate per garantire che nessuna di esse richieda uno sforzo di verifica elevato. Model Advisor può essere utilizzato per identificare l'utilizzo di funzioni non consigliate a causa della complessità del codice.
- Sostituisci le funzioni MATLAB non consigliate con implementazioni più semplici. Queste funzioni più semplici saranno più facili da tracciare e testare.
Se le funzioni non possono essere sostituite, devono essere testate separatamente.
- Verifica il funzionamento eseguendo unit test separati con copertura elevata. Una volta raggiunta la copertura, giustificare l'utilizzo di queste funzioni facendo riferimento ai test delle unità esterne.
Forte digitazione dei dati
ISO 26262 richiede che tutte le variabili siano fortemente tipizzate. Model Advisor controlla i modelli Simulink per blocchi fortemente tipizzati, inclusa l'interfaccia al blocco funzione MATLAB, ma non controlla le funzioni MATLAB esterne. Per superare questo ostacolo, scrivi un assegno per verificare che tutte le funzioni MATLAB siano fortemente tipizzate. È particolarmente importante controllare il tipo e la dimensione dei dati.
Test MIL e test SIL o PIL back-to-back
I test back-to-back (equivalenza ) consentono di dimostrare che il codice generato si comporta allo stesso modo del modello, come raccomandato dalla Tabella 7 della norma ISO 26262, Metodi per la verifica dell'unità software. Per il codice oggetto, utilizza i test PIL (processor-in-the-loop) e per il codice C generato, utilizza SIL (software-in-the-loop) (Figura 5). I casi di test dovrebbero essere gli stessi utilizzati nei test MIL (model-in-the-loop). Per la verifica dell'unità, utilizza SIL. Per i test di integrazione, si consiglia di eseguirli anche sull'hardware di destinazione per verificare l'intera toolchain di sviluppo.
Prevenzione di funzionalità indesiderate
Per dimostrare che durante la generazione del codice non è stata aggiunta alcuna funzionalità indesiderata, misura la copertura dei test sia durante i test del modello che durante quelli del codice. La copertura del test viene generalmente eseguita utilizzando test consecutivi con Simulink Coverage™. La copertura viene utilizzata, secondo la norma ISO 26262, per valutare la completezza della verifica e fornire la prova che gli obiettivi dei test unitari sono stati raggiunti.
Secondo la norma ISO 26262, il codice con copertura mancante deve essere rivisto e giustificato. Quando si sviluppa utilizzando i blocchi Simulink, le giustificazioni possono essere collegate al modello, il che significa che le giustificazioni vengono conservate tra le esecuzioni di verifica. Questa opzione non è disponibile per le funzioni MATLAB esterne. Per giustificare la mancanza di copertura per una funzione MATLAB, aggiungi un filtro di copertura al codice e quindi collegalo al test cablaggio o al file di test in Simulink Test™. Il nostro consiglio è di collegare il file del filtro di copertura al file di test (Figura 6).
Analisi statica del codice
Come indicato nello standard ISO 26262, le analisi statiche includono attività come la ricerca nel testo del codice sorgente o nel modello, per modelli che corrispondano a guasti noti o per la conformità con le linee guida di modellazione o codifica. Le analisi del codice statico vengono eseguite sul codice generato (Figura 7).
Conformità MISRA C
Per valutare la conformità MISRA® C per il codice generato da MATLAB, utilizza uno strumento di analisi del codice statico come Polyspace Bug Finder™ per rilevare codice non conforme a MISRA C ed esaminare i risultati manualmente. Se il codice non conforme proviene da una funzione MATLAB integrata, hai due opzioni:
- Sostituisci la funzione MATLAB integrata con una funzione riscritta
- Scrivi una giustificazione per l'avviso MISRA C
La nostra raccomandazione è di sostituire la funzione, se possibile. Per garantire che la funzione sostituita non venga utilizzata da altri sviluppatori, implementa un controllo Model Advisor per le funzioni non consigliate.
Documentazione
Nel safety case finale che fornisce la prova della conformità alla ISO 26262, è necessario documentare ogni fase del processo di verifica, dai requisiti alla verifica. La documentazione dovrebbe includere descrizioni progettuali delle funzionalità. La Figura 8 evidenzia alcune delle attività che devono essere incluse nella descrizione del progetto.
Descrizione della progettazione del sistema
Simulink Report Generator™ include un modello di report di progettazione del sistema predefinito. Questo modello è solitamente adeguato per documentare un componente sviluppato in Simulink, ma non per documentare le funzioni MATLAB esterne perché non sono incluse nella descrizione della progettazione del sistema predefinita. Consigliamo quindi di personalizzare il modello per includere il codice MATLAB esterno.
Considerazioni SOTIF
In sistemi complessi come ADAS, una funzione può comportarsi come previsto ma causare comunque comportamenti pericolosi. Sotto la guida dello standard ISO 21448 sulla sicurezza delle funzionalità previste (SOTIF), è possibile risolvere questo problema integrando ulteriori attività di verifica e convalida nella progettazione Model-Based. Si consiglia di aggiungere test sulle condizioni operative randomizzate per ampliare i test e includere casi d'uso sconosciuti. Questi test casuali dovrebbero verificare il comportamento del modello di implementazione e del codice oggetto integrato rispetto ai requisiti di sistema.
IEC Certification Kit include il supporto per SOTIF. Quando si tratta di SOTIF, non ci sono grandi differenze tra i workflow Simulink e MATLAB. IEC Certification Kit aggiornato include informazioni sull'uso di Automated Driving Toolbox™ per i test del sistema.
Riepilogo
Nello sviluppo di software conforme a ISO, le differenze tra lo sviluppo completamente basato su Simulink e un workflow più incentrato MATLAB non sono significative. La differenza principale è la necessità di evitare l'uso di funzioni non consigliate. Esistono controlli specifici per identificare tali funzioni MATLAB nei controlli ISO 26262 in Simulink Check, garantendo che l'implementazione MATLAB generi codice adatto per applicazioni ad alta integrità. Le altre sfide nell'utilizzo di un workflow incentrato su MATLAB per ISO 26262 possono essere gestite con semplici soluzioni alternative come l'utilizzo di filtri di giustificazione o il collegamento di requisiti a più livelli nel modello.
[1] Le raccomandazioni contenute in questo articolo si basano su MATLAB R2024a. Se utilizzi una versione diversa, contatta il tuo rappresentante MathWorks per conoscere le sue funzionalità per l'utilizzo di MATLAB e Simulink per ISO 26262.
[2] Gli sviluppatori a volte scelgono MATLAB invece di Simulink perché ritengono che Simulink non supporti differenziazioni e unioni. Se lavori in Simulink, puoi utilizzare gli strumenti integrati per gestire differenziazioni e unioni. Se il tuo team utilizza un sistema di controllo della versione distribuito come Git, puoi eseguire un'unione a tre vie, in caso di conflitto.
[3] In MATLAB R2023a è stato rilasciato MATLAB Test™. MATLAB Test fornisce strumenti per sviluppare, eseguire, misurare e gestire test dinamici del codice MATLAB . Ciò offre agli sviluppatori la possibilità di rimanere nell'ambiente MATLAB durante lo sviluppo di software ad alta integrità. MATLAB Test ti consente di soddisfare le specifiche nelle applicazioni regolamentate e fa parte del IEC Certification Kit.
Pubblicato nel 2024