Processo de Engenharia de Software III
Confiabilidade de Software
Tania Fatima Calvi Tait
Confiabilidade de software
Roteiro de apresentação:
Conceito de confiabilidade
Medidas de confiabilidade e disponibilidade
Modelos de confiabilidade
Dimensões da confiança do software
Confiabilidade
Desempenho e confiança
Razões para a confiabilidade de software
Disponibilidade
Segurança
Proteção
Sistemas críticos
Sistema crítico de segurança
Sistema crítico de missão
Sistema crítico de negócios
Confiabilidade de software
Confiabilidade
de software
pode
ser
medida e estimada
usando
usando
dados históricos e
de desenvolvimento
Confiabilidade de software
DEFINIÇÃO:
Em termos estatísticos, a confiabilidade de software é definida como:
“a probabilidade de operação livre de falhas de um programa de
computador num ambiente específico durante determinado tempo”
(Musa et al, 1987 in Pressman (1995).
aborrecimentos
Falhas
catastrofes
Não conformidade aos requisitos de software
Confiabilidade de software
Métricas de confiabilidade:
Tempo médio de ocorrência de falhas
Tempo médio até a ocorrência de falhas
Tempo médio de reparo
Taxa de ocorrência de falha.
Probabilidade de falha sob demanda
Disponibilidade
Classificação geral
Métrica do
número de falhas
do sistema
Métricas de tempo
ou número de
transações
Tempo gasto para
reparar ou
reiniciar o sistema
Confiabilidade de software
Medidas de confiabilidade e disponibilidade de software
MTBF = MTTF + MTTR
MTBF – tempo médio de ocorrência de falhas
(mean time between failure)
MTTF – tempo médio até a ocorrência de falha
(mean time to failure)
MTTR – tempo médio de reparo
(mean time to repair)
Disponibilidade =
MTTF
--------------------------- x 100%
(MTTF + MTTR)
Confiabilidade de software
Probabilidade de falhas sob demanda (POFOD):
A probabilidade de o sistema falhar quando um pedido de serviço é feito.
Uma POFOD de 0,0001 significa que um entre mil pedidos de serviços
pode resultar em falha.
POFOD – probability of failure on demand
Taxa de ocorrência de falha (ROCOF):
A frequência com que um comportamento inesperado pode ocorrer.
Uma ROCOF de 2/100 significa que duas falhas têm possibilidade de
ocorrer em cada cem unidade operacionais de tempo. Essa medida=
Intensidade de falhas.
ROCOF – Rate of failure occurrence
Confiabilidade de software
Modelos de confiabilidade de software
1) Modelos que prevêm a confiabilidade como uma função cronológica
(calendário)
2) Modelos que prevêm a confiabilidade como uma função do tempo
de processamento transcorrido( tempo de execução da CPU).
Confiabilidade de software
Dimensões da confiança do software
confiança
disponiblidade
A capacidade do sistema
disponibilizar serviços
quando necessário
confiabilidade
... disponibilizar
serviços
conforme
especificado
segurança
...operar sem
falhas
catastróficas
proteção
...se proteger
contra invasão
acidental ou deliberada
Fonte: (Sommerville, 2003)
Confiabilidade de software
Dimensões da confiança do software: confiabilidade
Refletindo...
“altos níveis de confiança de software somente podem ser
alcançados à custa do desempenho do sistema”
Confiabilidade de software
Um software confiável inclui:
Código extra (redundante; para verificar os estados excepcionais
do sistema e para possibilitar a recuperação necessária a partir
das falhas do sistema)
Aumento da capacidade de armazenamento
X
Redução do desempenho
Confiabilidade de software
Razões pelas quais a confiança é um atributo importante:
1. Sistemas não confiáveis (não apresentam segurança ou
são inseguros) não são utilizados;
2. Os custos de falhas em um sistema podem ser enormes;
3. É difícil readequar a confiança;
4. Frequentemente é possível compensar a falha de desempenho do
sistema;
5. Sistemas não confiáveis podem causar a perda das informações.
Confiabilidade de software
A confiabilidade do produto de software é influenciada pelo
processo de software utilizado para desenvolver o produto.
Um processo orientado no sentido de evitar defeitos poderá
desenvolver um sistema confiável.
Confiabilidade de software
Dimensões da confiança do software: disponibilidade
Disponibilidade: é a probabilidade de um sistema, em determinado
instante, ser operacional e fornecer os serviços requeridos.
A confiabilidade implica a disponibilidade – se um serviço
especificado não for prestado, o sistema não estará se
comportando de acordo com sua especificação.
Confiabilidade de software
A disponibilidade não depende do sistema em si,
mas do tempo necessário para reparar os defeitos
que tornam o sistema indisponível.
Exemplo: sistema A falha uma vez por ano e leva 3 dias para reiniciar;
Sistema B falha uma vez por mês e leva 3 minutos para reiniciar.
Qual a maior disponibilidade? Qual o preferido?
Confiabilidade de software
A confiabilidade é comprometida com a ocorrência de falhas no sistema.
Abordagens complementares para melhorar a confiabilidade de um
sistema:
1. Evitar defeitos; (técnicas de desenvolvimento)
2. Detecção e exclusão de defeitos; (técnicas de verificação e validação)
3. Tolerância a defeitos (técnicas de tolerância a falhas)
Confiabilidade de software
Terminologia da confiabilidade
Termo
Descrição
Falha do sistema
Um evento que ocorre em algum momento,
quando o sistema não fornece o serviço como
é esperado por seus usuários.
Erro do sistema
Comportamento errôneo do sistema, quando o
comportamento do sistema não atende à sua
especificação.
Defeito do sistema
Um estado incorreto do sistema, ou seja, um
estado do sistema que é inesperado para seus
projetistas.
Erro ou engano humano
Comportamento humano que resulta na
introdução de defeitos no sistema.
Confiabilidade de software
Os defeitos de software causam falhas de software quando o código
com defeito é executado com um conjunto de entradas que expõem
o defeito.
Conjunto de entradas
Ie
Entradas que
causam saídas
errôneas
programa
Saídas errôneas
Oe
Conjunto de saídas
Confiabilidade de software
Dimensões da confiança do software: segurança
A segurança de um sistema é um atributo que reflete a
capacidade do sistema de operar normal e anormalmente,
sem ameaçar as pessoas ou o ambiente.
Quando a segurança é um atributo essencial de um sistema crítico,
esse sistema é “um sistema de segurança crítica”.
Exemplos:
Sistemas de controle de aeronaves;
Sistemas de controle de processos em indústrias químicas;
Confiabilidade de software
Controle de hardware e controle de software: complexidade
Exemplo: monitoramento de aeronaves militares avançadas
Confiabilidade de software
Classes de softwares críticos de segurança:
Software crítico de segurança primária
Esse é um software que é embutido como um controlador em
um sistema. A disfunção desse software pode causar uma
disfunção de hardware, o que resulta em ferimentos em
pessoas ou dano ambiental.
Software crítico de segurança secundária
Esse é um software que pode indiretamente resultar em
ferimentos. Exemplo: banco de dados de um médico –
erro pode resultar em dose errada de medicamento.
Confiabilidade de software
A confiabilidade e a segurança do sistema estão relacionadas,
mas são atributos de confianças distintos.
Os sistemas que apresentam tolerância a defeitos não são
necessariamente seguros.
Confiabilidade de software
Razões pelas quais os sistemas de software que são confiáveis
não são necessariamente seguros:
1. A especificação pode estar incompleta, pelo fato de não descrever
o comportamento exigido do sistema em algumas situações
críticas; (dificuldades com requisitos).
2. As disfunções de hardware podem fazer com que o sistema se
comporte de maneira imprevisível e apresentar o software em
um ambiente não previsto.
3. O operador do sistema pode gerar entradas que não são
individualmente corretas, que, em determinadas situações, podem
levar a uma disfunção do sistema. (mecânico e software para levantar
trem de aterrissagem)
Confiabilidade de software
Chaves para garantir a segurança:
1. Evitar o perigo;
2. Detectar e eliminar o perigo; (válvula de alívio)
3. Limitar o prejuízo. (extintores de incêndio automáticos)
Confiabilidade de software
Dimensões da confiança do software: proteção
A proteção de um sistema é uma avaliação do ponto em
que o sistema protege a si mesmo de ataques externos.
Exemplo: ataque por vírus; uso não autorizado de serviços do sistema;
modificação não autorizada do sistema ou de seus dados.
Sem um nível razoável de proteção, a disponibilidade, a
confiabilidade e a segurança do sistema poderão ser
comprometidos, se ataques externos provocarem algum dado
ao sistema.
Confiabilidade de software
Erros no desenvolvimento de um sistema podem levar
a falhas na proteção.
Exemplo de fraquezas:
Sistema não responde a entradas inesperadas;
Seus limites não são verificados
Alto nível de proteção:
Sistemas militares;
Sistemas de comércio eletrônico;
Sistemas de processamento e intercâmbio de informações
confidenciais.
Confiabilidade de software
Danos provocados por ataques externos:
1. Interrupção de serviço;
afeta a disponibilidade do sistema.
2. Corrupção de programas ou dados;
afeta a confiabilidade e a segurança.
3. Revelação de informações confidenciais;
afeta a disponibilidade e a confiabilidade.
Confiabilidade de software
Para assegurar a proteção de um sistema:
1. Evitar a vulnerabilidade;
Não conexão a uma rede pública.
2. Detectar e neutralizar ataques;
Verificador de vírus.
3. Limitar a exposição.
Cópias regulares do sistema e política de gerenciamento de
configuração.
Confiabilidade de software
Uso da Internet
Mais conexões
Mais facilidade de ataques
Atributo relacionado ao uso da Internet: sobrevivência.
É a capacidade de um sistema continuar a prestar serviços
enquanto sob ataque e, potencialmente, parte do sistema
está incapacitada.
Confiabilidade de software
Abordagens para assegurar a proteção de um sistema:
Resistência a ataques;
Reconhecimento de um ataque;
Recuperação a partir dos danos provocados pelo ataque..
Confiabilidade de software
Confiabilidade de software
Tipos de sistemas críticos:
Sistema crítico de segurança
Um sistema cuja falha pode resultar em ferimentos,
na perda de uma vida ou em grande dano ambiental.
Exemplo: sistema de controle de fábrica de produtos químicos.
Sistema crítico de missão
Um sistema cuja falha pode resultar na falha de alguma
atividade orientada a metas.
Exemplo: sistema de navegação de aeronaves.
Sistema crítico de negócios
Um sistema cuja fábrica pode resultar no fracasso dos negócios
que utilizam o sistema.
Exemplo: sistema de contas de cliente de um banco.
Confiabilidade de software
Componentes dos sistemas que estão sujeitos a falhas:
Hardware de sistema
erros de fabricação
final de sua vida útil
Software de sistema
enganos na especificação, projeto ou implementação
Operadores humanos
falhar ao operar o sistema
Confiabilidade de software
Classificação das falhas
Classe de falha
Descrição
Transiente
Ocorre somente com algumas
entradas.
Permanente
Ocorre com todas as entradas.
Recuperável
O sistema pode se recuperar sem a
intervenção do operador.
Irrecuperável
É necessário a intervenção do
operador para a recuperação a partir
da falha.
Não corruptível
A falha não corrompe o estado do
sistema ou seus dados.
Corruptível
A falha corrompe o estado do sistema
ou seus dados.
Confiabilidade de software
Especificação de confiabilidade para um caixa eletrônico
(fonte: Sommerville, 2003)
Classe de
falha
Exemplo
Métrica de
confiabilidade
Permanente, não
corruptível
O sistema falha ao operar com
qualquer cartão que seja inserido.
O software deve ser reinicializado
para corrigir a falha.
ROCOF
A ocorrência/ 1000 dias
Transiente, não
corruptível
Os dados da fita magnética não
ROCOF
podem ser lidos em um cartão sem 1 em 1000 transações
defeito que tenha sido inserido.
Transiente,
corruptível
Um padrão de transações na rede
causa a corrupção do banco de
dados.
Não quantificável Nunca
deve acontecer no tempo de
vida útil do sistema.
Confiabilidade de software
Especificação da
segurança – ciclo de
vida de segurança
da norma IEC
61508
Derivação de
Definição de
conceito e escopo
Análise de perigos
e riscos
Alocação de
requisito de
segurança
Requisito de
segurança
Planejamento
Validação O&M Instalação
Desenvolvimento de Recursos de redução
sistemas relacionados
de risco externo
Com a segurança
Validação
da segurança
Instalação e
ativação
Operação e
manutenção
Desativação do
sistema
Confiabilidade de software
Especificação de proteção
1.
2.
3.
4.
5.
Identificação e avaliação de ativos (dados e programas);
Análise de ameaças e avaliação de riscos;
Atribuição de ameaças;
Análise de tecnologia;
Especificação dos requisitos de proteção.
Padrões de gerenciamento de proteção estão em desenvolvimento.
Confiabilidade de software
Referências bibliográficas:
Pressman, Roger. Engenharia de Software.,
São Paulo Makron Books,:1995.
Tradução: José Carlos Barbosa dos Santos.
Sommerville, Ian. Engenharia de software. 6a.ed.,
São Paulo: Addison Wesley, 2003.
Download

Confiabilidade de software