Buscar

Confiabilidade de Software

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Confiabilidade de Software
Apresentação
O desenvolvimento de sistemas exige que sejam seguidas especificações a fim de garantir o 
funcionamento do sistema conforme as expectativas dos projetistas e usuários. A confiabilidade 
dos sistemas é uma característica essencial para que seja mantida a qualidade do desenvolvimento 
dos sistemas.
Nesta Unidade de Aprendizagem, você verá de forma detalhada as características que envolvem a 
confiabilidade de software e que devem ser seguidas pelos desenvolvedores. Você também irá 
estudar o conceito relacionado à dimensão de confiança de software, e, ainda, poderá conferir um 
exemplo de aplicação.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Conceituar confiabilidade de software.•
Descrever a dimensão de confiança de software.•
Aplicar os níveis de confiança de software.•
Desafio
As métricas de confiabilidade são utilizadas para especificar a probabilidade de ocorrência de falha 
em um sistema quando este estiver em uso no ambiente especificado. Ou seja, é um método de 
quantificar quantas falhas podem ocorrer em um determinado número de transações de um 
sistema.
Existem duas métricas importantes para especificar a confiabilidade, e também mais uma métrica 
utilizada para especificar os atributos de confiabilidade do sistema. Essas métricas se chamam 
POFOD, ROCOF e AVAIL.
Imagine que você faz parte de uma equipe que está atuando no projeto de atualização de um 
sistema de transações imobiliárias. Seu trabalho será extrair informações que permitam a definição 
da POFOD, ROCOF e AVAIL. Explique quais informações subsidiam essas métricas.
Infográfico
São quatro as principais propriedades referentes à confiança de software. Essas quatro 
propriedades devem representar os requisitos de confiança e nortear os desenvolvedores durante 
o processo de desenvolvimento dos sistemas.
No Infográfico a seguir, veja as quatro principais propriedades relacionadas à confiança de 
software.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/4fcd1858-ab8d-40da-b8e1-83aca54e3e35/9d0fad72-a964-443d-8932-2989f7ef1fbe.jpg
 
Conteúdo do livro
O desenvolvimento de sistemas deve ter como uma de suas premissas a confiabilidade no software. 
Lembre-se que a especificação dos requisitos de confiança de um software é importante nesse 
contexto, pois norteia os desenvolvedores no processo de elaboração dos sistemas.
No capítulo Confiabilidade de software, da obra Qualidade de Software, você terá a oportunidade de 
conhecer melhor os conceitos relacionados com a confiabilidade de software. Além disso, no 
capítulo é apresentada uma aplicação dos conceitos estudados.
Boa leitura.
QUALIDADE DE 
SOFTWARE
Ramiro Córdova Júnior 
Confiabilidade de software
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
  Conceituar confiabilidade de software.
  Descrever a dimensão confiança de software.
  Aplicar os níveis de confiança de software.
