Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 4 » VEZS 2019-09-03   (Übersicht)

VEZS 2019-09-03

Fach: Verlässliche Echtzeitsysteme

ECTS: 7.5

Prüfer: Peter Ulbrich

Beisitzer: Florian Schmaus


Was ist ein Fehler?

  • Die Nichterfüllung von festgelegten Forderungen (Spezifikation vs. Implementierung)

Wie kommt es zu Fehlern?

  • Fehlerkette:
    • Defekt: auch gutartige mögliche
    • innerer Fehler: muss nicht zu Fehlverhalten führen
    • Sichtbares Fehlverhalten

Wie kann es dann damit weitergehen?

  • Fehlerkette über verschiedene Ebenen
  • Fehlverhalten in einer Ebene kann zu Defekt in der nächsten führen
  • Erschwert ausfindig machen des Defekts

Wie kann man Fehler kategorisieren?

  • Viele verschiedene Möglichkeiten z.B. nach Art:
  • permanente Fehler: Sind permanent; können erst durch eine korrigierende Maßnahme behoben werden, systemintern
  • sporadische Fehler: unregelmäßiges Auftreten, häufig gebündelt, oft Vorboten permanenter Fehler, z.B durch Verschleiß verursacht
  • transiente Fehler: unregelmäßiges Auftreten, durch äußere Einwirkung ausgelöst, münden aber meistens nicht in einen permanenten Fehler

Wie ist das mit transienten Defekten? Wo treten diese auf und kann daraus ein permanenter Fehler werden?

  • Treten in physikalischer (erster) Ebene auf
  • Kann in einer anderen Ebene zum permanenten Fehler(Fehlverhalten) werden

Wie kann man mögliche Fehler identifizieren?

  • 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

Wie kann man Fehlertoleranz implementieren?

  • Strukturelle Redundanz: Komponenten gleichartig auslegen mit Relativtests
  • Funktionelle Redundanz: Komponenten verschiedenartig auslegen (unterschiedliche Herleitung), mit Akzeptanztests
  • Informationsredundanz: Einbringen zusätzlicher Informationen
  • zeitliche Redundanz: Schlupfzeit

Was sind die Vor- und Nachteile der verschiedenen Arten von Redundanz?

  • Strukturell: + Verlässlich, - teuer, - Gleichtaktfehler, -Single Points of Failure
  • Funktionell: + Gleichtaktfehler durch Diversität vermeiden, - sehr aufwändig, - Anwendungsspezifisch durch Akzeptanztest, -Single Points of Failure
  • Informations-: + Fehlererkennung, - Berechnungen teuer, - noch keine Fehlertoleranz

Wenn wir strukturelle Redundanz haben, wo sind diese Single Points of Failure?

  • Bei Ein- und Ausgabe
  • Daher arbeiten mit Akzeptanztests und Akzeptanzmaskierer, sowie Mehrheitsentscheider für Ausgabe

Wieso mache ich den Akzeptanzmaskierer am Eingang und filtere nicht erst bei der Ausgabe?

  • So wird der Replikatdeterminismus zerstört
  • Z.B. bei Floating Point Zahlen: Wenn ich bei drei Sensoren leicht unterschiedliche Werte reingebe können trotzdem stark unterschiedliche Ergebnisse rauskommen

Welcher Bereich ist bei Replikation geschützt?

  • Nur Berechnung in den Replikaten

Wie kann ich jetzt sicherstellen, dass darin das richtige berechnet wird?

  • Mit abstrakter Interpretation und formaler Verifikation, was aber beides sehr aufwändig ist

Warum teste ich nicht einfach alles durch?

  • Vollständige Testüberdeckung eigentlich nicht möglich wegen der kombinatorischen Explosion

Was ist bei abstrakter Semantik anders?

  • Durch Abstraktion und symbolische Ausführung weniger Komplexität

Was ist ein Beispiel einer abstrakten Semantik?

  • Sammelsemantik und Intervallabstraktion

Was sind die Eigenschaften? (mit Skizze)

  • Vollständig, Korrekt
  • Präzise
  • Geringe Komplexität

Was macht Astree?

  • Intervallabstraktion: liefert keine Werte, nur Wertebereich für Variablen
  • Mit Zusicherungen und Known-Ranges Präzision hinzufügen und arbeiten