MATLAB und Simulink für Verifizierung, Validierung und Test

Verifizieren und Validieren eingebetteter Systeme mit Model-Based Design

Ingenieursteams nutzen Model-Based Design mit MATLAB® und Simulink®, um komplexe eingebettete Systeme zu entwickeln und C Code, C++ Code sowie HDL-Code auf Produktionsniveau zu generieren. MathWorks Tools verwenden Simulationstests und auf formalen Methoden basierende statische Analysen, um Model-Based Design durch genaueste Prüfung und Automatisierung zu ergänzen, damit Fehler frühzeitiger erkannt werden und höhere Präzision erzielt werden kann.

Mit MATLAB und Simulink ist Folgendes möglich:

  • Nachverfolgen von Anforderungen zu Architektur, Entwurf, Tests und Code
  • Überprüfung der Einhaltung von Industrie- und benutzerspezifischen Modellierungsstandards während der Entwicklungszeit
  • Nachweis, dass Ihr Entwurf die Anforderungen erfüllt und keine kritischen Laufzeitfehler aufweist
  • Erstellen von Testfällen unter Verwendung von Testsequenzen und Stateflow-Zustandsdiagrammen
  • Erfassung der Modell- und Codeabdeckung zur Überprüfung der Vollständigkeit der Tests
  • Automatische Generierung von Testfällen zur Analyse fehlender Testabdeckung
  • Erstellen von Berichten und Artefakten sowie Zertifizieren von Standards (wie DO-178 und ISO 26262).

Verifizierung von Anforderungen

Informelle Anforderungen in Textform, die in Dokumenten, Tabellenkalkulationen oder Anforderungsmanagement-Tools wie IBM Rational DOORS gespeichert sein können, lösen den Entwicklungsprozess aus. Mit der Requirements Toolbox lassen sich Anforderungen zusammen mit Ihrer Architektur, Ihren Entwürfen, dem generierten Code und den Testartefakten importieren, anzeigen, erstellen und verwalten. Auf diese Weise können Sie einen Digital Thread von den Anforderungen bis zum Entwurf im System Composer, Simulink, Stateflow erstellen oder Tests in Simulink Test durchführen. Anhand dieser Rückverfolgbarkeit können Sie Implementierungs- oder Testlücken ermitteln und die Auswirkung einer Änderung auf Entwurf oder Test umgehend überblicken. 

Mithilfe des Requirements Table Block der Requirements Toolbox lassen sich Anforderungen formalisieren und auf Konsistenz, Vollständigkeit und Korrektheit analysieren, um sie im Vorfeld zu validieren. Anhand zeitlicher Bewertungen in Simulink Test können Sie Textanforderungen verifizieren, indem Sie Bewertungen mit präziser Semantik in einem natürlichen Sprachformat angeben, das auswert- und austestbar ist.


Systematische Fehlerinjektion und FMEA in Simulink

Mithilfe der Simulation können Sie die Auswirkungen von Fehlern und anderem abnormalen Verhalten analysieren, um Sicherheitsanforderungen zu entwickeln und die Robustheit des Systems zu überprüfen. Simulink Fault Analyzer ermöglicht die systematische Fehlereinfluss- und Sicherheitsanalyse mithilfe von Simulation. Mit diesem Produkt können Sie Simulationen zur Fehlerinjektion durchführen, ohne Ihren Entwurf zu modifizieren. Sie können in Simulink, Simscape und System Composer modellierte Fehler verwalten, mit dem Simulation Data Inspector können Sie die Auswirkungen von Fehlern analysieren. Mithilfe des Multiple-Simulations-Fensterbereichs können Sie Analysen der Fehlerempfindlichkeit durchführen. Ebenso ist es möglich, Sicherheitsanalysen, wie z. B. die Fehlermöglichkeits- und Einflussanalyse (Failure Mode and Effects Analysis, FMEA), während der Simulation auszuführen. Zudem können Sie mit dem Simulink Fault Analyzer formale Verbindungen zwischen Fehlern, Gefahren, Fehlererkennungs- und -begrenzungslogik und anderen Artefakten erstellen (mit Requirements Toolbox).


Einhaltung von Zertifizierungsstandards

Automatisieren Sie die Verifizierung von Modellen und Code bzgl. Standards wie DO-178, ISO 26262, IEC 61508, IEC 62304 und MathWorks Advisory Board (MAB) Stil-Richtlinien. Simulink Check bietet branchenweit anerkannte Überprüfungen und Metriken, mit denen Verstöße gegen Standards und Richtlinien während der Entwicklung identifiziert werden. Sie können individuelle Überprüfungen erstellen, um eigene Standards oder Richtlinien einzuhalten. Das IEC Certification Kit (für ISO 26262 und IEC 61508) und das DO-Qualifizierungskit (für DO-178 und DO-254) beinhalten Tool-Qualifizierungsartefakte, Zertifizierungen und Test-Suiten, mit denen Sie Codegenerierungs- und -verifizierungsprodukte qualifizieren und die Zertifizierung Ihrer eingebetteten Systeme optimieren können.


Abwesenheit von Fehlern nachweisen und formales Verifizieren von Anforderungen

Bei der formalen Verifizierung werden ohne Simulierung des Entwurfs versteckte Entwurfsfehler gefunden, die einen Ganzzahlüberlauf, unerreichbare Logik, Array-Zugriffsverletzungen und Division durch Null verursachen. Simulink Design Verifier kann formal verifizieren, dass Ihr Entwurf frei von Fehlern oder Sicherheitsschwachstellen ist. Außerdem kann Simulink Design Verifier beweisen, dass Ihr Entwurf kritische Anforderungen erfüllt. Findet das Tool eine Ausnahme, erzeugt es ein Gegenbeispiel zum Debuggen.


Automatische Testerzeugung

Testlücken, unbeabsichtigte Funktionalität und Anforderungsfehler müssen unbedingt erkannt werden. Simulink Coverage berechnet, wie viel des Modells bzw. des erzeugten Codes beim Testen ausgeführt wird. Dabei werden Branchenstandardmetriken angewendet wie Bedingung, Entscheidung, Modified Condition/Decision Coverage (MCDC) sowie benutzerdefinierte Abdeckungsziele. Simulink Design Verifier kann bei unvollständiger Abdeckung (Incomplete Coverage) automatisch Testfälle erzeugen, um strukturelle und funktionale Abdeckungsziele zu erfüllen.


Statische Codeanalyse

Zur Verifizierung von handgeschriebenem und generiertem Code verwenden Polyspace-Produkte formale Methoden, um Bugs zu finden und die Abwesenheit kritischer Laufzeitfehler nachzuweisen – ohne Testfälle oder Codeausführung. Polyspace Bug Finder überprüft und dokumentiert die Einhaltung von Standards wie MISRA®, ISO 26262, IEC 61508, DO-178 und FDA-Vorschriften. Sie können damit Software-Sicherheitsschwachstellen finden und Standards wie CWE, CERT-C, ISO/IEC 17961 und andere überprüfen. Polyspace Code Prover führt eine statische Codeanalyse aus, um die Abwesenheit von Überlauf, Division durch Null, Array-Zugriff außerhalb der Grenzen und weitere Laufzeitfehler in C/C++ Quellcode zu beweisen.