Introdução
Pode-se dizer que o ciclo completo de vida de um sistema compreende 
duas fases importantes: o desenvolvimento do sistema e sua operação. A 
confiabilidade de software se refere ao desenvolvimento de um software 
confiável, ou seja, seus conceitos são tratados amplamente na fase de 
desenvolvimento.
Neste capítulo, você terá a oportunidade de estudar os conceitos que 
permeiam a confiabilidade de software, principalmente no que se refere 
às dimensões de confiança de software.
Confiabilidade de software
O software deve estar disponível sempre que necessário, bem como operar 
adequadamente, com segurança e confi abilidade, sem quaisquer efeitos co-
laterais adversos ou preocupações de segurança. É essencial que o software 
utilizado em sistemas críticos seja confi ável, pois a consequência de uma 
falha (por exemplo, a falha em uma usina nuclear) pode resultar em um dano 
massivo, que poderá signifi car a perda de vidas.
De acordo com o ANSI (1991), a confiabilidade de software é definida como 
a probabilidade de um software operar sem falhas por um período de tempo 
específico em um ambiente específico. Embora a confiabilidade de software 
seja definida como uma função probabilística e venha a sugerir uma noção de 
tempo, devemos observar que, diferentemente da confiabilidade de hardware 
tradicional, a confiabilidade de software não é uma função direta do tempo. 
Peças eletrônicas e mecânicas podem se tornar “velhas” e desgastadas com o 
tempo e o uso, mas o software não enferruja ou se desgasta durante seu ciclo 
de vida. O software não será alterado com o tempo, a menos que seja alterado 
ou atualizado intencionalmente.
Costumava-se acreditar que o software nunca se danificava. Intuitivamente, 
ao contrário de peças mecânicas, como parafusos, alavancas ou peças ele-
trônicas, como transistores e capacitores, o software permanecerá no mesmo 
estado, a menos que haja problemas no hardware que alterem o conteúdo do 
armazenamento ou o caminho dos dados. O software não envelhece, enfer-
ruja, desgasta, deforma ou racha. Além disso, o software não tem forma, cor, 
material ou massa, mas tem um papel crucial no funcionamento dos sistemas.
A confiabilidade do software é um atributo importante para a qualidade 
do software, juntamente com a funcionalidade, a usabilidade, o desempenho, 
a capacidade de manutenção, a instalabilidade e a capacidade de manutenção 
e documentação. A confiabilidade é difícil de atingir, porque a complexidade 
do software tende a ser alta. Embora em qualquer sistema com alto grau de 
complexidade seja difícil alcançar certo nível de confiabilidade, os desen-
volvedores de sistemas tendem a empurrar a complexidade para a camada de 
software. Como exemplos de tendências nesse sentido, temos que:
  as aeronaves de última geração terão mais de um milhão de linhas de 
código-fonte de software a bordo;
  os sistemas de controle de tráfego aéreo da próxima geração conterão 
entre um e dois milhões de linhas;
  a próxima estação espacial internacional terá mais de dois milhões de 
linhas a bordo e mais de dez milhões de linhas de software de suporte 
terrestre;
  vários sistemas de defesa críticos terão mais de cinco milhões de linhas 
de software.
Embora a complexidade do software esteja inversamente relacionada à 
confiabilidade do software, ela está diretamente relacionada a outros fato-
res importantes na qualidade do software, especialmente funcionalidade e 
capacidade. A ênfase nesses recursos tende a adicionar mais complexidade 
ao software.
As falhas de software ocorrem devido a erros, ambiguidades, descuidos ou 
interpretações errôneas da especificação do software, descuido ou incompe-
tência ao escrever o código, testes inadequados, uso incorreto ou inesperado 
do software, ou outros problemas não previstos. É comum fazer uma analogia 
Confiabilidade de software2
entre confiabilidade de software e confiabilidade de hardware, mas software 
e hardware têm características básicas que os tornam diferentes quanto aos 
mecanismos de falha. As falhas de hardware são principalmente falhas físicas, 
enquanto as falhas de software são falhas de projeto, que são mais difíceis 
de se detectar, classificar e corrigir. As falhas de projeto estão intimamente 
relacionadas a fatores humanos diversos e às fases do projeto mais complexas, 
conforme Lyu (1995).
Com o passar do tempo, o hardware exibe as características de falha 
mostradas na Figura 1, conhecidas como a curva da banheira. Nessa curva, é 
possível identificar o período de vida útil do hardware ao longo do tempo. Já 
a confiabilidade do software não possui as mesmas características; uma curva 
de software possível é apresentada na Figura 2, se projetarmos a confiabilidade 
do software nos mesmos eixos.
Existem duas grandes diferenças entre as curvas de hardware e software. 
Uma diferença é que, na última fase, osoftware não tem uma taxa de falhas 
crescente, como acontece com o hardware. Nessa fase, o software está se 
aproximando da obsolescência, e não fazem sentido quaisquer atualizações 
ou alterações no software. Portanto, a taxa de falha não será alterada. A 
segunda diferença é que, na fase da vida útil, o software sofrerá um aumento 
drástico na taxa de falhas cada vez que uma atualização for feita. A taxa de 
falha é desativada gradualmente, em parte devido aos defeitos encontrados e 
corrigidos após as atualizações.
Figura 1. Taxa de falhas de hardware ao longo do tempo.
Fonte: Adaptada de Ribeiro (2011, documento on-line).
Tempo
Vida útil
Falhas
prematuras
Fim da
vida útil
Ta
xa
 d
