Prévia do material em texto
Desenvolvimento de software Lista de Perguntas de Multipla Escolha sobre Desenvolvimento de Software O que significa o termo "Refatoracao" no contexto do desenvolvimento de software? a) A criacao de novas funcionalidades em um software b) A alteracao do codigo para melhorar sua estrutura sem mudar seu comportamento externo c) A remocao de bugs em um software d) A atualizacao do sistema operacional de um software Resposta correta: b) A alteracao do codigo para melhorar sua estrutura sem mudar seu comportamento externo Explicacao: Refatoracao e o processo de modificar o codigo para melhorar sua legibilidade, estrutura e desempenho, sem alterar o comportamento final do sistema. Qual e a principal vantagem da metodologia agil no desenvolvimento de software? a) Permite que os desenvolvedores se concentrem em escrever codigo sem se preocupar com a documentacao b) Facilita a adaptacao a mudancas de requisitos ao longo do ciclo de vida do software c) Aumenta o tempo de desenvolvimento devido a ciclos mais longos de planejamento d) Garante que o software seja entregue exatamente de acordo com as especificacoes iniciais Resposta correta: b) Facilita a adaptacao a mudancas de requisitos ao longo do ciclo de vida do software Explicacao: A metodologia agil e projetada para ser flexivel e adaptavel, permitindo que os requisitos mudem e evoluam ao longo do desenvolvimento. Em qual fase do ciclo de vida do software ocorre o levantamento de requisitos? a) Implementacao b) Analise c) Manutencao d) Testes Resposta correta: b) Analise Explicacao: Durante a fase de analise, os requisitos do sistema sao coletados e analisados para garantir que as necessidades do cliente sejam compreendidas e atendidas. O que caracteriza o desenvolvimento de software em camadas (Layered Architecture)? a) A presenca de camadas de seguranca que garantem a protecao de dados b) A separacao das responsabilidades do sistema em diferentes camadas de abstracao c) A criacao de uma unica camada que faz todo o processamento do software d) O uso de uma unica camada para a interacao com o banco de dados Resposta correta: b) A separacao das responsabilidades do sistema em diferentes camadas de abstracao Explicacao: A arquitetura em camadas divide o software em diferentes niveis (camadas) com responsabilidades especificas, como apresentacao, logica de negocios e acesso a dados. O que e um "framework" no contexto do desenvolvimento de software? a) Um conjunto de documentos que descrevem o sistema b) Uma ferramenta que automatiza o processo de codificacao c) Uma estrutura reutilizavel que define a arquitetura e auxilia no desenvolvimento de software d) Uma tecnica para otimizar o desempenho de um software Resposta correta: c) Uma estrutura reutilizavel que define a arquitetura e auxilia no desenvolvimento de software Explicacao: Frameworks oferecem uma estrutura pronta de codigo que facilita o desenvolvimento, proporcionando padroes e boas praticas para os desenvolvedores. O que e a tecnica de TDD (Test-Driven Development)? a) Escrever os testes apos o desenvolvimento do codigo b) Desenvolver o codigo sem a necessidade de testes c) Escrever os testes antes de escrever o codigo d) Escrever o codigo e os testes simultaneamente Resposta correta: c) Escrever os testes antes de escrever o codigo Explicacao: O TDD e uma abordagem onde os desenvolvedores escrevem os testes primeiro, antes de implementar a funcionalidade, garantindo que o codigo atenda aos requisitos desde o inicio. O que e a tecnica de "pair programming" (programacao em par)? a) Quando um programador escreve o codigo e outro realiza a revisao do codigo b) Quando dois programadores escrevem o codigo juntos, um teclado e uma tela c) Quando dois programadores trabalham em um mesmo projeto, mas separadamente d) Quando dois desenvolvedores colaboram para testar o codigo Resposta correta: b) Quando dois programadores escrevem o codigo juntos, um teclado e uma tela Explicacao: No pair programming, dois desenvolvedores trabalham juntos no mesmo computador, promovendo a troca de ideias e a revisao continua do codigo. Qual e o principal objetivo do teste de integracao? a) Verificar se o sistema esta funcionando conforme o esperado pelos usuarios finais b) Avaliar se o codigo atende aos requisitos funcionais c) Testar a interacao entre diferentes modulos ou componentes do sistema d) Identificar erros individuais no codigo de cada modulo Resposta correta: c) Testar a interacao entre diferentes modulos ou componentes do sistema Explicacao: O teste de integracao tem como foco garantir que os diferentes modulos ou componentes de um sistema funcionem bem juntos, sem problemas de comunicacao entre eles. O que e um "bug" no desenvolvimento de software? a) Um recurso do sistema que nao esta funcionando corretamente b) Um erro no codigo que impede o sistema de funcionar como esperado c) Uma falha no hardware que afeta o desempenho do software d) Uma ferramenta de teste utilizada para verificar a qualidade do codigo Resposta correta: b) Um erro no codigo que impede o sistema de funcionar como esperado Explicacao: "Bug" e o termo usado para se referir a qualquer erro ou falha no codigo que cause comportamento indesejado ou imprevisivel no software. Qual e a principal diferenca entre os modelos de desenvolvimento "Waterfall" e "Agil"? a) Waterfall permite mudancas nos requisitos, enquanto Agil nao permite b) Waterfall e um processo linear e sequencial, enquanto Agil e iterativo e flexivel c) Waterfall e mais rapido e Agil e mais lento d) Waterfall exige mais testes que Agil Resposta correta: b) Waterfall e um processo linear e sequencial, enquanto Agil e iterativo e flexivel Explicacao: O modelo Waterfall segue uma sequencia fixa de fases, sem revisoes no meio do caminho. Ja o Agil e iterativo, permitindo ajustes e melhorias em cada ciclo de desenvolvimento. O que e um "commit" no controle de versao? a) O processo de revisar o codigo antes de envia-lo para producao b) A acao de adicionar um arquivo ao repositorio de codigo c) A criacao de uma nova versao de um software d) A gravacao de mudancas no repositorio de codigo, criando um historico de alteracoes Resposta correta: d) A gravacao de mudancas no repositorio de codigo, criando um historico de alteracoes Explicacao: No controle de versao, um "commit" e o ato de salvar mudancas no repositorio, registrando uma nova versao do codigo. Qual e a principal funcao de um "gerenciador de dependencias" em um projeto de software? a) Controlar a versao do codigo-fonte b) Gerenciar pacotes e bibliotecas necessarias para o funcionamento do software c) Realizar testes automatizados no codigo d) Organizar os arquivos de dados gerados pelo software Resposta correta: b) Gerenciar pacotes e bibliotecas necessarias para o funcionamento do software Explicacao: Um gerenciador de dependencias facilita a instalacao, atualizacao e remocao de pacotes e bibliotecas externas usadas no projeto. Qual e a principal diferenca entre as linguagens de programacao compiladas e interpretadas? a) As linguagens compiladas exigem um compilador para gerar o codigo executavel, enquanto as interpretadas sao executadas diretamente pelo computador b) Linguagens compiladas sao mais lentas que as interpretadas c) Linguagens compiladas nao necessitam de codigo fonte d) Linguagens interpretadas nao podem ser utilizadas em ambientes web Resposta correta: a) As linguagens compiladas exigem um compilador para gerar o codigo executavel, enquanto as interpretadas sao executadas diretamente pelo computador Explicacao: Linguagens compiladas precisam ser convertidas em codigo de maquina por um compilador, enquanto linguagens interpretadas sao executadas diretamente por um interpretador sem necessidade de compilacao previa. O que e um "CI/CD" no contexto de desenvolvimento de software? a) A execucao continua de testes durante o desenvolvimento b) A pratica de integrar e entregar o software de maneiracontinua, com automacao de testes e deploy c) O processo de revisar o codigo frequentemente para melhorar a qualidade d) A divisao do desenvolvimento de software em ciclos curtos e iterativos Resposta correta: b) A pratica de integrar e entregar o software de maneira continua, com automacao de testes e deploy Explicacao: CI/CD (Integracao Continua/Entrega Continua) e uma pratica que envolve a automacao de processos como integracao de codigo e deploy de software, garantindo que as mudancas sejam entregues de forma eficiente e com menos riscos. Qual e o objetivo de realizar uma analise de risco em um projeto de desenvolvimento de software? a) Identificar as funcionalidades mais importantes do sistema b) Avaliar as tecnologias a serem utilizadas no projeto c) Antecipar e mit