Was ist „anmutige Erniedrigung“?


11

Ich höre viel über diesen Begriff "Graceful Degradation".

Zum Beispiel ,

 "An application server should gracefully degrage when it is under heavy load "

  "Graceful degradation of user interfaces.... "

Der Begriff sieht für mich abstrakt aus. Gibt es ein konkretes Beispiel dafür, was es bedeutet?


5
Ein guter Artikel zum Thema Kodierunghorror.com/blog/2011/04/…
JF Dion

Antworten:


10

Hier sind einige Beispiele:

  • Wenn Ihnen eine Ressource ausgeht (Handles, Sockets, Speicher, Speicherplatz), stürzen Sie nicht ab, sondern bedienen weiterhin so viele Benutzer, wie Sie mit Ihren verfügbaren Ressourcen bedienen können. Etwas, das die Anmut nicht beeinträchtigt, funktioniert möglicherweise einfach nicht mehr, wenn es außerhalb des Designumschlags aufgenommen wird.
  • Unter Lasten, die schwerer sind als das, was Sie für Benutzer entwickelt haben, reagiert das Gerät langsamer als das, wofür Sie entwickelt haben. Ohne eine ordnungsgemäße Verschlechterung kann es akzeptabel sein, wenn das System nach Überschreiten der Anforderungen nicht mehr funktioniert.
  • Fehlerbedingungen, wie z. B. Festplattenfehler, Ausfall eines CPU-Kerns, Ausfall des Speichers. Ein System, das für eine ordnungsgemäße Verschlechterung ausgelegt ist, arbeitet möglicherweise in einem reduzierten Modus weiter (z. B. ohne auf Daten im ausgefallenen Laufwerk zugreifen zu können, aber dennoch Daten von dem Laufwerk zu liefern, das nicht ausgefallen ist), während ein anderes System einfach abstürzt.

5

Anwendungen mit einem "verschlechterten" Modus bieten im Allgemeinen aufgrund eines internen oder externen Problems Zugriff auf eine begrenzte Anzahl von Funktionen. Stellen Sie sich beispielsweise vor, Ihre Anwendung stellt eine Verbindung zu zwei verschiedenen Datenquellen her. Wenn einer dieser Fehler auftritt, kann er möglicherweise weiterhin ausgeführt werden, jedoch alle visuellen (oder / und Backend-) Funktionen deaktivieren, die sich auf die nicht verfügbare Ressource beziehen.

Konkretes Beispiel: Ihre Anwendung verfügt über zwei Datenquellen, in einer speichern Sie Personen, in der anderen speichern Sie Konten. Selbst wenn die Kontodatenbank ausfällt und die Anwendung einen verschlechterten Modus aufweist, sollten Sie in der Lage sein, neue Personen zu erstellen, obwohl Sie nicht mit ihren Konten interagieren.

In Bezug auf die Benutzeroberfläche bedeutet dies im Allgemeinen, dass Sie dem Benutzer klar anzeigen, dass einige Funktionen deaktiviert sind, und eine Warnmeldung anzeigen, damit er nicht im Dunkeln darüber gelassen wird, warum etwas nicht verfügbar ist.

Es gibt auch einen Wikipedia-Eintrag zu fehlertoleranten Systemen .


2

Mit dem technologischen Fortschritt haben wir immer Änderungen in einer Anwendung, die möglicherweise nicht immer von allen Zielgruppen unterstützt wird. In solchen Szenarien stoßen wir auf eine Graceful-Verschlechterung, die nachahmt, dass wir für das Beste arbeiten, das verfügbar ist, aber wir haben auch eine Ausfallsicherheit für diejenigen, die kein Upgrade durchgeführt haben oder deren System möglicherweise nicht unterstützt.

Ein wichtiges Beispiel ist das <img> Tag mit dem altAttribut, das für Fälle hilfreich ist, in denen Bilder blockiert oder deaktiviert sind. Diese geben nun einen aussagekräftigen Kontext für die Bilder (natürlich nur, wenn wir dies angeben).

Ein weiteres Beispiel, an das ich denken kann, sind Stylesheets für den Fall eines Fehlers oder einer Nichtverfügbarkeit. Der Browser bietet eine eigene generische Version zum Anzeigen / Anzeigen der Seite.

Wie Sie bereits erwähnt haben, müssen Sie einen Plan sorgfältig festlegen, was zu tun ist, wenn Ihre Treffer die Schwelle überschreiten. Sie deaktivieren bestimmte Funktionen oder setzen einige Dienste aus, die nicht kritisch sind, und geben Ihnen eine Verschnaufpause. All dies hilft Ihnen dabei, eine ordnungsgemäße Verschlechterung einzurichten, damit der Benutzer weiß, welche x Dinge der Server möglicherweise einige Zeit benötigt, um zu antworten, oder der x-Dienst für etwa eine Stunde nicht verfügbar wäre


1

Dies bedeutet, dass die Eingänge und der Zustand die Entwurfsgrenzen überschreiten und die Ausgänge so vernünftig und zuverlässig wie möglich bleiben.

Wenn es sich um einen Server handelt, der für 100 gleichzeitige Verbindungen ausgelegt ist, stürzt er nicht ab und liefert bei 101 oder sogar 150 Verbindungen keine verrückten Ergebnisse - er verlangsamt sich oder trennt möglicherweise einige Verbindungen, funktioniert aber größtenteils weiter. Wenn es sich um eine Datenbank handelt, die für die Verarbeitung von 1 Milliarde Datensätzen ausgelegt ist, verlangsamt sie sich nicht plötzlich auf einen unbrauchbaren Zustand von 1,01 Milliarden.


1

Wenn Sie kein grafisches System haben (wie kein X11-Server), sollte Ihr Programm mindestens eine CLI wie ncurses bereitstellen.

vi hat einen dummen Modus, in dem es sich wie ex verhält, wenn das Terminal zu wenige Funktionen hat.


1

Beim Erstellen von Webanwendungen kommt eine ordnungsgemäße Verschlechterung ins Spiel, wenn Ihre Website auf JavaScript oder Flash oder ähnlichen Techniken basiert, die der Benutzer nicht hat oder die er deaktiviert hat.

Dann sollten Sie weiterhin einige grundlegende Funktionen nur mit HTML oder zumindest eine Meldung bereitstellen, warum die Site nicht wie erwartet funktioniert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.