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.