Lucas Correa
Quiz by , created more than 1 year ago

Programação Modular Quiz on Programação Defensiva, created by Lucas Correa on 10/03/2014.

180
1
0
Lucas Correa
Created by Lucas Correa over 10 years ago
Close

Programação Defensiva

Question 1 of 10

1

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

Select one of the following:

  • Corretude

  • Robustez

  • Verificabilidade

  • Segurança (Integridade)

Explanation

Question 2 of 10

1

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

Select one of the following:

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

Explanation

Question 3 of 10

1

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

Select one of the following:

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

Explanation

Question 4 of 10

1

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

Select one of the following:

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

Explanation

Question 5 of 10

1

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

Select one of the following:

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

Explanation

Question 6 of 10

1

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

Select one or more of the following:

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

Explanation

Question 7 of 10

1

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

}catch(Exceção)
{

}finally
{

}

Select one of the following:

  • True
  • False

Explanation

Question 8 of 10

1

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

Select one or more of the following:

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

Explanation

Question 9 of 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);
}

Select one of the following:

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

Explanation

Question 10 of 10

1

Marque a alternativa correta sobre asserções.

Select one of the following:

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

Explanation