I termini sono stabili e affidabili intercambiabili?


20

C'è una differenza tra stabilità e affidabilità (almeno nel contesto di ingegneria del software) o possono essere usati in modo intercambiabile? In caso contrario, quali sarebbero alcuni esempi di sistemi affidabili ma non necessariamente stabili e viceversa?


3
Qualcuno potrebbe riferirsi a un sistema come stabile ma inaffidabile se è sempre attivo e funzionante ma produce in modo intermittente risultati errati o occasionalmente perde dati. È una questione di opinione sul significato di queste parole.
joshp,

Nella mia mente si riducono alla stessa cosa, coerenza ...
Darknight

Perché stai chiedendo?
JᴀʏMᴇᴇ,

Risposte:


37

Diciamo ad esempio che abbiamo un'app, che funziona perfettamente, a parte il crash ogni 5 minuti, ma viene immediatamente salvata senza perdita di dati.

Questo nella mia mente è affidabile, ma non stabile.

Posso fare affidamento sul fatto che non perde dati e funziona correttamente, nonostante non sia stabile.

In effetti, Internet è fondamentalmente quello. È tutt'altro che stabile: le connessioni cadono e riappaiono, i pacchetti si scontrano e vengono persi e accadono tutti i tipi di altre cose instabili. Tuttavia, è piuttosto sorprendente quanto sia affidabile data tutta l'instabilità insita in esso.


2
Ian Somerville definisce l'affidabilità come "La probabilità di un funzionamento senza guasti in un determinato periodo di tempo, in un determinato ambiente, per uno scopo specifico". nel libro Ingegneria del software. Quindi il tuo sistema si blocca ogni 5 minuti non è così affidabile (dipende comunque dalle tue metriche).
m3th0dman

2
@ m3th0dman, dipende da come si definisce un errore allora. Nessuna perdita di dati e l'accuratezza dei dati al 100% non sarebbe un errore nei miei libri, anche se l'app continuasse a bloccarsi e a riavviarsi. Vorrei risolvere il problema, ma non sarebbe una priorità se continuasse a "funzionare"
CaffGeek

Se il tuo sistema si arresta in modo anomalo, ovviamente c'è stato un errore da qualche parte e quindi la tua operazione non è stata priva di errori (come suggerito dalla definizione); quindi il tuo sistema non è così affidabile. La discussione può essere dettagliata nel parlare di disponibilità, risposta e tempi di riavvio.
m3th0dman

Non credo seriamente che questa app di esempio sia affidabile. Affidabilità e stabilità non sono necessariamente due cose separate.
Moshe Revah,

@ m3th0dman: i programmi Erlang sono considerati affidabili, non perché sono infallibili, ma perché consistono in molti processi simultanei (non nei processi del sistema operativo) che possono fallire senza compromettere il programma nel suo insieme, progettato per gestire tali errori.
André Paramés,

24

Queste definizioni derivano dalla norma ISO 9126, che si divide in caratteristiche e caratteristiche secondarie: questa tabella , questo pdf o wikipedia o articolo

La stabilità è: caratterizza la sensibilità al cambiamento di un determinato sistema che è l'impatto negativo che può essere causato dai cambiamenti del sistema.

L'affidabilità è una caratteristica principale che contiene:

  • maturità: questa caratteristica secondaria riguarda la frequenza di guasto del software.
  • tolleranza agli errori: la capacità del software di resistere (e ripristinare) da guasti a componenti o ambientali.
  • recuperabilità: possibilità di ripristinare il pieno funzionamento di un sistema guasto, comprese le connessioni dati e di rete.

6

Obiettivo: scrivere un programma per aggiungere due numeri

Affidabile ma instabile:

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

Stabile ma inaffidabile:

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

Questa definizione non è corretta. Non è come i termini siano realmente utilizzati nel settore.
Federico,

2

Nel contesto della valutazione delle biblioteche, i termini significano cose completamente diverse.

Una libreria affidabile è quella che fa il suo lavoro senza guasti intermittenti.

Una libreria stabile è una libreria che non cambia molto.


Sono sorpreso di vedere così tante risposte che interpretano come "non si blocca". Per me il primo significato è davvero "non è cambiato molto da un po 'di tempo", non si muove più. La cosa che non si blocca più potrebbe essere qualcosa che la accompagna, ma la stabilità non riguarda principalmente il comportamento del software.
Martin Maat,

0

Stabilità e affidabilità sono cose diverse nello sviluppo del software, tuttavia entrambi sono stati usati come termini gemelli :)

Concordo con alcuni dei commenti precedenti menzionati e vorrei aggiungere i miei 2 centesimi.

L'affidabilità è la misura in cui un esperimento, un test o qualsiasi procedura di misurazione produce lo stesso risultato in prove ripetute.

Affidabilità di stabilità (a volte chiamata test, affidabilità del nuovo test) è l'accordo degli strumenti di misurazione nel tempo. Per determinare la stabilità, una misura o un test viene ripetuto sugli stessi soggetti in una data futura. I risultati vengono confrontati e correlati con il test iniziale per fornire una misura di stabilità.

Ulteriori riferimenti su questo argomento sono forniti:


0

A mio avviso, "affidabilità" significa che hai una comprensione del limite del sistema. Puoi dire con sicurezza che "forniamo il tempo di risposta X al X ° percentile" (maggiore è la X, meglio è, ovviamente).

La stabilità, d'altra parte, è semplicemente una misura di disponibilità. "Se provi a connetterti al nostro servizio, sarà presente almeno l'X% delle volte".


0

Affidabile ma non stabile :

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

Stabile ma non affidabile :

add(a,b):
    if a == nil ||  b == nil: 
        return 0
    else
        return (a+b)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.