ENGENHARIA CONFIABILIDADE DE SOFTWARE Rivalino Matias Jr. RIVALINO@K4B.COM.BR FEIT- UEMG - Outubro/2007
Agenda Contextualização; A Física da Falha de Software; Introdução à Engenharia de Confiabilidade de Software; Estudo de Caso Experimental; Considerações Finais.
Parte I Contextualização
Contextualização Introdução Importância do Software: Cada vez mais os processos da sociedade se tornam dependentes de sistemas computacionais; Em virtude desta dependência a confiabilidade destes sistemas é um atributo essencial; Falhas de software podem acarretar danos que variam de fatos irrelevantes até catastróficos; Ex. Therac-25, Ariane-5, Patriot.
Contextualização Introdução Caso Therac-25: De 1985 1987 seis pessoas foram inadequadamente expostas a níveis elevados de radiação durante seus tratamentos com o equipamento Therac-25; Três dos pacientes morreram; A causa do problema foi uma falha no software de controle do equipamento.
Contextualização Introdução Caso Ariane-5: Em 4 de junho de 1996 o foguete não tripulado Ariane 5 explodiu quarenta segundos após o seu lançamento. O custo do projeto foi de US$ 7 bilhões e o equipamento destruído de US$ 500 milhões; A causa do problema foi uma falha no software de controle inercial do foguete.
Contextualização Introdução Caso Patriot: 25 de fev. de 1991 (guerra do Golfo) uma bateria antiaérea Patriot falhou ao interceptar mísseis Sculd Iraquianos contra um acampamento do exército norte americano. Esta falha provocou a morte de 28 soldados. A causa do problema foi uma falha no software de controle do radar da bateria.
Contextualização Introdução Excel 2007: Falha descoberta em final de Setembro de 2007; Aparentemente qualquer fórmula que resulte em 65535 ou 65536 ocasiona em valores incorretos (MS Article ID 943075) Ex. =850*77.1 MS 2007 = 100.000 (Correto = 65535) Já foi disponibilizada a correção.
Contextualização Introdução A necessidade por maior confiança nos sistemas fez emergir o conceito de dependabilidade (ISO 9000-4); A dependabilidade é um dos aspectos da qualidade de um sistema computacional; Esta área se preocupa com a confiança no funcionamento dos sistemas (hardware e software); A dependabilidade de um sistema computacional é a habilidade deste sistema em fornecer um serviço no qual seu usuário pode, justificadamente, ter confiança no seu funcionamento.
Contextualização Introdução Árvore de Dependabilidade Dependabilidade Atributos Ameaças Meios Disponibilidade (availability) Confiabilidade (reliability) Segurança (safety) Integridade (integrity) Manutenibilidade (maintainability) Faltas (fault) Erros (error) Falhas (failure) Prevenção de faltas (fault prevention) Tolerância a faltas (fault tolerance) Remoção de faltas (fault removal) Previsão de faltas (fault forecasting) Fonte: Avižienis et al. (2004)
Parte II Física da Falha de Software
Taxonomia Falhas de Software Falha de software é uma das três ameaças à dependabilidade computacional: Falha (failure): é um evento que ocorre quando a função realizada pelo sistema não está de acordo com a correta especificação que foi definida para a sua execução; Erro (error): o desvio do serviço (entregue) em relação à sua correta especificação; Falta (fault): a suposta causa de um erro.
Física da Falha Falhas de Software Estes três elementos possuem uma relação causal denominada de cadeia fundamental da dependabilidade. Falta Ativação Erro Propagação Causação Falha Falta Após a ativação de uma falta, um erro pode se propagar entre os diversos componentes de um sistema antes de causar uma falha; A falha ocorrerá quando o erro for percebido pelo usuário do sistema como um desvio da função especificada.
Física da Falha Falhas de Software Propagaçã ção o do Erro Falta Interna Dormente Ativação Componente A Interface de Serviço Componente B Interface do Serviço Erro Propagação Erro Propagação Erro Propagação Erro de Entrada Propagação Erro Propagação Erro Falta Externa Status do Serviço do Componente A Serviço Correto Falha Serviço Incorreto Fronteira Status do Serviço do Componente B Serviço Correto Falha Serviço Incorreto
Classes de Faltas Faltas de Desenv. Faltas Físicas Faltas de Interação Faltas de Desenv. Faltas Operacionais Faltas Internas Faltas Externas Faltas Naturais Faltas Humanas Faltas de Hardware Faltas de Software Faltas Ñ Maliciosas Faltas Maliciosas Faltas Ñ Deliberadas Faltas Deliberadas Faltas Acidentais Faltas p/ Incomp. Faltas Permanentes Faltas Transientes 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Exemplos Bug de Software Bombas Lógicas Errata de Hardware Defeitos de Produção Deterioração Física Interferência Física Tentativas de Intrusão Vírus & Worms Erros de Entrada
Parte III Engenharia de Confiabilidade de Software: Introdução
Eng. de Confiabilidade de Software Definição Confiabilidade de Software é a probabilidade do software operar livre de falhas por um determinado tempo em um determinado ambiente. Ex: Um Sistema A tem confiabilidade de 0.92 (92%) por 8 horas quando atendendo uma carga de trabalho de até 70% de sua capacidade. A análise de confiabilidade envolve estudos quantitativos!
Eng. de Confiabilidade de Software Modelagem A modelagem e análise de confiabilidade de um sistema envolve diversos aspectos relacionados à: Tempos de operação (lifetime ou uptime); Tempos de Falha (failure times); Cargas de trabalho (workload profiles); Aspectos ambientais (environment)
Eng. de Confiabilidade de Software Funções Confiabilidade e Probabilidade de Falha: R(t) e F(t) Função Taxa de Falha - h(t) Tempo Médio até a Falha (MTTF = θ) h ( t) = θ = 0 f ( t) R( t) R( t) dt t R ( t) = 1 F( t) = 1 f ( t) dt
Eng. de Confiabilidade de Software Exemplos de Modelos p/ Confiabilidade de Software e suas categorias: Exponential: Musa (1975), Littlewood(1983), outros. Weibull: Schick-Wolverton(1973), Wagoner(1973), outros. Gamma: Moranda(1975),Yamada-Osaki(1983),outros.
Eng. de Confiabilidade de Software Outras categorias de modelos são comumente usadas: Pareto; Geometric; Inverse Linear; Logarithmic; Beta; Chi-square (χ 2 ) outros.
Qual a Confiabilidade de um sistema com um MTTF=500 horas após 24 horas de execução? Resposta: f ( t) = λ exp( λt), λ é a taxa de falha do sistema. R( t) = 1 F( t) = 1 f ( t) dt = exp( λt) 1 0 MTTF = λ t R( t) = 1 F( t) = 1 f ( t) dt = exp( λt) 0 t 24 R( 24 ) = exp = 0. 953 500
Exemplo de análise de Confiabilidade de um Sistema Servidor Web: f ( Τ) = β Τ γ η η β 1 e Τ γ η β 2,00 1,60 Probabi lity Density Function W eibull Data 1 W 3 MLE - SRM MED F= 50 / S=0 1,20 ) (t f f(t) 0,80 0,40 0 1781,00 1782,80 1784,60 1786,40 1788,20 1790,00 Time, (t) β=18,1092, η=3,8953, γ=1780,0444
Exemplo de análise de Confiabilidade de um Sistema Servidor Web: R( t) = 1 F( t) 1,0 R(t) with confidence intervals of 95% 0,9 0,8 0,7 Reliability R(t) 0,6 0,5 0,4 0,3 0,2 0,1 0,0 1783,4 1783,5 1783,6 1783,7 1783,8 1783,9 1784,0 1784,1 1784,2 1784,3 1784,4 T ime-to-fail t
Parte IV Estudo de Caso
Objetivo Estudo Experimental Este estudo experimental objetivou avaliar falhas causadas por degradação do software Apache Web Server; Pesquisas anteriores comprovaram a existência dos sintomas de degradação de memória neste produto; Este software atualmente detém o maior marketshare de servidores web do mundo; A infra-estrutura de grandes portais web, tais como Banco do Brasil, CNN, Terra, dentre outros, atualmente usam este software.
Metodologia Estudo Experimental A seleção da carga de trabalho foi baseada em trabalhos da literatura e de um projeto de experimentos (DOE) para identificar os fatores com maior influência sobre a degradação do servidor web; A variável monitorada (resposta) foi o consumo de memória principal do servidor web; A estratégia de experimentação considerou um projeto fatorial 2 k ; Os resultados apontaram o tamanho de página como um dos fatores com maior influência sobre a degradação da memória.
Metodologia Estudo Experimental A partir dos resultados do DOE adotou-se como principal fator de estresse o tamanho de página; Para a realização dos ensaios definiu-se o seguinte plano experimental: Plano tradicional c/ 3 níveis de estresse; Aplicação da carga de estresse de forma constante.
Resultados Estudo Experimental Consumo de memória para os três cenários: Degradação da memória do servidor httpd size increase (MB) 500 400 300 200 S3 S2 S1 100 0 0 5 10 15 20 25 30 35 num ber Lotes of de requests 1650 requisições (in cycles) D f
Resultados Estudo Experimental No nível de estresse S3 foi possível obter os tempos de falha; Nos demais níveis foi necessário o ajuste de um modelo de regressão não-linear para estimar os tempos de pseudo-falha; Como resultado foram obtidos 8 tempos de falha e 16 tempos de pseudo-falha.
Resultados Estudo Experimental A amostra de dados foi utilizada para a obtenção da função densidade de probabilidade - f(x) O modelo mais adequado neste caso foi baseado na distribuição Lognormal: f ( Τ) = β Τ γ η η β 1 e Τ γ η β
Estudo Experimental Função Confiabilidade R(t) 1 Reliability vs Time 0.80 Reliability 0.60 0.40 0.20 0 0 4000 8000 1.2E+4 1.6E+4 2.0E+4 Time (cycles)
Estudo Experimental Confiabilidade vs. Superfície de Estresse Tamanho de páginas
Considerações Finais A grande e crescente dependência da sociedade moderna em relação aos Sistemas Computacionais exige destes sistemas um alto nível de confiabilidade; A Engenharia de Software tem papel fundamental na busca por sistemas mais confiáveis, pois oferece o rigor e o formalismo necessários aos processos de desenvolvimento; A responsabilidade dos profissionais que projetam e desenvolvem sistemas computacionais é tão grande ou maior em relação àqueles que operam tais sistemas.
Obrigado pela Atenção! Rivalino Matias Jr. RIVALINO@K4B.COM.BR