Você está na página 1de 80

Instituto de Computao, Unicamp MO409 Introduo Engenharia de Software 2009.1 Prof. Dra.

Eliane Martins

Validao de Sistemas Crticos

Injeo de Falhas
Carlos Alberto Carvalho Daniel Carlos Guimares Pedronette

Roteiro
Validao de Sistemas Crticos [Som06] Motivao do Uso de Injeo de Falhas [Hsu97,Lem01] Conceitos e Definies [Hsu97,Lem01,ACC93] Injeo de Falhas e Mecanismos de Tolerncia a Falhas [Hsu97,Lem01,ACC93] Uma Tcnica de Injeo de Falhas e Uso da Ferramenta Jaca [MMM05] Aplicao ao Estudo de Caso Concluses Referncias

Validao de Sistemas Crticos


Validao e verificao para sistemas em geral uma atividade muito importante, mas para sistemas crticos exige ateno ainda maior, pois custos e conseqncias relacionadas com a falha so muito mais altos.
Uma das maneiras de efetuar a validao de sistemas atravs da tcnica de injeo de falhas. Esta tcnica tem por objetivo inserir falhas artificiais em um sistema para acelerar o surgimento de erros e defeitos.
[Som06]
3

Motivao
Sistemas computacionais desempenham papel essencial na atividade humana; Dependabilidade torna-se uma caracterstica importante; Mecanismos de Tolerncia a Falhas provem meio para alcanar dependabilidade; Como avaliar a dependabilidade de um sistema? Como testar a tolerncia a falhas?
4

Motivao
Avaliaes de dependabilidade envolvem estudo de falhas e erros; Injeo de Falhas permite a insero de falhas e a observao do comportamento do sistema nessas situaes. Injeo de Falhas uma abordagem que tem sem mostrado eficiente para testar tais sistemas.
5

Motivao
[MMM05] afirmam que a injeo de falhas acelera o aparecimento de erros e defeitos; [Som06] lembra dos impactos do custo de uma falha em sistema crtico e a perda da confiana no sistema pelo usurio, ressaltando a importncia da validao de sistemas crticos; [Lem01] relata que a injeo de falhas prtica muito popular e enumera vrias ferramentas. Como a tcnica simula a falha e permite a observao do comportamento, ela consegue fazer o sistema captar as falhas. Se ele no conseguir tratar a falha, o erro detectado e corrigido; [ACC93] apontam a tcnica de injeo de falhas como um mecanismo que permite a validao com o objetivo de remover e prevenir falhas.
6

Conceitos e Definies
Falha (fault): componente de software ou hardware que apresenta comportamento anmalo dentro do sistema. Erro (error): uma falha do sistema durante um processamento leva a uma modificao do estado do sistema. Esse estado denominado erro. Defeito (failure): tendo a falha levada a um erro, o erro far com que o sistema apresente um defeito. O defeito indica que o servio oferecido no est de acordo com o especificado.

Falha

Erro

Defeito
[Lem01], [Lap95]
7

Conceitos e Definies
Injeo de Falhas por Simulao:
Utilizada em fase de projeto;

Injeo de Falhas por Hardware:


Falhas originadas de um hardware especial; Alteraes de nveis lgicos, suprimento, etc.

Injeo de Falhas por Software:


Falhas injetadas a nvel de software Sistema Operacional e Aplicaes
8

Conceitos e Definies
Injeo de Falhas por Software:
Vantagens:
No preciso usar o hardware onde o sistema ir rodar; Mais fcil de monitorar; Portvel; Facilmente adaptvel a outros tipos de falhas; Baixo custo de desenvolvimento (comparado a hardware); No h risco de danificar o sistema;

Desvantagens:
Se o modelo de falhas no bem definido por dar resultados pouco significativos.

Conceitos e Definies
Uma arquitetura genrica para injeo de falhas

[Hsu97]

10

Injeo de Falhas e Mecanismos de Tolerncia a Falhas FTAMs: Fault tolerance algorithms and mechanisms [ACC93]. FTAMs utilizados com sucesso para dependabilidade. Mtodos para avaliar eficincia das FTAMs:
Injeo de falhas
Aumentando a ocorrncia de erros, pode-se testar as FTAMs em relao as suas prprias entradas: as falhas que se pretende tolerar.
11

Injeo de Falhas e Mecanismos de Tolerncia a Falhas


Mtodo para avaliao de dependabilidade:
Baseado em injeo de falhas Ligao entre:
Avaliao experimental do processo de tolerncia a falhas; Processo de ocorrncia de falhas.

