kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Entwicklung fehlertoleranter Software für den esp32AV

(EN google-translate)

(PL google-translate)

Fehlertoleranz wird hier in dem Sinne verstanden, dass die Auswirkungen einer auftretenden Funktionsstörung (ERROR) möglichst gering gehalten wird (MITIGATION). Entwicklungs- und Programmierfehler (FAULTs, dazu gehören auch Fehleinschätzungen der auftretetenden Nutzungsfälle) sind unvermeidbar. Jedoch können Maßnahmen getroffen werden, damit nicht gleich das ganze System versagt (FAILURE), wenn aufgrund von FAULTs ERRORS auftreten.

Bezug genommen wird auf folgende Literatur:

Autor Titel erschienen
Hanmer, R.S. Patterns for Fault Tolerant Software John Wiley & Sons, Chichester, 2007.

Tabelle 0-1: Literatur zu "Fehlertoleranter Softwareentwurf"

Begrifflichkeit

  • Ein System ist fehlerhaft programmiert. Es gibt darin Fehler (Faults).
  • Die fehlerhafte Programmierung kann im Betrieb zu Defekten und Störungen führen (Errors).
  • Die Defekte und Störungen wiederum können zum Versagen / zu Ausfällen des Systems führen (Failure).

Im folgenden sind die relevanten Begriffe im engeren thematischen Rahmen der "Fault tolerant Software" noch einmal zusammengefaßt:

Englisches Wort Deutsche Übersetzung Bedeutung
fault Fehler Programmierfehler / logischer Umsetzungsfehler
error Störung Defekte und Störungen, die im Betrieb auftreten
failure Ausfall Ausfall oder Versagen eines Systems

Tabelle 0-2: Begriffsübersicht.

Fehlertolerante Systeme und Echtzeitsysteme

Dieses Thema hat einen engen Bezug zu der Echtzeitthematik., Bei den hier hauptsächlich behandelten mobilen Systemen mit eingebetteten oder entfernten Rechnern gibt es eine Vielzahl an möglichen Versagensursachen, die mit dem Zeitverhalten und einer Bewegung in unbekanntem Terrain zu tun haben:

  • Funkverbindungen mit einer Kontrollstation können abreißen,
  • Sensoren können falsche Werte liefern,
  • ein niedriger Ladungszustand der Bordbatterien kann zu fehlerhaften Signalen der Prozessoren oder zu deren Ausfall führen, was sich im schlimmsten Fall in einem unkontrollierten Fahrverhalten äußern kann.

Rezepte für die Erstellung Fehler toleranter Software (Pattern for Fault tolerant Software)

Diese Liste ließe sich beliebig verlängern, analysieren und kategorisieren. Aus einer solchen Arbeit heraus, sind Rezepte / Muster / Pattern entstanden, wie Software gestaltet werden sollte, um ein Fehler tolerantes (Fault tolerant) System zu erhalten.

Ein sehr elementares Konzept ist beispielsweise KIS für "Keep It Simple" - mach es einfach. Da jede Codezeile wieder eine Quelle für Programmierfehler sein kann, wird bei Fehler kritischen Systemen angestrebt, den Codeumfang auf das Wesentliche zu beschränken und gerade nicht zu versuchen Schnittstellen für alle möglichen Eventualitäten anzubieten.

11 Architectural Patterns / Software-Architektur zu 11 Mustern zur Umsetzung Fehler toleranter Software
Nr. Pattern (engl.) Muster (deu.) Zweck
1 Units Of Mitigation Elemente zur Abschwächung / Besänftigung Realisierte Strategien, um beispielsweise mit Überlastung umzugehen. Redundanz, Rollback, Recovery Blocks...
2 Correcting Audits Korrigierende Betriebsprüfung Überprüfung, ob Daten oder Strukturen korrumpiert sind und nötigenfalls deren Wiederherstellung.
3 Redundancy Redundanz Verfügbarkeit mehrerer Komponenten, die die gleichen Aufgaben übernehmen können.
4 Recovery Blocks Regenerierungs-Blöcke Zeitliches Hinternanderschalten von Blöcken, die die gleiche Aufgabe auf unterschiedliche Weise versuchen zu lösen. Versagt ein vorangehender Block, wird sein Nachfolger mit der gleichen Aufgabe betraut, versagt dieser, kommt dessen Nachfolger an die Reihe.
5 Minimize Human Intervention Minimierung menschlicher Einmischung Viele Fehler werden noch schlimmer, wenn durch Menschen in unsachgemäßer Weise interveniert wird.
6 Maximize Human Participation Maximierung menschlicher Anteilnahme Das System sollte Methoden bereithalten, die es Experten erlauben, an der Beseitigung von Fehlern mitzuwirken.
7 Maintenance Interface Wartungsschnittstelle Das System sollte eine Wartungsschnittstelle bereitstellen.
8 Someone in Charge Aufsichtsführung Zu jedem Modul und dessen Aktionen sollte es ein beaufsichtigendes Element geben.
9 Escalation Eskalation Wenn die üblichen Korrekturmethoden versagen, sollte ein Konzept für eine nächst höhere Eskalationsstufe greifen und danach eine weitere usw.
10 Fault Observer Fehler Beobachter Das System sollte Fehler automatisch korrigieren, jedoch sollte dies ggf. auch kenntlich gemacht werden. Mitgeschriebene Fehler sollten an passende Observer weitergeleitet werden.
11 Software Update Software Aktualisierung Entwerfe Dein System so, dass Software Updates vorgesehen sind. Se sollten im produktiven Betrieb möglich sein.

Tabelle 0-3: Software-Architektur-Muster für Fehler tolerante Software.

Weitere englische Begriffe

englisch deutsch
Reliability Ausfallsicherheit
Mitigation Abschwächung/Besänftigung
Recovery Erholung/Rettung
Tradeoff Austauschbeziehung
Mindset Denkweise
Coverage Absicherung
availability Betriebsbereitschaft

Tabelle 0-4: Weitere englische Begriffe.

Beispiel: RECOVERY BLOCKS
""Increase the probability of successfully meeting acceptance tests by providing sequential execution of alternate computation." "

Hanmer, R.S., "Pattern for Fault Tolerant Software", S.34, John Wiley & Sons, Weinheim 2007.

Beispiel für die Anwendung des Entwurfsmusters für Recovery Blöcke.

Bild 0-1: Beispiel für die Anwendung des Entwurfsmusters für Recovery Blöcke.

Beispiel: SOFTWARE UPDATE
Problem.

Bild 0-2: Problem.

Abhilfe.

Bild 0-3: Abhilfe.