e 
fa
lh
a
3Confiabilidade de software
Figura 2. Taxa de falhas de software ao longo do tempo.
Fonte: Adaptada de Hartz e Walker (1996). 
Tempo
Ta
xa
 d
e 
fa
lh
a
λ
Testes Vida útil Obsolência
U
pg
ra
de
U
pg
ra
de
U
pg
ra
de
Segundo Avizienis, Laprie e Randell (2001), são três os fatores que afetam 
a confiabilidade de sistemas: 
1. falta;
2. erro;
3. falha.
A falta é conhecida como defeito ou bug e é considerada em estado dor-
mente até a sua ocorrência. Um exemplo comum de falta é a declaração de 
uma variável como tipo incorreto; nesse caso, a falta só ocorrerá quando essa 
variável for acessada. A falta pode ser a causa de um erro, que é um estado 
interno do sistema que causará uma falha perceptível de alguma forma. A 
falha ocorre quando é entregue um resultado diferente do esperado. A Figura 
3 apresenta a cadeia fundamental da dependabilidade, que é definida pela 
relação entre falta, erro e falha.
Figura 3. Cadeia fundamental da dependabilidade.
Fonte: Adaptada de Avizienis, Laprie e Randell (2001).
... ...Falta
Ativação
Erro
Propagação
Falha
Causação
Falta
Confiabilidade de software4
Dimensão confiança 
A confi ança em um sistema de computador está relacionada com o quanto o 
usuário acredita no funcionamento de um sistema, baseado no que espera em 
termos de comportamento do mesmo. O grau de confi ança pode ser expresso 
como sendo “não confi ável”, “muito confi ável” e “ultra confi ável”, conforme 
aponta Sommerville (2008).
No contexto de confiança de software, existem quatro principais dimensões 
relacionadas com a dependabilidade:
1. disponibilidade;
2. confiabilidade;
3. segurança;
4. proteção.
A dimensão disponibilidade se refere à probabilidade de o sistema estar em 
funcionamento, entregando os serviços conforme as solicitações dos usuários. 
Em um sistema que possui sua disponibilidade semanal definida como sendo 
0,999, significa que, durante uma semana, o mesmo estará em perfeito fun-
cionamento durante 99,9% do tempo. A disponibilidade de um sistema deve 
ser estabelecida conforme o ambiente de utilização e suas finalidades, pois 
quando é mensurada para um determinado cenário, é precipitado acreditar que, 
em um cenário com características diferentes, a disponibilidade será idêntica.
A confiabilidade está diretamente relacionada com a disponibilidade; 
porém, é importante definir qual é a prioridade para o desenvolvimento de um 
sistema. A confiabilidade se refere à probabilidade de entrega dos resultados de 
um sistema tal qual sua especificação. No que diz respeito à confiabilidade, é 
de extrema importância a exatidão na definição, pois, no caso de especificações 
incorretas ou incompletas, os desenvolvedores terão dificuldades, pelo fato 
de não serem especialistas no domínio do sistema.
Essas duas dimensões podem ser expressas em termos quantitativos. Em 
algumas situações, é possível colocar a disponibilidade de um sistema junta-
mente com a confiabilidade, pois, quando um sistema não está disponível, por 
exemplo, ele também não está fornecendo os serviços especificados. Porém, é 
possível haver sistemas com baixa confiabilidade, mas disponíveis. Contanto 
que as falhas de sistema sejam rapidamente reparadas e não causem danos 
aos dados, a baixa confiabilidade pode não ser um problema em alguns casos.
A dimensão segurança reflete a habilidade do sistema em operar nor-
malmente ou não, sem o perigo de causar grandes prejuízos gerados por 
5Confiabilidade de software
falhas catastróficas a pessoas ou ambientes. É extremamente importante que 
a segurança de software seja considerada, pois cada vez mais os sistemas 
incorporam controles baseados em software. A segurança deve assegurar que 
não ocorram acidentes e que as consequências catastróficas sejam minimizadas. 
Esses objetivos podem ser alcançados de três maneiras:
1. Prevenção de perigos: fundamenta-se na concepção do sistema baseado 
na minimização de riscos. 
2. Detecção e remoção de perigos: a concepção do sistema tem como 
premissas a detecção e a remoção dos perigos antes da ocorrência.
3. Limitação de danos: os sistemas devem incluir recursos de proteção 
que minimizem os danos quando os mesmos surgirem.
A dimensão de proteção se refere à realização de análises do sistema, no 
sentido de definir se o mesmo pode resistir às tentativas de intrusões, aciden-
tais ou deliberadas. Em alguns casos, esta é a dimensão mais importante da 
confiança de um sistema, como sistemas militares, de comércio eletrônico e 
de transações bancárias. 
No que diz respeito a custos, os mesmos tendem a aumentar de maneira 
exponencial conforme o nível de confiança que se deseja alcançar. Isso ocorre 
devido ao uso de técnicas de desenvolvimento mais caras, além de o preço 
de hardware confiável também ser mais elevado. Além disso, a necessidade 
de realizar testes de validação para os clientes e órgãos reguladores também 
gera uma elevação nos custos, conforme Gama (2014). A Figura 4 apresenta 
a relação entre custo e confiança.
Confiabilidade de software6
Figura 4. Curva que representa o custo em função do nível de confiança.
Fonte: Sommerville (2008). 
Cu
st
o
Confiança
Baixa Média Alta Muito
alta
Super
alta
Além das quatro principais propriedades da dimensão confiança que já 
foram apresentadas, outras também podem ser definidas conforme mostrado 
a seguir.
  Reparabilidade: essa propriedade se refere à minimização de inter-
