Os termos são estáveis ​​e confiáveis ​​são intercambiáveis?

20

Existe uma diferença entre estabilidade e confiabilidade (pelo menos no contexto da engenharia de software) ou elas podem ser usadas de forma intercambiável? Caso contrário, quais seriam alguns exemplos de sistemas confiáveis, mas não necessariamente estáveis, e vice-versa?

gsakkis
fonte
3
Alguém pode se referir a um sistema como estável, mas não confiável, se estiver sempre em funcionamento, mas produz resultados incorretos de forma intermitente ou ocasionalmente perde dados. É uma questão de opinião o que essas palavras significam.
joshp
Em minha mente elas se resumem à mesma coisa, consistência ...
Darknight
Porque perguntas?
18716

Respostas:

37

Digamos, por exemplo, que temos um aplicativo, ele funciona perfeitamente, além de travar a cada 5 minutos, mas é feito backup instantaneamente sem perda de dados.

Na minha opinião, isso é confiável, mas não estável.

Posso confiar que ele não perderá dados e funcionará corretamente, apesar de não ser estável.

De fato, a internet é basicamente isso. Está longe de ser estável - as conexões caem e reaparecem, os pacotes colidem e são perdidos, e todos os tipos de outras coisas instáveis ​​acontecem. No entanto, é incrível o quão confiável é dada toda a instabilidade inerente a ele.

CaffGeek
fonte
2
Ian Somerville define confiabilidade como "A probabilidade de operação sem falhas durante um tempo especificado, em um determinado ambiente, para uma finalidade específica". no livro Engenharia de Software. Portanto, seu sistema travando a cada 5 minutos não é tão confiável (depende de suas métricas).
M3th0dman
2
@ m3th0dman, depende de como você define uma falha então. Sem perda de dados e 100% de precisão dos dados não seria uma falha nos meus livros, mesmo que o aplicativo continuasse travando e reiniciando. Eu gostaria de corrigir o problema, mas não seria uma prioridade alta se manteve 'trabalhar'
CaffGeek
Se o seu sistema travar, obviamente houve uma falha em algum lugar e, portanto, sua operação não foi isenta de falhas (conforme sugerido pela definição); portanto, seu sistema não é tão confiável. A discussão pode ser detalhada para falar sobre disponibilidade, resposta e tempo de reinicialização.
M3th0dman
Eu realmente não acho que este aplicativo de exemplo seja confiável. Confiabilidade e estabilidade não são necessariamente duas coisas separadas.
Moshe Revah
@ m3th0dman: Os programas Erlang são considerados confiáveis, não porque são infalíveis, mas porque consistem em muitos processos simultâneos (não processos de SO) que podem falhar sem comprometer o programa como um todo, projetado para lidar com essas falhas.
André Paramés 25/07/12
24

Essas definições vêm da norma ISO 9126, que divide características e sub-características: esta tabela , este pdf ou wikipedia ou artigo

A estabilidade é: caracteriza a sensibilidade à alteração de um determinado sistema que é o impacto negativo que pode ser causado por alterações no sistema.

A confiabilidade é uma característica principal que contém:

  • maturidade: esta sub-característica diz respeito à frequência de falha do software.
  • tolerância a falhas: a capacidade do software de resistir (e recuperar) a falhas de componentes ou ambientais.
  • recuperabilidade: capacidade de trazer de volta um sistema com falha para a operação completa, incluindo conexões de dados e rede.
KeesDijk
fonte
6

Objetivo: escrever um programa para adicionar dois números

Confiável, mas instável:

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

Estável, mas não confiável:

add(a,b):
    if randomInt mod 5 == 0: 
        print a+a
    else
        print a+b
Gort the Robot
fonte
Esta definição está incorreta. Não é assim que os termos são realmente usados ​​no setor.
Federico
2

No contexto da avaliação de bibliotecas, os termos significam coisas completamente diferentes.

Uma biblioteca confiável é aquela que faz seu trabalho sem falhas intermitentes.

Uma biblioteca estável é aquela que não muda muito.

Sebastian Redl
fonte
Estou surpreso ao ver tantas respostas que interpretam estáveis ​​como "não travam". Para mim, o primeiro significado é de fato "não mudou muito por algum tempo", não está mais em movimento. A coisa que não está mais travando pode ser algo que vem junto, mas a estabilidade não se refere principalmente ao comportamento do software.
Martin Maat
0

Estabilidade e confiabilidade são coisas diferentes no desenvolvimento de software, no entanto, ambos são usados ​​como termos irmãos :)

Concordo com alguns comentários anteriores mencionados e gostaria de adicionar meus 2 centavos.

Confiabilidade é a extensão em que um experimento, teste ou qualquer procedimento de medição produz o mesmo resultado em ensaios repetidos.

Confiabilidade de estabilidade (às vezes chamada de teste, confiabilidade de re-teste) é o acordo de instrumentos de medição ao longo do tempo. Para determinar a estabilidade, uma medida ou teste é repetido nos mesmos assuntos em uma data futura. Os resultados são comparados e correlacionados com o teste inicial para fornecer uma medida de estabilidade.

Mais referências sobre este tópico são fornecidas:

EL Yusubov
fonte
0

Na minha opinião, "confiabilidade" significa que você tem uma noção dos limites do sistema. Você pode, com confiança, dizer que "fornecemos o tempo de resposta X no décimo sexto percentil" (quanto maior o X, melhor, obviamente).

A estabilidade, por outro lado, é apenas uma medida de disponibilidade. "Se você tentar conectar-se ao nosso serviço, ele estará lá pelo menos X% das vezes".

Vatine
fonte
0

Confiável, mas não estável :

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

Estável, mas não confiável :

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