Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 4 » VEZS 2019-09-03
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