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).

Entradas relacionadas: