Sind die Begriffe stabil und zuverlässig austauschbar?

20

Gibt es einen Unterschied zwischen Stabilität und Zuverlässigkeit (zumindest im Zusammenhang mit der Softwareentwicklung) oder können sie austauschbar verwendet werden? Wenn nicht, was wären Beispiele für zuverlässige, aber nicht unbedingt stabile Systeme und umgekehrt?

gsakkis
quelle
3
Jemand könnte ein System als stabil, aber unzuverlässig bezeichnen, wenn es ständig in Betrieb ist, aber zeitweise falsche Ergebnisse liefert oder gelegentlich Daten verliert. Es ist eine Ansichtssache, was diese Wörter bedeuten.
Joshp
Meiner Meinung nach laufen sie auf dasselbe hinaus, auf Konsistenz ...
Darknight
Warum fragst du?
18.

Antworten:

37

Nehmen wir zum Beispiel an, wir haben eine App, die einwandfrei funktioniert, abgesehen davon, dass sie alle 5 Minuten abstürzt, aber sofort wieder funktioniert, ohne dass Daten verloren gehen.

Das ist meiner Meinung nach zuverlässig, aber nicht stabil.

Ich kann mich darauf verlassen, dass es keine Daten verliert und richtig funktioniert, obwohl es nicht stabil ist.

Tatsächlich ist das Internet im Grunde genommen das. Es ist alles andere als stabil - Verbindungen werden unterbrochen und wieder hergestellt, Pakete kollidieren und gehen verloren, und alle möglichen anderen instabilen Dinge passieren. Es ist jedoch verblüffend, wie zuverlässig die Instabilität ist, die ihr innewohnt.

CaffGeek
quelle
2
Ian Somerville definiert Zuverlässigkeit als "die Wahrscheinlichkeit eines störungsfreien Betriebs über einen bestimmten Zeitraum in einer bestimmten Umgebung für einen bestimmten Zweck". im Buch Software Engineering. Daher ist Ihr System, das alle 5 Minuten abstürzt, nicht so zuverlässig (hängt jedoch von Ihren Messdaten ab).
m3th0dman
2
@ m3th0dman, hängt davon ab, wie Sie dann einen Fehler definieren. Kein Datenverlust und 100% Datengenauigkeit wären in meinen Büchern kein Fehler, auch wenn die App immer wieder abstürzt und sich selbst neu startet. Ich möchte das Problem beheben, aber es hätte keine hohe Priorität, wenn es weiterhin funktioniert
CaffGeek,
Wenn Ihr System abstürzt, ist offensichtlich irgendwo ein Fehler aufgetreten und daher war Ihr Betrieb nicht fehlerfrei (wie in der Definition angegeben). daher ist dein system nicht so zuverlässig. Die Diskussion kann detailliert auf die Verfügbarkeit, die Reaktion und die Neustartzeit eingehen.
m3th0dman
Ich glaube nicht, dass diese Beispiel-App zuverlässig ist. Zuverlässigkeit und Stabilität sind nicht unbedingt zwei getrennte Dinge.
Moshe Revah
@ m3th0dman: Erlang-Programme gelten als zuverlässig, nicht weil sie unfehlbar sind, sondern weil sie aus vielen gleichzeitigen Prozessen bestehen (nicht aus Betriebssystemprozessen), die fehlschlagen können, ohne das Programm als Ganzes zu gefährden, das darauf ausgelegt ist, diese Fehler zu behandeln.
André Paramés
24

Diese Definitionen stammen aus der Norm ISO 9126, die in Merkmale und Untermerkmale unterteilt ist: diese Tabelle , dieses PDF oder Wikipedia oder Artikel

Stabilität ist: Bezeichnet die Empfindlichkeit gegenüber Änderungen eines bestimmten Systems als negative Auswirkung, die durch Systemänderungen verursacht werden kann.

Zuverlässigkeit ist ein Hauptmerkmal, das Folgendes beinhaltet:

  • Laufzeit: Diese Untereigenschaft betrifft die Ausfallhäufigkeit der Software.
  • Fehlertoleranz: Die Fähigkeit der Software, einem Komponenten- oder Umgebungsfehler standzuhalten (und ihn wiederherzustellen).
  • Wiederherstellbarkeit: Möglichkeit, ein ausgefallenes System einschließlich Daten- und Netzwerkverbindungen wieder vollständig in Betrieb zu nehmen.
KeesDijk
quelle
6

Ziel: Schreiben Sie ein Programm, um zwei Zahlen hinzuzufügen

Zuverlässig aber instabil:

add(a,b):
    if randomInt mod 5 == 0: 
        throw exception
    else
        print a+b

Stabil aber unzuverlässig:

add(a,b):
    if randomInt mod 5 == 0: 
        print a+a
    else
        print a+b
Gort den Roboter
quelle
Diese Definition ist falsch. Es ist nicht so, wie die Begriffe wirklich in der Industrie verwendet werden.
Federico
2

Im Zusammenhang mit der Bewertung von Bibliotheken bedeuten die Begriffe ganz andere Dinge.

Eine zuverlässige Bibliothek erledigt ihre Arbeit ohne zeitweilige Ausfälle.

Eine stabile Bibliothek ist eine Bibliothek, an der sich nicht viel ändert.

Sebastian Redl
quelle
Ich bin überrascht, so viele Antworten zu sehen, die stabil als "nicht abstürzen" interpretieren. Für mich ist die erste Bedeutung in der Tat "hat sich seit einiger Zeit nicht viel geändert", sie bewegt sich nicht mehr. Das Ding, das nicht mehr abstürzt, mag damit einhergehen, aber bei der Stabilität geht es nicht in erster Linie um das Verhalten von Software.
Martin Maat
0

Stabilität und Zuverlässigkeit sind verschiedene Dinge in der Softwareentwicklung, sie werden jedoch beide als die Schwesterbegriffe verwendet :)

Ich stimme einigen bereits erwähnten Kommentaren zu und möchte meine 2 Cent hinzufügen.

Zuverlässigkeit ist das Ausmaß, in dem ein Experiment, ein Test oder ein Messverfahren bei wiederholten Versuchen das gleiche Ergebnis liefert.

Die Stabilitätszuverlässigkeit (manchmal Test- oder Wiederholungszuverlässigkeit genannt) ist die Vereinbarung von Messinstrumenten über die Zeit. Um die Stabilität zu bestimmen, wird zu einem späteren Zeitpunkt eine Messung oder Prüfung an denselben Probanden wiederholt. Die Ergebnisse werden verglichen und mit dem anfänglichen Test korreliert, um ein Maß für die Stabilität zu erhalten.

Weitere Referenzen zu diesem Thema werden bereitgestellt:

EL Yusubov
quelle
0

Für mich bedeutet "Zuverlässigkeit", dass Sie die Grenzen des Systems im Griff haben. Sie können mit Zuversicht sagen, dass "wir die Antwortzeit X beim X. Perzentil angeben" (je höher das X, desto besser, offensichtlich).

Stabilität ist dagegen nur ein Maß für die Verfügbarkeit. Msgstr "Wenn Sie versuchen, eine Verbindung zu unserem Service herzustellen, ist dieser mindestens zu X% vorhanden".

Vatine
quelle
0

Zuverlässig aber nicht stabil :

add(a,b):
    if a == nil ||  b == nil: 
        throw exception
    else
        return (a+b)

Stabil aber nicht zuverlässig :

add(a,b):
    if a == nil ||  b == nil: 
        return 0
    else
        return (a+b)
Sazzad Hissain Khan
quelle