Questões de Concurso
Sobre desenvolvimento de software em engenharia de software
Foram encontradas 1.013 questões
Há muitas situações em que é benéfico criar programas que sejam imunes à reversão de código, ou pelo menos, em que esta reversão seja dificultada.
Com relação às técnicas antirreversão, analise as afirmativas a seguir.
I. A penalidade mais significativa para a maioria das técnicas antirreversão de código é um aumento no tempo de execução dos programas.
II. O uso de compressão de código impossibilita o uso de análise dinâmica na engenharia reversa.
III. A encriptação de código é uma das técnicas antirreversão que podem ser aplicadas na criação do código executável.
Está correto o que se afirma em
Uma das aplicações da engenharia reversa de software é auditar um programa para avaliar sua segurança, identificando suas possíveis vulnerabilidades.
Relacione as técnicas e ferramentas relativas à engenharia reversa com suas respectivas definições.
1. Descompilador
2. Desmontador
3. Depurador
4. Ofuscador de Código
( ) Programa que converte um programa em código de máquina para linguagem de montagem.
( ) Programa utilizado para obter o código fonte de um programa a partir de seu código executável.
( ) Programa para reduzir a legibilidade de um programa de forma automatizada.
( ) Programa para analisar o comportamento de um programa em linguagem de máquina.
Assinale a opção que mostra a relação correta, de cima para baixo.
É comum que os responsáveis pela implantação de sistemas computacionais baseados em hardware e software não deem a devida importância ao treinamento de usuários para uso adequado e produtivo desses sistemas. No entanto, podem ser identificadas categorias de pessoas que necessitam de treinamento, entre estas, estão os usuários que irão operar o sistema e o suporte que executa a manutenção corretiva e realiza rotinas preventivas.
Com base no texto, depreende-se que o treinamento para uso de sistemas computacionais
Considerando o desenvolvimento e a manutenção de sistemas e aplicações de software, marque V para as afirmativas verdadeiras e F para as falsas.
( ) No ciclo de vida tradicional de um software, são fases clássicas: análise, projeto, codificação, testes, evolução e transição.
( ) A construção de protótipos pode servir como um mecanismo para apoiar a validação de requisitos de usuários, isto é, o cliente pode visualizar a aplicação e oferecer feedback ao projetista de software.
( ) O desenvolvimento de aplicações no paradigma orientado a objeto requer o conhecimento de técnicas de delegação e distribuição de responsabilidades, que possibilitam o reuso de código, pois apresentam alto acoplamento e são aderentes aos padrões de projetos.
( ) O processo de desenvolvimento de um sistema pode ser visualizado conceitualmente como particionado em duas etapas: na primeira, conhecer o domínio do problema, “o que o sistema deve fazer?”, na segunda, criar a solução no domínio da aplicação, “como o sistema deve ser feito”.
Assinale a sequência correta.
Considere que uma equipe está trabalhando no desenvolvimento de um software com base em práticas e métricas ágeis e, em uma dada Sprint, a situação é apresentada pelo quadro abaixo.
Neste cenário é correto afirmar que
Considere as etapas a seguir:
1. Após os testes serem executados com sucesso, é iniciado o processo para implementar a próxima parte da funcionalidade.
2. É implementada a funcionalidade e novamente executado o teste. Isso pode envolver a refatoração do código existente para melhorá-lo e adicionar um novo código sobre o que já foi desenvolvido.
3. É executado o teste juntamente com todos os outros testes implementados.
4. É escrito um teste para a funcionalidade. Este teste é implementado como um teste automatizado.
5. É identificado o incremento de funcionalidade necessário, que normalmente deve ser pequeno e implementável em poucas linhas de código.
A sequência de etapas que devem ser seguidas no desenvolvimento dirigido a testes (TDD – Test Driven Development) é corretamente definida por
Considere a frase a seguir:
O ..., é baseado na ideia de desenvolver uma implementação inicial, expô-la aos comentários dos usuários e continuar por meio da criação de várias versões até que um sistema adequado seja desenvolvido. Atividades de especificação, desenvolvimento e validação são intercaladas, e não separadas, com rápido feedback entre todas as atividades. Um dos problemas deste modelo, sob o ponto de vista do gerenciamento, é a falta de visibilidade do processo.
A lacuna deve ser preenchida corretamente por
Seja o seguinte texto sobre um projeto de TI:
“A equipe de desenvolvimento de software da Companhia de Saneamento de um estado da federação decidiu realizar a implantação de um processo de trabalho que permita o desenvolvimento de suas aplicações de forma organizada e estruturada, com as atividades e resultados definidos. Desta forma, foi formada uma equipe que teve como objetivo realizar a modelagem e a definição dos processos internos necessários para o desenvolvimento de seus softwares”
São atividades imprescindíveis neste processo interno
As principais vantagens de se utilizar um sistema de controle de versão, como o SVN, para rastrear as alterações feitas durante o desenvolvimento de software são:
Analise as afirmativas abaixo e assinale a alternativa correta.
(1) Controle do histórico.
(2) Trabalho em equipe.
(3) Marcação e resgate de versões estáveis.
(4) Ramificação de projeto.
Dadas as afirmativas acerca das metodologias de desenvolvimento de software,
I. Muitos processos modernos de desenvolvimento de software, tais como RUP e XP, adotam o modelo de desenvolvimento conhecido como espiral.
II. O modelo espiral possui a vantagem de ser iterativo e incremental, porém possui a limitação de não ter atividade de análise de riscos.
III. Apesar de ser um modelo pouco iterativo, o modelo em cascata é indicado para projetos pequenos e que tenham requisitos estáveis e bem definidos.
verifica-se que está(ão) correta(s)
A modularização de um sistema de software permite decompor um sistema em subsistemas menores. A esse respeito, considere as possíveis vantagens dessa prática.
1. Permite a reutilização de subsistemas em outras aplicações desenvolvidas.
2. Possibilita o desenvolvimento dos subsistemas em paralelo.
3. Ajuda a manter a coesão de cada subsistema. 4. Ajuda a diminuir o acoplamento geral entre cada subsistema.
De uma forma geral, no desenvolvimento de software, são de fato vantagens da modularização: