====== VEZS 2018-08-06 ====== **Fach:** Verlässliche Echtzeitsysteme **ECTS:** 5 **Prüfer:** Peter Ulbrich **Beisitzer:** Florian Schmaus Angenehme Atmosphäre. Stift und Papier liegen bereit. Ablauf sehr ähnlich zu dem in den älteren Protokollen beschriebenem. ---- Was ist ein Fehler? * Die Nichterfüllung von festgelegten Forderungen (Spezifikation vs. Implementierung) Wie kann man diese kategorisieren? * Viele verschiedene Möglichkeiten z.B. nach Art: * permanente Fehler: Sind permanent; können erst durch eine korrigierende Maßnahme behoben werden * sporadische Fehler: unregelmäßiges Auftreten, häufig gebündelt, oft Vorboten permanenter Fehler * transiente Fehler: unregelmäßiges Auftreten, durch äußere Einwirkung ausgelöst, münden aber meistens nicht in einen permanenten Fehler Fehlerkette? * Defekt - innerer Fehler - Sichtbarkeit des Fehlers * Implikationen * gutartiger Defekt * Software vs. Hardwarefehler Robuster Systementwurf? * Gefahrenanalyse, Risikobeurteilung, Fehlerbaumanalyse Fehlerbaumanalyse? * Komponente/Pfade finden die zu Systemversagen führen * Wurzel = Fehlverhalten, ausgehend davon Ursachen identifizieren * Schnitt: atomare Ereignisse, die Schadensereignis verursachen * Minimalschnitt: kritische atomare Ereignisse, die zu Systemversagen führen * Minimalpfade: Gegenteil Schnitt --> atomare Ereignisse, die das Schadensereignis verhindern Redundanz? * Strukturelle Redundanz: Komponenten gleichartig auslegen * Funktionelle Redundanz: Komponenten verschiedenartig auslegen (unterschiedliche Herleitung) * Informationsredundanz: Einbringen zusätzlicher Informationen * zeitliche Redundanz: Schlupfzeit Vor-/Nachteile der verschiedenen Arten von Redundanz? * Strukturell: + Verlässlich, - teuer, - Gleichtaktfehler * Funktionell: + Gleichtaktfehler durch Diversität vermeiden, - sehr aufwändig, - Anwendungsspezifisch durch Akzeptanztest * Informations-: + Fehlererkennung, - Berechnungen teuer, - noch keine Fehlertoleranz Akzeptanztest vs. Relativtest: * Ist-Soll-Test vs. Ist-Ist-Test * Akzeptanztest kann auch Vektor von Eingabewerten entgegennehmen TMR zeichnen + erklären: * Replikdeterminismus (mit Voraussetzungen), Fehlerisolation (zeitl. + räuml. Isolation, geringe Kopplung) * Kritische Bruchstellen vs. Replikationsbereich * Einigung ueber Eingangswerte: Stellvertreter, Mehrmaliges Auslesen/Replikation, Akzeptanzmaskierer Akzeptanztest vs. Relativtest: * Ist-Soll-Test vs. Ist-Ist-Test * Akzeptanztest kann auch Vektor von Eingabewerten entgegennehmen Wie TMR mehr härten? * Codierung von Replikator, Ausgangsvoter, Sensoren und Aktoren * Sensoren, Aktoren auch mehrfach auslegen (Bsp. Fluss) Mit TMR Härtung gegen transiente Fehler, wie andere Fehler Vermeiden? * Testen * formale Verifikation Testen Vor-/Nachteile * + günstig, schnell * - schafft nur Vertrauen nicht Sicherheit, kombinatorische Explosion Effektivität von Tests messen? * Untere Schranke Anzahl Testfälle MCC * Testüberdeckung (Anweisungs-, Zweig-, Pfad-, Bedingungsüberdeckung - inkl. kurzer Erklärung Vor-/Nachteile) Statische Analyse? * Beweis der Korrektheit * konkrete Semantik * abstrakte Semantik * Code wird nicht ausgeführt nur interpretiert Eigenschaften der abstrakten Semantik? * Vollständig, Korrekt * Präzise * Geringe Komplexität * alles inkl. Skizze Beispiel abstrakter Semantik? * Intervallabstraktion (mit Skizze) Was macht Astree? * Intervallabstraktion: liefert keine Werte, nur Wertebereich für Variablen * Korrektheit im Sinne des C-Standards * Funktionale Verifikation möglich, aber unvollständig Wie funktionale Eigenschaften nachweisen? * Vor-/Nachbedingungen, Beweis führen * Hoare Kalkül: Wenn Vorbedingung gilt, gilt nach Anweisung, Nachbedingung * WP Kalkül: Genau umgekehrt, wenn Nachbedingung gilt was ist die schwächste Vorbedingung, die vor Anweisung gegolten haben muss Was gibt es ausser Vor- und Nachbedingungen noch? * Schleifeninvarianten: Müssen vor, während und nach der Schleife gelten (Bsp. Maximumsfunktion) Haben die Konzepte Nachteile? * Vor-/Nachbedingungen müssen per Hand angegeben werden