MATLAB e Simulink per attività di verifica, convalida e test

Verifica e convalida di sistemi embedded con la progettazione Model-Based

I team di ingegneri utilizzano la progettazione Model-Based con MATLAB e Simulink per progettare sistemi embedded complessi e generare codice C, C++ e HDL di alta qualità. Gli strumenti MathWorks si servono di simulazioni e di analisi statiche basate su metodi formali per integrare la progettazione Model-Based con un certo grado di precisione e automazione, in modo da individuare gli errori in anticipo e raggiungere livelli qualitativi più alti.

Con MATLAB e Simulink, è possibile:

  • Tracciare i requisiti in base all’architettura, alla progettazione, ai test e al codice
  • Verificare la conformità agli standard di modellazione industriali e personalizzati in fase di progettazione
  • Dimostrare che il progetta soddisfa i requisiti e non contiene errori di runtime critici
  • Creare casi di test utilizzando sequenze di test e diagrammi di stato di Stateflow
  • Raccogliere la copertura del modello e del codice per verificare la completezza del test
  • Generare casi di test automaticamente per analizzare la copertura di test mancante
  • Produrre report e artefatti, oltre a ottenere la certificazione rispetto agli standard (come DO-178 e ISO 26262)

Verifica dei requisiti

I requisiti testuali informali, da poter salvare all’interno di documenti, fogli di calcolo o in strumenti di gestione dei requisiti, come IBM Rational DOORS, avviano il processo di sviluppo. Requirements Toolbox consente di importare, visualizzare, creare e gestire i requisiti insieme alla tua architettura, ai tuoi progetti, al codice generato e agli artefatti di test. È possibile creare un thread digitale dai requisiti al progetto in System Composer, Simulink, Stateflow o dei test in Simulink Test. Grazie a questo tipo di tracciabilità, è possibile individuare lacune a livello di implementazione e test e capire rapidamente l’impatto di un’eventuale modifica sul progetto o sul test. 

È possibile formalizzare i requisiti e analizzarli in termini di coerenza, completezza e correttezza per convalidarli fin dalle prime fasi servendosi del blocco Requirements Table in Requirements Toolbox. Le valutazioni temporanee di Simulink Test consentono di verificare i requisiti testuali specificando le valutazioni con una semantica precisa in un linguaggio di formato naturale, valutabile e da poter sottoporre a debug.


Analisi sistematica dell’iniezione di guasti e FMEA in Simulink

È possibile utilizzare la simulazione per analizzare gli effetti dei guasti e altri comportamenti anomali per sviluppare i requisiti di sicurezza e verificare la robustezza del sistema. Simulink Fault Analyzer consente un'analisi sistematica degli effetti dei guasti e della sicurezza mediante la simulazione. Il prodotto esegue simulazioni di iniezione di guasti senza modificare il progetto. È possibile gestire i guasti modellati in Simulink, Simscape e System Composer. Simulation Data Inspector consente di analizzare gli effetti dei guasti. È possibile condurre analisi di sensibilità ai guasti utilizzando il pannello Simulazioni multiple. È possibile eseguire analisi di sicurezza, come l'analisi FMEA (Failure Mode and Effects Analysis), sfruttando la simulazione. Simulink Fault Analyzer consente di creare connessioni formali tra guasti, pericoli, logica di rilevamento guasti e mitigazione e altri artefatti (con Requirements Toolbox).


Conformità agli standard di certificazione

Automatizza il processo di verifica dei modelli e del codice rispetto a standard quali DO-178, ISO 26262, IEC 61508, IEC 62304 e le linee guida di stile del MathWorks Advisory Board (MAB). Simulink Check fornisce controlli e metriche, riconosciuti in ambito industriale, che individuano eventuali violazioni a standard e linee guida durante lo sviluppo. È possibile creare controlli personalizzati che rispondano ai propri standard o linee guida. L’IEC Certification Kit (for ISO 26262 and IEC 61508) e il DO Qualification Kit (for DO-178 and DO-254) contengono certificati, suite di test e artefatti per la qualifica degli strumenti utili a qualificare i prodotti per la verifica e la generazione di codice e a semplificare il processo di certificazione dei sistemi embedded.


Dimostrazione dell’assenza di errori e verifica formale dei requisiti

La verifica formale individua gli errori di progettazione nascosti che determinano casi di integer overflow, logica morta, violazioni di accesso agli array e divisioni per zero senza simulare il progetto. Simulink Design Verifier riesce a verificare in modo formale che il progetto non contenga errori né vulnerabilità a livello di sicurezza. Con Simulink Design Verifier sarà anche possibile accertarsi che il progetto soddisfi i requisiti essenziali. Se lo strumento trova un’eccezione, genera un controesempio per il debug.


Generazione automatica di test

È importante individuare le lacune a livello di test, funzionalità indesiderate o errori nei requisiti. Simulink Coverage calcola quanto del modello o del codice generato viene effettivamente sottoposto a prova durante il test. Applica le metriche standard del settore come gli obiettivi di copertura di condizioni, decisioni, MCDC (modified condition/decision coverage) e quelli personalizzati. Simulink Design Verifier è in grado di generare automaticamente dei casi di test per affrontare situazioni di copertura incompleta al fine di soddisfare obiettivi di copertura strutturale e funzionale.


Analisi statica del codice

Per verificare il codice generato e scritto a mano, i prodotti Polyspace si servono di metodi formali per individuare i bug e dimostrare l’assenza di errori critici di runtime, senza casi di test o l’esecuzione di codice. Polyspace Bug Finder verifica e documenta la conformità rispetto a standard quali MISRA, ISO 26262, IEC 61508, DO-178 e le normative FDA. È possibile individuare eventuali vulnerabilità di sicurezza del software e fare verifiche in base a standard quali CWE, CERT-C, ISO/IEC 17961 e così via. Polyspace Code Prover esegue l’analisi statica per dimostrare l’assenza di overflow, divisioni per zero, accesso agli array fuori limite e altri errori di runtime nel codice sorgente C e C++.