¿Los términos estables y confiables son intercambiables?

20

¿Existe alguna diferencia entre estabilidad y confiabilidad (al menos en el contexto de la ingeniería de software) o se pueden usar indistintamente? Si no, ¿cuáles serían algunos ejemplos de sistemas confiables pero no necesariamente estables, y viceversa?

gsakkis
fuente
3
Alguien podría referirse a un sistema como estable pero poco confiable si siempre está en funcionamiento pero produce resultados incorrectos de manera intermitente u ocasionalmente pierde datos. Es una cuestión de opinión lo que significan estas palabras.
joshp
En mi opinión, se reducen a lo mismo, consistencia ...
Darknight
¿Porque lo preguntas?
JᴀʏMᴇᴇ

Respuestas:

37

Digamos, por ejemplo, que tenemos una aplicación, funciona perfectamente, aparte de que se bloquea cada 5 minutos, pero se respalda instantáneamente sin pérdida de datos.

Eso en mi mente es confiable, pero no estable.

Puedo confiar en que no perderá datos y funcionará correctamente, a pesar de que no sea estable.

De hecho, Internet es básicamente eso. Está lejos de ser estable: las conexiones caen y vuelven a aparecer, los paquetes chocan y se pierden, y suceden todo tipo de cosas inestables. Sin embargo, es bastante sorprendente cuán confiable se le da toda la inestabilidad inherente.

CaffGeek
fuente
2
Ian Somerville define la confiabilidad como "La probabilidad de una operación libre de fallas durante un tiempo específico, en un entorno dado, para un propósito específico". en el libro Ingeniería de software. Por lo tanto, su sistema que falla cada 5 minutos no es tan confiable (aunque depende de sus métricas).
m3th0dman
2
@ m3th0dman, depende de cómo defina una falla en ese momento. Sin pérdida de datos, y la precisión del 100% de los datos no sería un fracaso en mis libros, incluso si la aplicación se bloqueaba y reiniciaba. Me gustaría solucionar el problema, pero no sería una alta prioridad si seguía "funcionando"
CaffGeek
Si su sistema falla, entonces obviamente hubo una falla en algún lugar y, por lo tanto, su operación no estuvo libre de fallas (como sugiere la definición); Por lo tanto, su sistema no es tan confiable. La discusión puede detallarse para hablar sobre disponibilidad, respuesta y tiempo de reinicio.
m3th0dman
En serio, no creo que esta aplicación de ejemplo sea confiable. La fiabilidad y la estabilidad no son necesariamente dos cosas separadas.
Moshe Revah
@ m3th0dman: los programas de Erlang se consideran confiables, no porque sean infalibles, sino porque consisten en muchos procesos concurrentes (no procesos del sistema operativo) que pueden fallar sin comprometer el programa en su conjunto, que está diseñado para manejar esas fallas.
André Paramés
24

Estas definiciones provienen del estándar ISO 9126, que se divide en características y subcaracterísticas: esta tabla , este pdf o wikipedia o artículo

La estabilidad es: caracteriza la sensibilidad al cambio de un sistema dado que es el impacto negativo que pueden causar los cambios del sistema.

La fiabilidad es una característica principal que contiene:

  • madurez: Esta subcaracterística se refiere a la frecuencia de falla del software.
  • tolerancia a fallas: la capacidad del software para resistir (y recuperarse) de fallas de componentes o ambientales.
  • capacidad de recuperación: capacidad de devolver un sistema fallido a pleno funcionamiento, incluidas las conexiones de datos y de red.
KeesDijk
fuente
6

Objetivo: escribir un programa para sumar dos números

Fiable pero inestable:

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

Estable pero no confiable:

add(a,b):
    if randomInt mod 5 == 0: 
        print a+a
    else
        print a+b
Gort the Robot
fuente
Esta definición es incorrecta. No es cómo se usan realmente los términos en la industria.
Federico
2

En el contexto de la evaluación de bibliotecas, los términos significan cosas completamente diferentes.

Una biblioteca confiable es aquella que hace su trabajo sin fallas intermitentes.

Una biblioteca estable es aquella que no cambia mucho.

Sebastian Redl
fuente
Me sorprende ver tantas respuestas que interpretan estable como "no se bloquea". Para mí, el primer significado es, de hecho, "no ha cambiado mucho durante algún tiempo", ya no se mueve. Lo que ya no se bloquea puede ser algo que viene junto con él, pero la estabilidad no se trata principalmente del comportamiento del software.
Martin Maat
0

La estabilidad y la confiabilidad son cosas diferentes en el desarrollo de software, sin embargo, ambas se usan como términos hermanos :)

Estoy de acuerdo con algunos comentarios anteriores mencionados y me gustaría agregar mis 2 centavos.

La confiabilidad es la medida en que un experimento, prueba o cualquier procedimiento de medición arroja el mismo resultado en ensayos repetidos.

La confiabilidad de la estabilidad (a veces llamada prueba, confiabilidad de reevaluación) es el acuerdo de los instrumentos de medición a lo largo del tiempo. Para determinar la estabilidad, se repite una medida o prueba sobre los mismos sujetos en una fecha futura. Los resultados se comparan y se correlacionan con la prueba inicial para dar una medida de estabilidad.

Se proporcionan más referencias sobre este tema:

EL Yusubov
fuente
0

En mi opinión, "confiabilidad" significa que tienes una idea del límite del sistema. Puede, con confianza, decir que "proporcionamos el tiempo de respuesta X en el percentil X" (cuanto mayor sea X, mejor, obviamente).

La estabilidad, por otro lado, es simplemente una medida de disponibilidad. "Si intenta conectarse a nuestro servicio, estará allí al menos el X% de las veces".

Vatine
fuente
0

Fiable pero no estable :

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

Estable pero no confiable :

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