Programação Defensiva

Descripción

Programação Modular Test sobre Programação Defensiva, creado por Lucas Correa el 10/03/2014.
Lucas Correa
Test por Lucas Correa, actualizado hace más de 1 año
Lucas Correa
Creado por Lucas Correa hace más de 10 años
180
1

Resumen del Recurso

Pregunta 1

Pregunta
Qual dos fatores externos esta ligado a Programação Defensiva?
Respuesta
  • Corretude
  • Robustez
  • Verificabilidade
  • Segurança (Integridade)

Pregunta 2

Pregunta
Quais são os princípios de McConnel na Programação Defensiva?
Respuesta
  • O usuário deverá ser treinado para entrar com dados certos no sistema.
  • O programa devera tratar todos os dados de entradas, de forma que, caso algo esteja errado, ele possa através de probabilidades, descobrir o dado que o usuário estava querendo digitar.
  • Entra dados incorretos (lixo), nada sai. OU Nenhum lixo pode entrar.

Pregunta 3

Pregunta
O que é tratamento de entradas inválidas na Programação Defensiva?
Respuesta
  • Tratamento de entradas inválidas é criar uma barricada, ou seja, uma área segura do sistema com classes de validação, no qual será validada toda a informação, antes que a mesma entre para os módulos internos do sistema.
  • Verificar todo o tipo de entrada de fontes externas, seja de arquivo ou do próprio usuário e também do próprio sistema como parâmetros e chamadas de método. Caso detecte algum problema nos dados, fazer um tratamento adequado desses dados, de modo que o erro não interfira no funcionamento do sistema como um todo.
  • Parar o sistema e levantar um erro (exceção) com informações da linha do código onde ocorreu o erro.
  • Enviar erro fatal e fechar o sistema sempre que um dado invalido entrar no sistema.

Pregunta 4

Pregunta
Das alternativas abaixo, quais delas não é uma técnica de tratamento para entradas inválidas?
Respuesta
  • Retornar um valor neutro (padrão) que não cause erros.
  • Substituir pelo próximo dado válido. (ex.: tocador de mp3 ou vídeo)
  • Valor válido mais próximo. (ex.: Acertar entrada de hora do tipo: 22:80:05)
  • Retornar a mesma resposta anterior. (ex. Digitar canal inexistente, retornar ao canal estável.)
  • Avaliar expressão, caso seja falsa, emitir umas mensagem de erro inesperado no código.

Pregunta 5

Pregunta
Marque a alternativa que exemplifique da melhor forma a Robustez x Corretude.
Respuesta
  • Todo programa deve ser robusto a qualquer custo. Ou seja, funcionar de qualquer maneira em condições anormais.
  • Em um programa do tipo de editor de texto, não se deve priorizar a robustez, uma vez que o programa não é tão crítico a falhas. Já em um sistema do tipo de controladores de voo a robustez deve ser importante.
  • Depende do programa, nem sempre a robustez será importante, e nesses casos a corretude deve ser priorizada, como nos sistemas de Raio X. Porem há casos que a robustez deve ser priorizada, como em sistemas de stream de vídeo ou áudio, como também em sistema do tipo editores de texto.
  • Nenhuma das alternativas acima.

Pregunta 6

Pregunta
Marque as respostas corretas em relação as barricadas.
Respuesta
  • É uma técnica de tratamento de entradas inválidas.
  • É uma área delimitada de segurança, no qual os dados são verificados e desinfectados ou bloqueados (quando não for possível a desinfecção), antes de entrar para as classes internas do sistema.
  • É uma técnica da programação defensiva que tem como estratégia o confinamento de dados.
  • As rotinas fora das barricadas devem usar tratamento de erros.
  • As classes de validação na barricada, levantam uma exceção quando um dado incorreta tentar passar.
  • Não se pode garantir a desinfecção total de dados em uma barricada.

Pregunta 7

Pregunta
A forma geral do código de exceção é: try { }catch(Exceção) { }finally { }
Respuesta
  • True
  • False

Pregunta 8

Pregunta
Marque as alternativas que mostra as recomendações de McConnell em relação aos tratamentos de exceções.
Respuesta
  • Use e abuse das exceções no seu projeto, além de torna o sistema mais robusto , ele facilita a compreensão do código.
  • Evite lançar exceções em construtores e destrutores.
  • Crie mensagens claras de exceção, que informa a causa do problema.
  • Padronize exceções com tipos, classes de controle e etc.
  • Evite exceções em casos excepcionais.
  • Use o nível correto de abstração. Evite passar exceções de baixo nível em classes de alto nível.

Pregunta 9

Pregunta
O que este código faz? static public double dividir(double y, double x) { if (x == 0) throw new System.DivideByZeroException(); return(y/x); }
Respuesta
  • Um método que recebe duas variáveis double y e x, e retorna o resultado da divisão.
  • Um método que verifica se x é 0, se for positivo lança uma exceção de divisão por zero.
  • Um método que recebe duas variáveis double y e x, verifica se x é igual a zero, se for positivo lança uma exceção de divisão por zero, caso contrario, retorna a Divisão de y por x.

Pregunta 10

Pregunta
Marque a alternativa correta sobre asserções.
Respuesta
  • Trata um erro de entrada, tentando corrigir esse erro na barricada, para então seguir para as classes internas do sistema.
  • Permite ao programa realizar uma avaliação booleana , caso essa avaliação dê falso, gera um erro espalhafatoso no sistema em modo debug, interrompe a execução do mesmo e exibe uma mensagem de erro para o programador. Em algumas linguagens essa mensagem podem ser personalizadas.
  • É usado para erros esperados no sistema.
  • Muito usados em programa de que pequeno porte, avisa aos programadores de erros que não deveriam acontecer no sistema.
  • Permite ao programa realizar uma avaliação booleana , caso essa avaliação dê verdadeiro, gera um erro espalhafatoso no sistema em modo release, interrompe a execução do mesmo e exibe uma mensagem de erro para o programador. Em algumas linguagens essa mensagem podem ser personalizadas.
Mostrar resumen completo Ocultar resumen completo

Similar

Programação Modular 1 F.E
Lucas Correa
Programação Modular 1.2 F.I
Lucas Correa
Programação Modular 1 F.E
Rafael Almeida
Geografia segunda etapa
Guaxinim BR
músculos da coluna vertebral e do dorso.
Anna Clara Castilho
Teoria da Computação
Alisson Foratto
Modularidade
Lucas Correa
Sistema respiratório
Maria Fernanda Hayashi
Sistema Urinário
Maria Fernanda Hayashi
Sistema Circulatório Sanguíneo
Maria Fernanda Hayashi