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
|
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:
|
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
Hanmer, R.S., "Pattern for Fault Tolerant Software", S.34, John Wiley & Sons, Weinheim 2007.
Bild 0-1: Beispiel für die Anwendung des Entwurfsmusters für Recovery Blöcke.
Beispiel: SOFTWARE UPDATE
Bild 0-2: Problem.
Bild 0-3: Abhilfe.