12

Injeo de Falhas e Mecanismos de Tolerncia a Falhas Aborda ambas as dimenses de validao das FTAMs:
Remoo de falhas: reduzir, por meio de verificaes, a presena de falhas nas FTAMs; Previso de falhas: avaliar a eficincia do comportamento das FTAMs.

13

Injeo de Falhas e Mecanismos de Tolerncia a Falhas Utilizar experimentos para estimar cobertura dos mecanismos de tolerncia a falhas; Estimativas relacionadas s taxas de ocorrncia e ativao de falhas:
Podem ser utilizadas para derivar medidas gerais de dependabilidade do sistema.

14

Injeo de Falhas e Mecanismos de Tolerncia a Falhas


[ACC03] propem a avaliao de mecanismos de tolerncia a falhas utilizando a injeo de falhas. Uma seqncia de testes de injeo de falhas, que sero submetidos ao mecanismo de tolerncia a falhas, formada por dois domnios:

Domnio de Entrada; Domnio de Sada;

15

Injeo de Falhas e Mecanismos de Tolerncia a Falhas Domnio de Entrada:


Conjunto F: falhas injetadas (faults); Conjunto A: especifica os dados utilizados na ativao (activation);

Domnio de Sada:
Conjunto R: comportamento do sistema na presena de falhas (readouts); Conjunto M: medidas (measures) derivadas da anlise e processamento dos conjuntos FAR;
16

Injeo de Falhas e Mecanismos de Tolerncia a Falhas Conjuntos FARM


Principais atributos para caracterizar a seqncia de testes utilizando injeo de falhas;

Seqncia de Testes de Injeo de Falhas


Sries de experimentos, em que cada um deles especifica um ponto particular do espao
{F x A x R}
17

Injeo de Falhas e Mecanismos de Tolerncia a Falhas Seqncia de Testes de Injeo de Falhas


Para maior confiabilidade das estimativas necessrio grande nmero de experimentos; Visando minimizar o vis das estimativas recomendado que a seleo dos conjuntos F e A utilizem amostragem estatstica.

18

Injeo de Falhas e Mecanismos de Tolerncia a Falhas Resultados do conjunto R caracterizam o estado do sistema:
Abstrao da especificao do comportamento dos FTAMs Pode ser representado em um grafo.

19

Injeo de Falhas e Mecanismos de Tolerncia a Falhas


Transies:
1. 2. 3. 4. 5. 6. 7. Ativao da falha injetada como um erro (fault dormancy); Falha no ativada; Deteco do erro (latency of error detection); Erro tolerado apesar de no ter sido detectado; Falha no mecanismo de deteco; Mecanismo normal: erro detectado e tolerado; Falha no mecanismo de tolerncia;
[ACC93]

20

Uma Tcnica de Injeo de Falhas e Uso da Ferramenta Jaca A ferramenta Jaca consegue inserir as falhas sem a necessidade de acesso ao cdigo fonte, utilizando o bytecode. Escolhendo certas classes do sistema que tem poder de impactar outras classes possvel minimizar a quantidade de testes de validao (os erros podem se propagar)
[MMM05]

21

Uma Tcnica de Injeo de Falhas e Uso da Ferramenta Jaca


Escolha das classes alvo: organizar as classes para mapear as dependncias entre elas, como uma classe afeta a outra (cadeias affects) ou como afetada (cadeias affected-by); Determinar os modos de defeito: baseado nas cadeias affects e affected-by e utilizando os parmetros de entrada das classes, valores retornados das classes e valores de entrada e sada dos componentes que fazem fronteira com essas classes;

[MMM05]

22

Uma Tcnica de Injeo de Falhas e Uso da Ferramenta Jaca


Determinar os valores para injetar: valores com capacidade de gerar erros, como por exemplo, strings com valor muito grande ou valores numricos vizinhos ao limite mximo aceito. Determinar as sadas esperadas: executando o sistema em condies normais, as sadas corretas devem ser comparadas com os resultados gerados sob insero de falhas. Montar o grafo de resultados experimentais:pode-se contabilizar as situaes em que o sistema percebeu a falha e consegui se recuperar ou em situaes em que o defeito se manifestou mesmo com o mecanismo de tolerncia funcionando. [MMM05]
23

Aplicao ao Estudo de Caso


Apresentao do Estudo de Caso
Viso Geral Fluxo de Compra Validao Carto de Crdito (WebServices/MTF) Execuo Sem Falhas

Modelo de Falhas Ferramenta Jaca


