Lucas Correa
Quiz por , criado more than 1 year ago

Programação Modular Quiz sobre Programação Defensiva, criado por Lucas Correa em 10-03-2014.

177
1
0
Lucas Correa
Criado por Lucas Correa mais de 10 anos atrás
Fechar

Programação Defensiva

Questão 1 de 10

1

Qual dos fatores externos esta ligado a Programação Defensiva?

Selecione uma das seguintes:

  • Corretude

  • Robustez

  • Verificabilidade

  • Segurança (Integridade)

Explicação

Questão 2 de 10

1

Quais são os princípios de McConnel na Programação Defensiva?

Selecione uma das seguintes:

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

Explicação

Questão 3 de 10

1

O que é tratamento de entradas inválidas na Programação Defensiva?

Selecione uma das seguintes:

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

Explicação

Questão 4 de 10

1

Das alternativas abaixo, quais delas não é uma técnica de tratamento para entradas inválidas?

Selecione uma das seguintes:

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

Explicação

Questão 5 de 10

1

Marque a alternativa que exemplifique da melhor forma a Robustez x Corretude.

Selecione uma das seguintes:

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

Explicação

Questão 6 de 10

1

Marque as respostas corretas em relação as barricadas.

Selecione uma ou mais das seguintes:

  • É 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.

Explicação

Questão 7 de 10

1

A forma geral do código de exceção é:
try
{

}catch(Exceção)
{

}finally
{

}

Selecione uma das opções:

  • VERDADEIRO
  • FALSO

Explicação

Questão 8 de 10

1

Marque as alternativas que mostra as recomendações de McConnell em relação aos tratamentos de exceções.

Selecione uma ou mais das seguintes:

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

Explicação

Questão 9 de 10

1

O que este código faz?
static public double dividir(double y, double x)
{
if (x == 0)
throw new System.DivideByZeroException();
return(y/x);
}

Selecione uma das seguintes:

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

Explicação

Questão 10 de 10

1

Marque a alternativa correta sobre asserções.

Selecione uma das seguintes:

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

Explicação