Definition der Fehlertoleranz

Fehlertoleranz

Fehlertoleranz bedeutet, dass ein Softwaresystem in der Lage ist, seine Funktion aufrechtzuerhalten, auch wenn Fehlerzustände und Ausfälle die Funktion beeinträchtigen. Für ein fehlertolerantes System ist neben der Fehlererkennung eine qualifizierte Fehlerbewertung erforderlich, die entscheidet, ob der erkannte Fehler tolerierbar oder so schwerwiegend ist, dass eine sofortige Behebung erforderlich ist.

Softwareprodukte sind auch bei optimaler Vorbereitung und Gestaltung sowie nach Usability-Tests nie hundertprozentig fehlerfrei, und auch die Benutzerinnen und Benutzer können selbst durch ihre Auswahl Fehler machen. Damit Software auch bei Fehlbedienung weiter funktioniert und nicht abstürzt, müssen zusätzliche Funktionen eingebaut werden, die eine gewisse Fehlertoleranz bieten.

Fehlertoleranz – Begriffsklärung

Fehlertoleranz (von lateinisch „tolerare“ – „erleiden“, „erdulden“) kann definiert werden als die Fähigkeit eines Systems, seine Funktionen trotz des Auftretens von Fehlern fortzusetzen. In der Norm EN ISO 9241 wird sie wie folgt beschrieben:

„Ein Dialog ist fehlertolerant, wenn das beabsichtigte Arbeitsergebnis trotz erkennbar fehlerhafter Eingaben entweder mit keinem oder mit minimalem Korrekturaufwand seitens des Benutzers erreicht werden kann.“

Fehlertoleranz kann sowohl von der Hardware als auch von der Software gefordert werden. Bei der Hardware wird in der Regel eine parallel arbeitende Sequenz installiert, die Fehler sofort erkennen kann. Eine dritte Komponente korrigiert dann den Fehler.

Bei Software gibt es verschiedene Bereiche, die durch Fehlertoleranz korrigiert werden können:

  • Designfehler,
  • Fehler in den Daten,
  • Fehler im zeitlichen Ablauf.

Online-Banking ist ein gutes Beispiel für die Bedeutung fehlertoleranter Systeme im Alltag. Kunden und Kundinnen erwarten, dass sie auch bei Wartungsarbeiten oder Ausfällen von Teilen des Bankensystems jederzeit auf ihre Konten zugreifen können.

Grundlagen der Fehlertoleranz

Konzepte und Technologien, die entwickelt wurden, um Systeme widerstandsfähiger gegen Fehler zu machen, sind die Grundlagen fehlertoleranter Systeme. Dazu gehören Mechanismen, die es ermöglichen, Fehler ohne Beeinträchtigung der Gesamtfunktionalität des Systems zu erkennen, zu isolieren und zu beheben.

Die grundlegenden Schritte eines Fehlertoleranzverfahrens, Diagnose und Fehlerbehandlung, erfordern zusätzliche Ressourcen, die über die Anforderungen des Normalbetriebs hinausgehen. Techniken zur Unterstützung der Fehlertoleranz sind u.a. Redundanz, Replikation, Checkpointing, Failover-Mechanismen.

Im Hinblick auf die Usability ist vor allem die Fehlertoleranz bei Benutzeroberflächen wie z.B. Websites entscheidend. Die folgenden Elemente können die Fehlertoleranz erhöhen:

Hinweise auf mögliche Fehleingaben,

Erklärungen von Fehlern, damit der Benutzer sie korrigieren kann,

Anzeige, wo der Fehler aufgetreten ist,

automatische Korrektur mit Hinweisen,

Aufforderung zur Überprüfung der Benutzereingaben.

In einem fehlertoleranten Banksystem werden Transaktionen auch dann fortgesetzt, wenn ein Teil der Datenbank aufgrund eines Hardwarefehlers nicht verfügbar ist. Ermöglicht wird dies durch eine komplexe Architektur redundanter Systeme, die dafür sorgen, dass z.B. auch bei internen Fehlern der Bankdienst weitgehend unbeeinträchtigt bleibt.

Es gibt eine Reihe von Best Practices, die beim Entwurf fehlertoleranter Systemarchitekturen berücksichtigt werden sollten, um die Fehlertoleranz und damit die Zuverlässigkeit und Verfügbarkeit der Systeme zu erhöhen:

  • Modularer Aufbau: Durch die Modularisierung des Systems können Fehler isoliert und behoben werden, ohne das Gesamtsystem zu beeinträchtigen.
  • Automatisierte Fehlererkennung und -behebung: Systeme sollten in der Lage sein, Fehler automatisch zu erkennen und zu beheben.
  • Stress- und Lasttests: Regelmäßige Tests unter Extrembedingungen helfen, potenzielle Schwachstellen im System zu identifizieren und zu beheben.

Die Implementierung eines Datenbank-Clusters ist ein Beispiel für eine fehlertolerante Architektur. Die Daten werden über mehrere Server repliziert, so dass beim Ausfall eines Servers die Daten ohne Verlust von Diensten oder Daten von einem anderen Server im Cluster übernommen werden können.