confiabilidade de software tania fatima calvi tait processo de engenharia de software iii
TRANSCRIPT
Confiabilidade de SoftwareConfiabilidade de Software
Tania Fatima Calvi Tait
Processo de Engenharia de Software III
Confiabilidade de software
Roteiro de apresentação:
Conceito de confiabilidadeMedidas de confiabilidade e disponibilidadeModelos de confiabilidadeDimensões da confiança do software
Confiabilidade Desempenho e confiançaRazões para a confiabilidade de software
DisponibilidadeSegurançaProteção
Sistemas críticosSistema crítico de segurançaSistema crítico de missãoSistema crítico de negócios
usandousando
Confiabilidade de software
Confiabilidade de software
medida e estimadadados históricos e de desenvolvimento
pode ser
Confiabilidade de software
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).
DEFINIÇÃO:
Falhas
aborrecimentos
catastrofes
Não conformidade aos requisitos de software
Confiabilidade de software
Métricas de confiabilidade:
Tempo médio de ocorrência de falhasTempo médio até a ocorrência de falhasTempo médio de reparo
Taxa de ocorrência de falha.Probabilidade de falha sob demanda
Disponibilidade
Métrica donúmero de falhas do sistema
Métricas de tempoou número de transações
Tempo gasto parareparar oureiniciar o sistema
Classificação geral
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 deocorrer 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 tempode processamento transcorrido( tempo de execução da CPU).
Confiabilidade de software
Dimensões da confiança do software
confiança
disponiblidade confiabilidade segurança proteção
Fonte: (Sommerville, 2003)
A capacidade do sistema disponibilizar serviços quando necessário
... disponibilizar serviços conformeespecificado
...operar sem falhascatastróficas
...se proteger contra invasãoacidental ou deliberada
Confiabilidade de software
“altos níveis de confiança de software somente podem ser alcançados à custa do desempenho do sistema”
Refletindo...
Dimensões da confiança do software: confiabilidade
Confiabilidade de software
Um software confiável inclui:
Código extra (redundante; para verificar os estados excepcionaisdo sistema e para possibilitar a recuperação necessária a partirdas 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 ousã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 peloprocesso de software utilizado para desenvolver o produto.
Um processo orientado no sentido de evitar defeitos poderádesenvolver um sistema confiável.
Dimensões da confiança do software: disponibilidade
Confiabilidade de software
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
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?
A disponibilidade não depende do sistema em si, mas do tempo necessário para reparar os defeitos que tornam o sistema indisponível.
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ódigocom defeito é executado com um conjunto de entradas que expõemo defeito.
Conjunto de entradas
Conjunto de saídas
programa
Ie
Oe
Entradas quecausam saídaserrôneas
Saídas errôneas
Dimensões da confiança do software: segurança
Confiabilidade de software
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áriaEsse é um software que é embutido como um controlador emum sistema. A disfunção desse software pode causar umadisfunção de hardware, o que resulta em ferimentos em pessoas ou dano ambiental.
Software crítico de segurança secundáriaEsse é um software que pode indiretamente resultar emferimentos. 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ãonecessariamente seguros.
Confiabilidade de software
Razões pelas quais os sistemas de software que são confiáveisnão são necessariamente seguros:
1. A especificação pode estar incompleta, pelo fato de não descrevero 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, podemlevar a uma disfunção do sistema. (mecânico e software para levantartrem 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)
Dimensões da confiança do software: proteção
Confiabilidade de software
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, aconfiabilidade e a segurança do sistema poderão ser comprometidos, se ataques externos provocarem algum dadoao sistema.
Confiabilidade de software
Erros no desenvolvimento de um sistema podem levara 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çõesconfidenciais.
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õesMais facilidade de ataques
Atributo relacionado ao uso da Internet: sobrevivência.
É a capacidade de um sistema continuar a prestar serviçosenquanto sob ataque e, potencialmente, parte do sistemaestá incapacitada.
Resistência a ataques;
Reconhecimento de um ataque;
Recuperação a partir dos danos provocados pelo ataque..
Confiabilidade de software
Abordagens para assegurar a proteção de um sistema:
Confiabilidade de software
Confiabilidade de software
Tipos de sistemas críticos:
Sistema crítico de segurançaUm 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ãoUm 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óciosUm sistema cuja fábrica pode resultar no fracasso dos negóciosque 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 sistemaerros de fabricaçãofinal de sua vida útil
Software de sistemaenganos na especificação, projeto ou implementação
Operadores humanosfalhar ao operar o sistema
Confiabilidade de software
Classificação das falhas
Classe de falha DescriçãoTransiente 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 podem ser lidos em um cartão sem defeito que tenha sido inserido.
ROCOF
1 em 1000 transações
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
PlanejamentoValidação O&M Instalação
Definição de conceito e escopo
Análise de perigose riscos
Desativação dosistema
Operação emanutenção
Instalação eativação
Validação da segurança
Derivação de Requisito de
segurança
Alocação de requisito de segurança
Desenvolvimento desistemas relacionados
Com a segurança
Recursos de reduçãode risco externo
Confiabilidade de software
Especificação de proteção
1. Identificação e avaliação de ativos (dados e programas);2. Análise de ameaças e avaliação de riscos;3. Atribuição de ameaças;4. Análise de tecnologia;5. 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.