Zuverlässigkeit
Zuverlässigkeit stellt sicher, dass die Software unter definierten Bedingungen über einen bestimmten Zeitraum hinweg fehlerfrei funktioniert. Sie besteht aus verschiedenen Untermerkmalen:
Reife beschreibt die Fähigkeit der Software, eine stabile Leistung zu erbringen und Fehler in der Anwendung zu minimieren. Dies erhöht das Vertrauen der Benutzer, dass die Software konsistent funktioniert.
Verfügbarkeit sorgt dafür, dass die Software immer dann zugänglich und nutzbar ist, wenn sie benötigt wird. Dies minimiert Ausfallzeiten und maximiert die Betriebszeit der Anwendung.
Fehlertoleranz stellt sicher, dass die Software in der Lage ist, bei Auftreten von Fehlern oder unerwarteten Ereignissen weiterzufunktionieren. Dies erhöht die Widerstandsfähigkeit der Software gegenüber Ausfällen.
Wiederherstellbarkeit garantiert, dass die Software nach einem Fehler oder Ausfall schnell wieder in einen funktionsfähigen Zustand zurückkehren kann. Dies reduziert die Ausfallzeiten und die Auswirkungen von Störungen auf die Benutzer.
Für zuverlässigere Softwaresysteme können diese Qualitätstaktiken infrage kommen:
Fehlerbehandlung
Mechanismen zur Erkennung, Protokollierung und Behandlung von Fehlern umsetzen
Durch eine robuste Fehlerbehandlung können Ausnahmen und unerwartete Situationen abgefangen werden, ohne dass das gesamte System abstürzt. Fehler werden protokolliert, um die Ursachen zu analysieren und zukünftige Probleme zu vermeiden. Geeignete Fehlermeldungen informieren auch Benutzer über aktuelle bestehende Probleme. Eine strukturierte Fehlerbehandlung ermöglicht es dem System zudem, sich von Fehlerzuständen zu erholen. Fehlerbehandlung erhöht die Zuverlässigkeit und Verfügbarkeit des Systems und minimiert die Auswirkungen von Fehlern auf die Benutzer.
Fördert: Fehlertoleranz
Konsequenzen: Erhöhter Implementierungsaufwand und Komplexität durch zusätzlichen Code zur Fehlerbehandlung.
#ExceptionHandling #Logging #Fehlermanagement #Resilienz
Redundanz
Kritische Komponenten oder Systeme mehrfach vorhalten
Redundanz dupliziert kritische Komponenten oder ganze Subsysteme, sodass eine Standby-Instanz übernehmen kann, wenn die primäre ausfällt. Gängige Muster sind Active-Passive-Setups mit einem Hot Spare für den Failover, Active-Active-Konfigurationen, die Last auf mehrere Instanzen verteilen, und N+1-Schemata mit einem zusätzlichen Knoten über dem Minimum. Jeder Ansatz eliminiert Single Points of Failure und erhöht die Gesamtverfügbarkeit. Wirksame Redundanz erfordert Health Checks, automatische Failover-Mechanismen und regelmäßige Tests, damit Backup-Komponenten im Ernstfall tatsächlich funktionieren.
Fördert: Verfügbarkeit
Konsequenzen: Erhöhte Kosten und Komplexität durch zusätzliche Hardware, Software und Wartung.
#Ausfallsicherheit #Failover #Hochverfügbarkeit #Spare
Exceptions
Ausnahmen verwenden, um Fehlerzustände zu signalisieren und zu behandeln
Exceptions (Ausnahmen) signalisieren und behandeln Fehlerzustände in einem System. Wenn eine Komponente auf eine Situation stößt, die sie nicht normal verarbeiten kann, wie ungültige Eingaben, Ressourcenmangel oder interne Fehler, kann sie eine Ausnahme auslösen. Die Ausnahme unterbricht den normalen Programmfluss und übergibt die Kontrolle an eine spezielle Ausnahmebehandlungsroutine. Dort kann der Fehler protokolliert, alternative Maßnahmen ergriffen oder die Ausnahme an eine höhere Ebene weitergeleitet werden. Exceptions ermöglichen eine klare Trennung von normalem Programmcode und Fehlerbehandlung sowie eine strukturierte Behandlung von Fehlerzuständen.
Fördert: Fehlertoleranz
Konsequenzen: Erhöhte Komplexität durch die Implementierung von Ausnahmebehandlungsroutinen und mögliche Leistungseinbußen bei häufigem Auslösen von Ausnahmen.
#Ausnahmebehandlung #Fehlerbehandlung #Robustheit #DefensiveProgrammierung