rupções causadas por falhas no sistema. Quando se tem acesso ao 
código-fonte de um sistema, é possível melhorar essa propriedade, pois 
será possível realizar as alterações necessárias.
  Manutenibilidade: refere-se à capacidade de realização de alterações no 
sistema, conforme os requisitos demandados pelos usuários. Ou seja, 
é a capacidade de realizar atualizações sem a ocorrência de erros e de 
modo que seja viável, do ponto de vista econômico.
  Capacidade de sobrevivência: principalmente nos sistemas para internet, 
esta é uma propriedade importante, pois se refere à capacidade de um 
sistema se manter em funcionamento durante um ataque, mesmo que 
seja sem todas as funcionalidades.
  Tolerância a erros: essa propriedade se refere à capacidade do sistema 
em evitar falhas oriundas de entradas erradas realizadas por usuários. 
Esses erros devem ser detectados e corrigidos ou informados.
7Confiabilidade de software
A especificação de confiabilidade de um sistema pode ser definida como 
um atributo mensurável, ou seja, pode ser acompanhada periodicamente por 
meio de medições relacionadas ao comportamento do sistema ao longo do 
tempo. Por exemplo, uma especificação de sistema pode ser a quantidade de 
reinicializações durante uma semana. Caso seja definido, nesse caso, que a 
quantidade de reinicializações seja duas vezes (no máximo) em uma semana, 
basta monitorar o sistema para verificar se a especificação está sendo cumprida. 
Caso não seja, é necessário avaliar a viabilidade de modificações no sistema, 
a fim de garantir a especificação de confiabilidade.
Os requisitos de funcionalidade podem ser de dois tipos: funcionais e não 
funcionais. Os requisitos não funcionais são quantitativos e definem a quan-
tidade de falhas aceitável ou o número de paradas permitido. Já os requisitos 
funcionais se referem aos defeitos toleráveis do sistema,garantindo que os 
mesmos não se tornem falhas.
Existem três métricas de confiabilidade utilizadas:
1. POFOD (probability of failure on demand): essa métrica especifica a 
confiabilidade a partir da probabilidade de falha sob demanda. É mais 
indicada para casos em que uma falha sob demanda possa causar uma 
falha geral do sistema.
2. ROCOF (rate of occurrence of failures): é a taxa de ocorrência de 
falhas em um determinado período. Essa métrica é mais indicada para 
situações em que existem demandas regulares no sistema.
3. AVAIL (availability): essa métrica se refere à probabilidade de o sistema 
operar com o surgimento de demandas. 
A utilização da redundância e diversidade de hardware, de processos de 
software e de sistemas de software é essencial para o desenvolvimento de 
sistemas confiáveis. As arquiteturas de sistemas confiáveis podem ser de 
diferentes estilos, como sistemas de proteção, arquiteturas de automonitora-
mento, programação multiversão e diversidade de software.
A arquitetura de sistemas de proteção é baseada no monitoramento do 
ambiente de modo independente. Conforme as observações dos sensores, 
o sistema de proteção pode ser ativado para um determinado processo ou 
equipamento. Um bom exemplo é um sistema de controle de tráfego de trens, 
que, ao detectar que o trem cruzou por um sinal vermelho, ativa o processo 
de desaceleração do trem.
As arquiteturas de sistemas de automonitoramento, como o próprio nome 
diz, funcionam com o próprio sistema realizando monitoramento baseado em 
Confiabilidade de software8
cálculos. Caso seja detectada alguma falha, o próprio sistema deve realizar 
alguma ação de solução. Esse tipo de arquitetura é indicado para sistemas 
em que a confiabilidade é mais importante do que a disponibilidade. Como 
exemplo, pode-se citar um sistema de tratamento e diagnóstico médico, em que 
uma resposta incorreta pode levar a um diagnóstico ou tratamento inadequado. 
As arquiteturas de sistema baseadas em programação multiversão (N-
-version) utilizam como estratégia o desenvolvimento realizado por várias 
equipes. As diferentes versões do sistema geradas são executadas separada-
mente, em computadores diferentes. As saídas são comparadas e, quando forem 
inconsistentes, são rejeitadas. Nesse caso, outras versões do sistema deverão 
estar disponíveis, a fim de encontrar duas versões com resultados consistentes.
Todas as arquiteturas citadas anteriormente são baseadas na diversidade de 
software, ou seja, em processos de implementação independentes. Estes têm 
como base o fato de que os erros não serão comuns; sendo assim, os sistemas 
não falharão ao mesmo tempo e da mesma forma. 
Aplicação da dimensão confiança 
Para que seja aplicada a dimensão confi ança no contexto de desenvolvimento 
de sistemas, vamos utilizar como exemplo o sistema de controle da bomba de 
insulina, apresentado por Sommerville (2008). A bomba de insulina é utilizada 
por diabéticos para medir a glicose do sangue, utilizando um microssensor 
que calcula a dose necessária para a metabolização da glicose. A Figura 5 
apresenta o modelo de fl uxo de dados para um sistema como este.
Figura 5. Fluxo de dados do sistema da bomba de insulina.
Fonte: Adaptada de Gama (2014, documento on-line). 
Sangue Sensor de
açúcar no
sangue
Parâmetros
de sangue Nível de açúcar
no sangue
Análise
do açúcar
no sangue
Controlador
de liberação
de insulina
Cálculo de
insulina
necessária
Insulina
necessária
Comandos
de controle
de bombaInsulina
Bomba de
insulina
9Confiabilidade de software
Nesse contexto, os requisitos de confiança do sistema são:
  a disponibilidade do sistema consiste na liberação de insulina sempre 
