Define-se dependabilidade [80], segurança de funcionamento, ou ainda confiança no funcionamento [69], como a qualidade do serviço liberado, tal que confiança possa ser justificadamente depositada neste serviço. Esta qualidade será avaliada quantitativamente nesta Tese, através dos critérios de confiabilidade, disponibilidade e segurança, os quais associados aos critérios de mantenabilidade, segurança contra intrusão, integridade e confidencialidade, definem os atributos de um sistema dependável [13], conforme a Figura 1.1.
2.4.1 Principais Conceitos e Taxonomia
Através da Figura 1.1 pode-se observar que a dependabilidade de um sistema computacional sofre ameaças através das falhas, erros e defeitos. As falhas podem ser caracterizadas por meio de alguns critérios significativos [30][80][13][58], os quais são mostrados de um modo sucinto na Figura 2.5.
Figura 2.5 Definição das classes de falhas
As falhas devidas a componentes de hardware são de natureza física, enquanto as falhas dos componentes de software de um sistema são devido a erros na especificação, projeto e implementação, uma vez que os componentes de software não sofrem mudanças funcionais devido a interações externas ou envelhecimento [68]. A falha é dita latente, quando não produz um erro e é dita ativa, quando um erro é produzido como conseqüência de sua ação, por meio de desvio do estado desejado, pela violação do valor atribuído ao estado ou da transição entre estados. As diversas classificações de erro [80][13][58] estão relatadas de um modo conciso na Figura 2.6.
Figura 2.6 Classificação de erros
A propagação do erro dentro de um sistema conduz a um defeito. As possibilidades de erros que conduzem a defeitos do sistema são funções dos diferentes modos de falha. Defeitos são gerados quando o serviço liberado não está de acordo com o serviço que foi estabelecido durante a especificação. Defeitos podem ser caracterizados, de acordo com as diversas possibilidades de falha do produto, no que se conceitua chamar modos de falha (failure modes). As diferentes ocorrências de defeitos, que geram serviços incorretos, podem ser caracterizadas de acordo com a Figura 2.7.
Falhas, erros e defeitos são mecanismos destrutivos que tentam impedir o correto funcionamento de um sistema em função de uma sucessão de eventos indesejáveis [58]. Meios de proteção são estabelecidos para evitar que tais mecanismos alterem o comportamento de um sistema, ou ainda, que o sistema possa liberar o serviço especificado mesmo na presença desses mecanismos. Várias são as maneiras de se representar os diferentes meios para obtenção de dependabilidade.
Figura 2.8 Meios para obtenção e validação da dependabilidade de um sistema A representação descrita em [68] é particularmente interessante, pois divide estes meios, quanto à sua obtenção e quanto à sua validação, conforme mostrado na Figura 2.8. 2.4.2 Meios de Validação de Dependabilidade
I. remoção de falhas: é realizada durante as fases de desenvolvimento (especificação e design), produção e operacional de um sistema. Para cada fase, diferentes técnicas poderão ser utilizadas. O processo de remoção de falhas durante a fase de desenvolvimento de um sistema consiste em três etapas distintas: Detecção de falhas, localização de falhas e remoção de falhas. As formas de diagnosticar as falhas podem ser do tipo diagnóstico retrospectivo, cujo objetivo é a determinação das causas que levaram o sistema a um defeito, ou diagnóstico preditivo, cujo objetivo é determinar quando a falha ocorrerá [126]. A remoção de falhas durante a operação de um sistema poderá ser realizada por meio de manutenção corretiva, preventiva e evolutiva [80][58]. Quanto a troca dos componentes defeituosos por componentes novos, a manutenção de equipamentos eletrônicos, em especial sistemas computacionais ou de telecomunicações, poderão ser do tipo reparo a quente, sem a necessidade de parada do equipamento ou reparo a frio, quando o sistema é colocado fora de serviço.
II. previsão de falhas: são técnicas utilizadas para avaliação do comportamento do sistema com respeito a ocorrência de falhas ou ativação. As avaliações podems ser de dois tipos:
• avaliações qualitativas: cujo objetivo é identificar, classificar, escalonar os modos de falha , ou a combinação de eventos que conduziria o sistema a defeitos. Os métodos usados para este tipo de avaliação são os modos de falha e análise de efeito;
• avaliações quantitativas: cujo objetivo é avaliar em termos probabilísticos o grau em que os atributos de dependabilidade de um sistema, são satisfeitos.
Estes atributos são definidos como as medidas de dependabilidade do sistema. Os métodos usados podem ser cadeias de Markov e redes de Petri estocásticas, no caso desta Tese, EDSPN.
Caso deseje-se realizar os dois tipos de análises através de um único método, utilizam-se os diagramas de blocos de confiabilidade, as árvores de falha, ou as redes de Petri estocásticas.
2.4.3 Meios de Obtenção de Dependabilidade
I. prevenção de falhas: os meios de prevenção de falhas estão associados a técnicas de controle de qualidade, empregadas durante as diversas fases de um sistema de hardware e software, de modo a evitar ou reduzir a ocorrência de falhas. A modularização dos sistemas de hardware e software, a blindagem contra interferências eletromagnéticas e o isolamento térmico contra elevação de temperatura, além de uma interface amigável com o usuário, são algumas das técnicas utilizadas;
II. tolerância a falhas: esta abordagem, mais realista, parte do pressuposto que falhas ocorrerão apesar de todas as medidas preventivas que vierem a ser tomadas, e que o sistema deve liberar um serviço correto mesmo na presença de falhas [6]. É geralmente implementada por detecção de erro e subsequente recuperação do sistema.
• As detecções de erro que originam uma mensagem ou um sinal dentro do sistema podem ser de duas classes distintas:
i. detecção de erros concorrentes, ocorre em paralelo à liberação do serviço;
ii. detecção de erros preemptivas, ocorrem com a interrupção da liberação do serviço;
• O processo de recuperação restaura o sistema afetado por erros e falhas para um estado livre destas condições indesejáveis. A recuperação pode ser por manipulação de erros (error handling), de falhas (fault handling) ou fault
masking:
i. error handling: elimina erros do sistema por meio de retorno (roolback)
a um estado armazenado antes da ocorrência do erro, denominado
chekpoint, ou por meio de avanço (rollforward) a um novo estado;
ii. fault handling: evita que falhas localizadas possam ser novamente
ativadas. Esta solução envolve quatro passos: a) localização ou diagnóstico da falha (localização da falha e tipo); b) isolamento da falha por meio de exclusão física ou lógica dos componentes em falha; c) reconfiguração do sistema pela comutação de componentes redundantes ou redistribuição de tarefas entre os componentes ativos; d) reinicialização do sistema que atualiza a nova configuração do sistema e atualiza tabelas e registros.
iii. fault masking (mascaramento de falha): a recuperação neste caso ocorre
quando o número de componentes redundantes é suficiente para permitir a recuperação, sem detecção explícita do erro.
Apesar de todas as precauções estabelecidas nas estratégias anteriores, falhas ainda permanecerão no sistema, seja pelo fato de não terem sido devidamente detectadas e tratadas, seja pelo fato de terem surgido naturalmente no sistema. Diferentemente dos meios de prevenção de falhas e de remoção de falhas, a estratégia de tolerância a falhas age sobre os efeitos e não sobre as causas. Sistemas tolerantes a falhas possibilitam uma significativa redução de custos de manutenção pelo aumento da disponibilidade do sistema. Tolerância a falhas está baseada nas técnicas de redundância e tem por finalidade evitar o aparecimento de defeitos, e não o de corrigir as causas dos erros. Os mecanismos de tolerância a falhas conseguem incrementar a confiabilidade de um sistema até um nível desejado quando atuam em conjunto com as técnicas de prevenção, predição e remoção de falhas [78]. A incorporação de elementos redundantes a um sistema pode ocorrer de várias formas [70]:
• redundância de hardware: consiste na replicação dos recursos de hardware de um sistema;
• redundância de software: consiste na utilização de variantes [81][82] das rotinas de software de um sistema, as quais devem obedecer a uma mesma especificação;
• redundância de informação: consiste na adição de bits extras de informação além daqueles requeridos para a implementação de uma dada função;
• redundância temporal: consiste na adição de um tempo adicional para a execução das funções de um sistema de modo permitir a detecção de falhas; As técnicas de redundância utilizadas para dispositivos de hardware podem ser dos seguintes tipos:
• redundância estática, ou passiva: realiza tolerância a falhas sem a necessidade de detecção de qualquer falha. Para isso utiliza módulos extras de hardware com o objetivo de mascarar o efeito dos módulos falhos;
• redundância dinâmica, ou ativa: requer ações de detecção e recuperação de falhas, por meio da troca do módulo falho pelo módulo redundante em espera.
• redundância híbrida: combina as soluções de redundância estática e dinâmica nas ações de detecção e recuperação de falhas.
2.4.4 Atributos de Dependabilidade
Atributos são critérios de dependabilidade de um sistema de modo que confiança possa ser justificadamente depositada nos serviços liberados por este sistema. Os atributos de um sistema dependável são os seguintes:
• confiabilidade (Reliability): é a probabilidade condicional que um sistema tenha sobrevivido em um ambiente especificado até um tempo t, dado que ele estava
operacional em um tempo 0 [58]. Pode-se definir ainda como a continuidade do serviço correto de um sistema [80];
• disponibilidade (Availability): é a probabilidade que um sistema funcione corretamente em um tempo t, sabendo-se que ele estava em funcionamento correto no tempo inicial [58]. É ainda definido como a prontidão do sistema para um serviço correto [80];
• segurança (Safety): é a probabilidade de ausência de falhas do sistema cujas conseqüências externas sejam catastróficas [58]. Pode-se definir ainda como a ausência de conseqüências catastróficas sobre os usuários e o ambiente externo ao sistema [80];
• mantenabilidade (Maintainability): é uma medida da habilidade do sistema de submeter-se a reparos, pela supressão da falha presente, e de permitir modificações, pela adição de novas funcionalidades ou pela melhoria das já existentes [80][58];
• segurança contra intrusão (Security): é uma medida da prevenção de acesso não autorizado e/ou manipulação da informação [80][58];
• confidencialidade (Confidentiality): é uma medida da ausência de divulgação não autorizada da informação [80][58];
• integridade (Integrity): é uma medida da não ocorrência de alterações impróprias da informação [58], ou segundo [80], é uma medida da ausência de alterações impróprias do estado do sistema.