Experimento de Injeo de Falhas

SVBFaultInjector
Projeto e Implementao Experimento de Injeo de Falhas
Falhas Permanentes Falhas Intermitentes

24

Apresentaa do Estudo de Caso


Viso geral do estudo de caso:
SVB Sistema de Venda de Bilhetes Venda de Bilhetes para diversos tipos de espetculos Emisso de Bilhete Eletrnico on-line. Pagamento com Boleto e Carto de Crdito. Integrao com Operadora de Carto de Crdito utilizando WebServices.

25

Apresentao do Estudo de Caso


SVB Sistema de Venda de Bilhetes
Arquitetura: Arquitetura em Camadas Arquitetura SOA

Foco no Pagamento por Carto Crdito


Valida por meio de WebServices Mecanismo de Tolerncia a Falhas Injeo de Falhas
26

Viso Lgica

27

Viso Fsica
Apache Tomcat

Apache Derby

28

Fluxo de Compra

29

Fluxo de Compra

30

Fluxo de Compra

31

Validao de Carto de Crdito


Camada de Integrao
WebServices Padro de Projeto Wrapper

Mecanismo de Tolerncia a Falhas


WebServices redundantes
WSValidaCartao1; WSValidaCartao2 Implementao por Mock

Monitor Broker

32

Mecanismo de Tolerncia a Falhas

[GT07]
33

Mecanismo de Tolerncia a Falhas

34

Camada de Integrao

35

Mecanismo de Tolerncia a Falhas

36

Mecanismo de Tolerncia a Falhas

37

Execuo sem Falhas


Aps Viso Geral do Estudo de Caso:
Execuo Sem Falhas Execuo do Fluxo de Compra
Interaes com a Camada Web (Mock) Interaes com a Camada de Persistncia Interaes com a Camada de Integrao
WebServices Mecanismo de Tolerncia a Falhas

38

Execuo sem Falhas

39

Execuo sem Falhas

40

Modelo de Falhas Estudo de Caso


Local
Inicializao dos WebServices
Configurao do WSDL Location

Tipo de Falhas
Permanentes
Em um dos WebServices

Intermitentes
Nos dois servios segundo uma dada probabilidade para cada WebService
41

Modelo de Falhas Estudo de Caso


Injeo de Falhas

42

Ferramenta JACA
Ferramenta desenvolvida em Java para injeo de falhas; Reflexo computacional; Utilizao para injeo de falhas em alto nvel: a nvel da linguagem de programao (bytecode), sem intervenes em Assembly; Padro de Projeto Fault Injector
43

Padro: Fault Injector

[LM01]

44

Ferramenta Jaca
Conceitos:
Gerais: Nome do Projeto, Classe de Execuo, ClassPath, etc. Fault Set: Define os conjuntos de falhas geradas (atributos/mtodos), tipo de falha, etc. Monitor: Define as classes que sero monitoradas Campaign: Define uma execuo dada pela relao entre FaultSets x Monitors. Golden Run: Execuo sem Falhas. Documentao: Guia do Usurio, Problemas Comuns

45

Ferramenta JACA

46

Ferramenta JACA

47

Ferramenta JACA

48

Ferramenta JACA

49

Resultados Obtidos
Interao com Interface funcionando: OK; Load das classes do Pacote de Negcio: OK; Problema ao carregar classe do Pacote de Persistncia; Logs
Monitor Campaign Exception
50

Resultados Obtidos - Logs


SVBCampaignReport.csv

SVBMonitorReport.csv

51

Resultados Obtidos - Logs

52

Resultados Obtidos - Logs

53

SVBFaultInjector
Injetor de Falhas para o Sistema de Venda de Bilhetes Implementao do padro Fault Injector
Com algumas simplificaes

Utilizao de Aspectos
Interceptar mtodo e Alterar parmetro JBoss AOP

54

SVBFaultInjector

55

SVBController

56

SVBInjector
JBoss AOP (jboss-aop.xml)

Execuo (ant build.xml)

57

SVBInjector

58

SVBInjector

59

Experimentos de Injeo de Falhas


Definio de 4 Experimentos:
100 execues do Fluxo de Compra

Experimento 0:
Sem Injeo de Falhas Golden Run

Experimento 1:
Falha Permanente
WebService 2: 100%

MTF (Monitor): 2 tentativas


60

Experimentos de Injeo de Falhas


Experimento 2:
Falha Intermitente
WebService 1: 50 % WebService 2: 50 %

MTF (Monitor): 2 tentativas

