Beide beschreiben die Konsistenz des Verhaltens einer Anwendung, aber "Robustheit" beschreibt die Reaktion einer Anwendung auf ihre Eingabe , während "Fehlertoleranz" die Reaktion einer Anwendung auf ihre Umgebung beschreibt .
Eine App ist robust, wenn sie mit inkonsistenten Daten konsistent arbeiten kann. Beispiel: Eine Kartenanwendung ist robust, wenn sie Adressen in verschiedenen Formaten mit verschiedenen Rechtschreibfehlern analysieren und einen nützlichen Ort zurückgeben kann. Ein Musik-Player ist robust, wenn er eine MP3-Datei nach einem fehlerhaften Frame weiter decodieren kann. Ein Bildeditor ist robust, wenn er ein Bild mit eingebetteten EXIF-Metadaten ändern kann, die er möglicherweise nicht erkennt. Dies gilt insbesondere dann, wenn das Bild geändert werden kann, ohne die EXIF-Daten zu beschädigen.
Eine App ist fehlertolerant, wenn sie in einer inkonsistenten Umgebung konsistent funktionieren kann. Eine Datenbankanwendung ist fehlertolerant, wenn sie auf einen alternativen Shard zugreifen kann, wenn der primäre nicht verfügbar ist. Eine Webanwendung ist fehlertolerant, wenn sie weiterhin Anforderungen aus dem Cache verarbeiten kann, auch wenn ein API-Host nicht erreichbar ist. Ein Speichersubsystem ist fehlertolerant, wenn es aus der Parität berechnete Ergebnisse zurückgeben kann, wenn ein Plattenmitglied offline ist.
In beiden Fällen wird erwartet, dass die Anwendung stabil bleibt, sich einheitlich verhält, die Datenintegrität beibehält und nützliche Ergebnisse liefert, selbst wenn ein Fehler auftritt. Bei der Bewertung der Robustheit können jedoch Datenkriterien und bei der Bewertung der Fehlertoleranz Verfügbarkeitskriterien auftreten.
Eins muss nicht zum anderen führen. Eine mobile Spracherkennungs-App kann sehr robust sein und eine unheimliche Fähigkeit bieten, Sprache in einer Vielzahl regionaler Akzente mit enormen Hintergrundgeräuschen einheitlich zu erkennen. Aber wenn es ohne eine schnelle zellulare Datenverbindung nutzlos ist, ist es nicht sehr fehlertolerant. Ebenso kann eine Web Publishing-Anwendung äußerst fehlertolerant sein, mit mehreren Redundanzen auf jeder Ebene, und ganze Rechenzentren verlieren, ohne dass dies fehlschlägt. Wenn jedoch eine Benutzertabelle gelöscht wird und bei der ersten Registrierung mit einem Apostroph im Nachnamen ein Absturz auftritt Es ist überhaupt nicht robust.
Wenn Sie nach wissenschaftlicher Literatur suchen, um die Unterscheidung zu beschreiben, suchen Sie möglicherweise in bestimmten Bereichen, in denen Software verwendet wird, und nicht allgemein nach Software. Die Forschung zu verteilten Anwendungen könnte ein fruchtbarer Grund für Fehlertoleranzkriterien sein, und Google hat einige relevante Forschungsergebnisse veröffentlicht. Datenmodellierungsforschung befasst sich wahrscheinlich mit Fragen der Robustheit, da Wissenschaftler besonders an den Eigenschaften der Robustheit interessiert sind, die reproduzierbare Ergebnisse liefern. Möglicherweise finden Sie Artikel, die statistische Anwendungen beschreiben, die hilfreich sein könnten, z. B. bei der Klimamodellierung, der RF-Ausbreitungsmodellierung oder der Genomsequenzierung. Dort finden Sie auch Ingenieure, die über "robustes Design" in Sachen Steuerungssysteme diskutieren.
Das Whitepaper zum Google-Dateisystem beschreibt die Vorgehensweise bei Fehlertoleranzproblemen, bei der im Allgemeinen davon ausgegangen wird, dass Komponentenfehler Routine sind und die Anwendung sich daher an sie anpassen muss:
Dieses Projekt für eine Klasse bei Rutgers unterstützt eine "Komponentenfehler" -orientierte Definition von "Fehlertoleranz":
Abhängig von dem von Ihnen untersuchten Gebiet gibt es jede Menge Artikel zum Thema "Robustes Modellieren XYZ". Die meisten beschreiben ihre Kriterien für "robust" in der Zusammenfassung, und Sie werden feststellen, dass alles damit zusammenhängt, wie das Modell mit Eingaben umgeht.
Dieser Bericht eines NASA-Klimaforschers beschreibt Robustheit als Kriterium für die Bewertung von Klimamodellen:
Dieser Artikel eines MIT-Forschers untersucht drahtlose Protokollanwendungen, eine Domäne, in der sich Fehlertoleranz und Robustheit überschneiden. Die Autoren verwenden jedoch "robust", um Anwendungen, Protokolle und Algorithmen zu beschreiben, während sie "Fehlertoleranz" in Bezug auf die Topologie verwenden und Komponenten: