Qual dos fatores externos esta ligado a Programação Defensiva?
Answer
Corretude
Robustez
Verificabilidade
Segurança (Integridade)
Question 2
Question
Quais são os princípios de McConnel na Programação Defensiva?
Answer
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.
Question 3
Question
O que é tratamento de entradas inválidas na Programação Defensiva?
Answer
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.
Question 4
Question
Das alternativas abaixo, quais delas não é uma técnica de tratamento para entradas inválidas?
Answer
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.
Question 5
Question
Marque a alternativa que exemplifique da melhor forma a Robustez x Corretude.
Answer
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.
Question 6
Question
Marque as respostas corretas em relação as barricadas.
Answer
É 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.
Question 7
Question
A forma geral do código de exceção é:
try
{
}catch(Exceção)
{
}finally
{
}
Answer
True
False
Question 8
Question
Marque as alternativas que mostra as recomendações de McConnell em relação aos tratamentos de exceções.
Answer
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.
Question 9
Question
O que este código faz?
static public double dividir(double y, double x)
{
if (x == 0)
throw new System.DivideByZeroException();
return(y/x);
}
Answer
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.
Question 10
Question
Marque a alternativa correta sobre asserções.
Answer
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.