Experimento 3:
Falha Intermitente
WebService 1: 50 % WebService 2: 50 %

MTF (Monitor)*: 4 tentativas

61

Experimento 0: Golden Run


Experimento 0:
Golden Run 100 Execues do Fluxo de Compra

62

Experimento 0: Golden Run

63

Experimento 1: Falha Permanente


Experimento 1:
Falha Permanente WebService 2 100 execues do Fluxo de Compra

64

Experimento 1: Falha Permanente

65

Experimento 1: Falha Permanente


0%

F
0%

100%

E
0%

100%

D
0%

100%

Experimentos no significativos

Failure

Predicados: F: Fault; E: Error; D: Detection; T: Tolerance


66

Experimento 1: Falha Permanente


Resultados:
WebService 1 - OK: WebService 2 - OK: 100% 0%

Total de Requisies WS: 399 Total de Requisies WS - OK: 200 (50,1%)

Compra OK:

100%

67

Experimento 2: Falha Intermitente


Experimento 2:
Falha Intermitente WebService 1: 50% WebService 2: 50 % MTF (Monitor): 2 tentativas

68

Experimento 2: Falha Intermitente

n > 2 tentativas

69

Experimento 2: Falha Intermitente


0%

F
22%

78%

E
0%

78%

D
38%

40%

Experimentos no significativos

Failure

Predicados: F: Fault; E: Error; D: Detection; T: Tolerance


70

Experimento 2: Falha Intermitente


Resultados:
WebService 1 - OK: WebService 2 - OK: 54,5% 47,8%

Total de Requisies WS: 268 Total de Requisies WS - OK: 137 (51,1%)

Compra OK:

62%

71

Experimento 2: Falha Intermitente

72

Experimento 3: Falha Intermitente*


Experimento 3:
Falha Intermitente WebService 1: 50% WebService 2: 50 % MTF (Monitor): * 4 tentativas

73

Experimento 3: Falha Intermitente*

74

Experimento 3: Falha Intermitente*


0%

F
35%

65%

E
0%

65%

D
16%

49%

Experimentos no significativos

Failure

Predicados: F: Fault; E: Error; D: Detection; T: Tolerance


75

Experimento 3: Falha Intermitente*


Resultados:
WebService 1 - OK: WebService 2 - OK: 51,4% 51,4%

Total de Requisies WS: 346 Total de Requisies WS - OK: 178 (51,4%)

Compra OK:

84%

76

Experimento 3: Falha Intermitente*

77

Concluses
Injeo de Falhas uma tcnica poderosa
Amplo horizonte de aplicaes em validao de sistemas crticos; Possvel utilizao em cenrios em que outras tcnicas dificilmente seriam aplicveis;

Injeo de Falhas no uma tcnica trivial


A definio dos experimentos e a anlise dos resultados deve ser cuidadosa; A construo/operao de ferramentas exige considervel conhecimento tcnico;
78

Referncias
[ACC93] J. Arlat, A. Costes, Y. Crouzet, J.-C. Laprie and D. Powell, Fault Injection and Dependability Evaluation of Fault-Tolerant Systems, IEEE Transactions on Computers, vol. 42, no.8, pp.913-923, 1993. [GT07] D.Z.G. Garcia, M.B.F. de Toledo. A Fault Tolerant Web Service Architecture. 5th IEEE Latin American Web Congress, 2007. [Hsu97] M.-C. Hsueh, T. K. Tsai, R. K. Iyer Fault Injection Techniques and Tools, 1997. [Lap95] J.-C. Laprie, B. Randell,H. Kopetz, B. Littlewood. Dependability - Its Attributes, Impairments and Means. Predictability, Dependable Computing Systemns, pginas 3-18, Springer, Berlim, Alemanha, 199. [Lem01] N. G. M. Leme. Um Sistema de Padres para Injeo de Falhas por Software. Dissertao de Mestrado. Unicamp, Campinas, Brasil, 2001. [LM01] N.G. M. Leme, E. Martins, C. M. F. Rubira, A Software Fault Injection Pattern System. 8th Conference on Pattern Languages of Programs, September 11-15, 2001, Monticello, Illinois, USA. 2001. [MMM05] R.L.O. Moraes, E. Martins, N.V. Mendes. Fault injection approach based on dependence analysis. In: Computer Software and Applications Conference, 2005. COMPSAC 2005. 29th Annual International, pp.181- 188, 2005.

79

Injeo de Falhas

Dvidas? Comentrios?
Obrigado!

80

Você também pode gostar