Sistemas Críticos: Confiabilidade e Tolerância a Falhas
Classificado em Computação
Escrito em em
português com um tamanho de 6,6 KB
1. O que é diversidade e redundância nos Sistemas Críticos?
R: Estas são técnicas de validação para detecção de erros que se complementam entre si.
2. Como a diversidade e redundância contribuem nos Sistemas Críticos? Dê um exemplo.
R: Elas contribuem na detecção de defeitos no sistema ao testar um programa ou realizar uma análise estática, ou seja, uma inspeção de programa.
3. Defina um processo de software confiável.
R: Processos de software confiáveis são voltados à prevenção e detecção de defeitos, possuindo as seguintes características:
- Documentável: O processo deve ter um modelo definido que descreva e documente as atividades envolvidas.
- Padronizado: Deve conter um conjunto de padrões de desenvolvimento que defina como o software deve ser produzido e documentado.
- Auditável: O processo deve ser de fácil entendimento para pessoas externas, permitindo que validem e façam sugestões.
- Diversidade: Deve conter diferentes atividades de validação e verificação.
- Robustez: O processo deve ser capaz de se recuperar de falhas individuais.
4. Quais atividades de processos costumam ser feitas para prevenção e detecção de defeitos nos Sistemas Críticos?
R: Alguns processos são efetuados para que defeitos não ocorram ou sejam minimizados em sistemas críticos:
- Prevenção de perigos: Visa desenvolver um projeto evitando a possibilidade de um perigo acontecer, prevenindo-o antecipadamente.
- Detecção e remoção de perigos: Visa identificar potenciais perigos para tratá-los ou removê-los.
- Limitação de danos: O sistema pode conter medidas ou acessórios que visam minimizar os danos de um eventual acidente.
5. Defina programação confiável.
R: Uma programação confiável ou segura pode ser definida pelo uso mínimo ou pela evitação de construções complexas e propensas a erros.
6. Qual a diferença entre falha e defeito?
R: Falha: Pode ser considerada um evento que ocorre no sistema em algum momento, caracterizando-se quando o sistema não fornece um serviço conforme esperado pelo usuário.
Defeito: Pode ser considerado uma característica do sistema que leve a um erro. Por exemplo: um cenário onde uma variável é inicializada incorretamente, gerando um erro no sistema.
7. Por que se diz em programação confiável que é melhor “fornecer métodos que acessem e atualizem valores de atributos em vez de permitir que objetos acessem diretamente esses atributos”?
R: Deste modo, é possível evitar que as variáveis sejam corrompidas por componentes do programa que não deveriam utilizá-las, buscando a prevenção de atribuições acidentais.
8. Explique o que é programação segura e cite 5 construções propensas a erros.
R: Uma programação confiável ou segura define-se pelo uso mínimo de construções complexas. Algumas construções propensas a erros são:
- Números de Ponto Flutuante: São inerentemente imprecisos e podem gerar erros em comparações de valores.
- Ponteiros: Trabalham em baixo nível, acessando endereços físicos de memória, o que dificulta o uso de recursos como vetores.
- Recursão: A dificuldade de compreensão da lógica recursiva torna o código propenso a erros, apesar de sua concisão.
- Vetores não limitados: Em linguagens como C, é possível acessar posições além do limite real do vetor, ocasionando erros graves.
- Processamento de Entradas Default: Entradas padrão não rejeitadas podem ser exploradas como vulnerabilidades por invasores.
9. Qual a finalidade do tratador de exceções?
R: O tratador de exceções separa do restante do código a parte que necessita de tratamento por estar propensa a gerar exceções. Ele facilita a identificação da exceção e evita a paralisação do sistema, desviando a execução para um tratamento ou mensagem de erro.
10. Explique a detecção de defeitos e dê um exemplo.
R: É a primeira parte da tolerância a defeitos, permitindo detectar se um erro ocorreu ou ocorrerá. Existem dois tipos:
- Detecção Preventiva de Defeitos: Inicia o detector antes que qualquer mudança seja feita; se houver erro, a mudança é impedida.
- Detecção Backward de defeitos: A detecção ocorre após as modificações; se houver discrepância, dispara uma exceção para recuperar o erro.
11. O que é a recuperação de defeitos? Dê um exemplo.
R: Faz uso de técnicas de verificação e validação para detectar e corrigir erros antes do uso do sistema. Um exemplo é o teste e a depuração sistemáticos.
12. Defina Arquitetura Tolerante a Defeitos.
R: Utiliza técnicas que garantem que defeitos não resultem em erros, ou que erros não resultem em falhas. Exemplos incluem recursos de autoverificação e módulos de sistema redundantes.
13. Explique Programação N-Versões.
R: Diferentes equipes desenvolvem versões de um software a partir de uma especificação comum. Elas executam em paralelo e um sistema de votação rejeita saídas inconsistentes. Espera-se que ao menos três versões existam para garantir consistência em caso de falha única.
14. Explique blocos de recuperação.
R: Cada componente inclui um teste para verificar se a execução foi bem-sucedida. Caso ocorra uma falha, inclui-se um código alternativo para realizar um teste em cópia.
15. Explique os 3 tipos de sistemas críticos.
R: Sistemas críticos são aqueles cujas falhas resultam em perdas significativas. Dividem-se em:
- Sistemas Críticos de Segurança: Falhas podem causar perdas de vidas ou danos ambientais (ex: controle de fábrica química).
- Sistemas Críticos de Missão: Falhas prejudicam metas específicas (ex: sistema de navegação espacial).
- Sistemas Críticos de Negócios: Falhas geram custos altíssimos para as empresas (ex: sistema de contabilidade).