que for requisitada;
  é imprescindível a confiança na quantidade liberada de insulina pelo 
sistema;
  não poderão ser liberadas doses excessivas de insulina pelo sistema.
Do ponto de vista das quatro principais propriedades da dimensão con-
fiança, deve-se ter:
1. Disponibilidade: o sistema deve funcionar sempre que for solicitado, 
conforme os horários e rotinas dos hospitais que realizam o tratamento 
por meio do sistema.
2. Confiabilidade: o sistema deve fornecer sempre as doses corretas de 
insulina, conforme as especificações definidas no projeto do sistema.
3. Segurança: o sistema não poderá liberar doses inadequadas de insulina, 
pois isso é uma potencial ameaça de vida.
4. Proteção: o sistema deve garantir que não ocorra uma programação 
indevida do sistema; como esse sistema não opera em rede, não é alvo 
de ataques de hackers.
Para esse sistema de controle da bomba de insulina, as dimensões confia-
bilidade, disponibilidade e segurança são as mais importantes, pois, sempre 
que o sistema for requisitado, deverá estar em funcionamento. A adminis-
tração das doses de insulina deve ser precisa, a fim de evitar problemas que 
podem até deixar um paciente em estado de coma. A proteção também deve 
ser considerada, pois, caso o sistema venha a ser sabotado, isso se dará via 
acesso físico ao equipamento — por exemplo, com o desligamento de algum 
cabo. Nesse caso, os sensores do sistema devem parar imediatamente o seu 
funcionamento, a fim de evitar que sejam administradas doses erradas de 
insulina ou que ocorra alguma outra anomalia.
Do ponto de vista da reparabilidade e manutenibilidade, o sistema da bomba 
de insulina deverá permitir que sejam realizadas atualizações no sistema, 
com o objetivo de restringir a possibilidade de falhas que possam vir a causar 
interrupções. Essas atualizações podem ser demandadas pelos especialistas 
ou pelos desenvolvedores, caso eles detectem uma possibilidade de melhoria 
na performance do sistema ou uma correção de falhas.
Confiabilidade de software10
No que se refere à capacidade de sobrevivência do sistema de bomba de 
insulina, como o mesmo não funciona conectado à internet ou à rede local, 
esta acaba sendo uma propriedade irrelevante. Já a propriedade de tolerância 
a erros deve garantir que, caso ocorram entradas fora de contexto, como doses 
de insulina não convencionais nos tratamentos, sejam gerados alarmes que 
possam corrigir ou informar o operador do sistema.
Pode-se considerar esse software para controle da bomba de insulina como 
um sistema crítico de segurança primária, pois a ocorrência de falhas pode 
causar danos significativos aos usuários. Em um sistema crítico, é impres-
cindível que todos os perigos envolvidos com a utilização do sistema sejam 
conhecidos e sejam contemplados na especificação de confiabilidade. Com 
base nos perigos elencados para o desenvolvimento de sistemas críticos de 
segurança, como o da bomba de insulina, são desenvolvidos sistemas capazes 
de monitorar as condições perigosas que podem causar falhas.
ANSI/IEEE. STD-729. Standard glossary of software engineering terminology. New Jersey: 
ANSI/IEEE, 1991.
AVIZIENIS, A.; LAPRIE, J.; RANDELL, B. Fundamental concepts of dependability. Newcastle 
upon Tyne: University of Newcastle upon Tyne, 2001.
GAMA, K. Sistemas críticos. Recife: Universidade Federal de Pernambuco, 2014. Dis-
ponível em: <http://www.cin.ufpe.br/~kiev/IF682/03_SistemasCriticos.pdf>. Acesso 
em: 4 fev. 2019.
HARTZ, M.; WALKER, E. Introduction to software reliability: a state of the art review. [S.l.]: 
The Center, 1996. 
LYU, M. R. Handbook of software reliability engineering. New York: McGraw-Hill, 1995.
RIBEIRO, R. A. Planejamento e controle. 2011. Disponível em: <https://pcmusina.wordpress.
com/category/planejamento-e-controle/>. Acesso em: 4 fev. 2019.
SOMMERVILLE, I. Engenharia de software. 8. ed. São Paulo: Pearson Prentice Hall, 2008.
11Confiabilidade de software
Conteúdo:
Dica do professor
A confiabilidade de um sistema é a sua capacidade de fornecer serviços conforme especificado. A 
realização de testes é importante para que seja possível verificar se os requisitos de confiabilidade 
estão de acordo.
Esta Dica do Professor aborda algumas características importantes do teste de software para 
confiabilidade.
Apontea câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/5afefeea578aa73f8e57fd0b2a87a419
Exercícios
1) Os custos relacionados à implementação e à validação de um sistema com a confiança elevada 
tendem a ampliar significativamente, como pode ser observado na figura abaixo. Analisando o 
relacionamento entre custo e confiança, referente aos benefícios de melhorias, é possível afirmar 
que:
A) Quando o software não é muito confiável, é possível obter melhorias mais significativas com 
menores investimentos. 
B) Quando o software é muito confiável, é possível obter melhorias mais significativas com 
menores investimentos. 
C) Os custos de melhoria não têm relação com os benefícios de melhorias.
D) Os benefícios de melhorias são maiores quando os custos de melhoria são maiores. 
E) Os benefícios de melhorias são mais visíveis quando a confiança do sistema já é muito alta.
A dimensão confiança contém algumas propriedades que são utilizadas para definição das 
especificações de confiança de sistemas. Imagine um sistema cuja função é controlar a 
venda de passagens de metrô via Internet. Esse sistema exige constantes atualizações com o 
2) 
objetivo de agilizar as transações de compras de tickets, além de manter as transações mais 
seguras para os usuários.
A capacidade de realizar as atualizações sem tirar o sistema de funcionamento se refere a 
qual propriedade da dimensão confiança?
A) Disponibilidade.
B) Proteção.
C) Manutenibilidade.
D) Tolerância a erros.
E) Segurança.
3) A disponibilidade é uma importante propriedade relacionada à confiança de software e pode 
ser expressa numericamente. Quando está especificada a disponibilidade de um software de 
vendas que será comercializado para diferentes clientes, qual é o cuidado que se deve ter?
A) Deve-se ter cuidado durante o treinamento para garantir a mesma disponibilidade. 
B) Deve-se ter cuidado com o cenário onde será utilizado o software para especificar a 
disponibilidade.
C) Deve-se analisar detalhadamente as especificações de confiabilidade para depois definir a 
disponibilidade.
D) Deve-se manter a disponibilidade sempre acima de 0,999.
E) Deve-se realizar inúmeros testes com um único cliente a fim de definir a disponibilidade.
4) Existem três métricas de confiabilidade utilizadas para especificar a probabilidade de uma 
falha de sistema ocorrer. Uma delas permite definir o provável número de falhas de sistema 
observadas em um determinado período, como, por exemplo, uma hora. Qual é o nome 
dessa métrica?
A) ROCOF.
B) POFOD.
C) AVAIL.
D) MTTR.
E) N-VERSION.
5) O desenvolvimento de sistemas críticos, como, por exemplo, um sistema para caixa 
eletrônico de banco, exige confiabilidade elevada. Um problema como a violação dos dados 
de clientes do banco afeta a confiabilidade do sistema. Levando em consideração as quatro 
principais propriedades de confiança, qual dimensão é afetada neste exemplo específico?
A) Confiabilidade.
B) Disponibilidade.
C) Segurança.
D) Proteção.
E) Segurança de redes.
Na prática
A teoria que aborda a confiabilidade de software enfatiza que existe muita confusão entre 
disponibilidade e confiabilidade. A disponibilidade se refere à probabilidade de o sistema estar ativo 
e funcional para fornecer os serviços quando requisitado. No entanto, a confiabilidade é a 
probabilidade de o sistema fornecer os serviços conforme definido na especificação do sistema.
Veja, Na Prática, como dimensionar disponibilidade e confiabilidade. 
Saiba +
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor:
Engenharia de confiabilidade de software: um mapeamento 
sistemático
Esta dissertação de mestrado apresenta uma aplicação prática do conceito de engenharia de 
confiabilidade de software.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Sensibilidade a variações de perfil operacional de dois modelos 
de confiabilidade de software baseados em cobertura
Esta dissertação de mestrado avalia, por meio de um experimento, o comportamento de dois 
modelos de confiabilidade de software que se baseiam na informação de cobertura do código: 
“Modelo Binomial Baseado em Cobertura” (MBBC) e “Modelo de Falhas Infinitas Baseado em 
Cobertura” (MFIBC).
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Engenharia de software
Neste livro, leia para saber mais sobre a confiabilidade de software aplicada à engenharia de 
software.
Conteúdo interativo disponível na plataforma de ensino!
https://repositorio.ufu.br/bitstream/123456789/12593/1/EngenhariaConfiabilidadeSoftware.pdf
https://1library.org/document/qor6000q-sensibilidade-variacoes-operacional-modelos-confiabilidade-software-baseados-cobertura.html

Outros materiais