Prévia do material em texto
Evolução de software Qual das opcoes a seguir melhor descreve o conceito de evolucao de software? a) O processo de desenvolver software completamente novo do zero. b) A substituicao completa de sistemas legados por novos sistemas. c) A modificacao continua de software existente para corrigir erros, melhorar o desempenho ou adaptar-se a mudancas. d) A padronizacao de codigos-fonte para facilitar auditorias. Resposta correta: c) A evolucao de software e um processo continuo em que o software existente e modificado para se adaptar a novas necessidades, corrigir defeitos ou melhorar sua eficiencia. Isso garante a longevidade do sistema sem a necessidade de reescreve-lo totalmente. Segundo a Lei de Lehman sobre a evolucao de software, o que geralmente ocorre com sistemas de software ao longo do tempo? a) Eles permanecem estaveis e nao exigem alteracoes frequentes. b) Tornam-se mais simples e faceis de manter. c) Tendem a se tornar mais complexos, a menos que haja esforcos para controlar essa complexidade. d) Sao automaticamente otimizados por ferramentas de IA. Resposta correta: c) As Leis de Lehman apontam que, com o tempo, sistemas de software tendem a aumentar em complexidade devido a alteracoes constantes, a menos que haja uma disciplina rigorosa para reduzir ou controlar essa complexidade. O que caracteriza um software legado? a) Softwares lancados recentemente, ainda em fase de testes. b) Programas que rodam exclusivamente em nuvem. c) Sistemas antigos, muitas vezes desatualizados, mas ainda em uso critico por uma organizacao. d) Softwares que nao precisam de manutencao. Resposta correta: c) Software legado refere-se a sistemas antigos que continuam sendo usados porque sao essenciais para a operacao da empresa, mesmo que possam ser dificeis de manter ou integrar a novas tecnologias. Qual e o papel da reengenharia na evolucao de software? a) Testar o desempenho de novos aplicativos moveis. b) Reescrever sistemas inteiros do zero. c) Analisar e modificar software existente para melhorar sua manutenibilidade. d) Desenvolver interfaces graficas modernas. Resposta correta: c) A reengenharia e o processo de examinar e modificar software existente com o objetivo de melhorar sua estrutura interna, sem alterar sua funcionalidade externa, aumentando sua qualidade e facilidade de manutencao. Refatoracao e uma pratica comum na evolucao de software. O que ela implica? a) Adicao de funcionalidades novas a um software. b) Melhoria no codigo-fonte sem modificar seu comportamento externo. c) Desativacao de sistemas obsoletos. d) Transferencia do software para a nuvem. Resposta correta: b) Refatorar e melhorar a estrutura do codigo-fonte, como legibilidade e organizacao, sem mudar o que o software faz. Isso facilita futuras manutencoes e evolucoes. Qual dos seguintes motivos pode levar a evolucao de um software? a) Mudancas nos requisitos dos usuarios. b) Surgimento de novas tecnologias. c) Correcao de falhas de seguranca. d) Todas as anteriores. Resposta correta: d) Software evolui por diversos fatores, incluindo mudancas nas necessidades dos usuarios, novas tecnologias e correcoes de vulnerabilidades. O que e manutencao corretiva em software? a) Adicao de funcionalidades novas para atender a novos requisitos. b) Modificacoes para melhorar a performance. c) Correcao de defeitos e erros detectados durante ou apos o uso. d) Atualizacao da interface grafica. Resposta correta: c) A manutencao corretiva busca corrigir problemas ou falhas no software que comprometem seu funcionamento correto. A manutencao adaptativa tem como objetivo: a) Corrigir bugs em codigo antigo. b) Atualizar o software para que funcione em novos ambientes de hardware ou software. c) Melhorar a experiencia do usuario. d) Introduzir novos algoritmos de IA. Resposta correta: b) Essa manutencao adapta o software para que continue operando corretamente em novos ambientes operacionais ou tecnologicos. O que diferencia a manutencao evolutiva da manutencao corretiva? a) A corretiva lida com o visual e a evolutiva com o codigo. b) A evolutiva adiciona ou altera funcionalidades, enquanto a corretiva trata apenas de erros. c) Ambas sao identicas, so mudam de nome conforme o pais. d) A corretiva e feita manualmente, e a evolutiva, automaticamente. Resposta correta: b) A manutencao evolutiva esta relacionada a modificacoes que adicionam novas funcionalidades ou adaptam o software a novas necessidades, enquanto a corretiva trata de corrigir falhas existentes. A manutencao preventiva em software busca: a) Atualizar a linguagem de programacao. b) Realizar acoes para evitar falhas futuras. c) Implementar novas funcoes. d) Monitorar o desempenho do software em tempo real. Resposta correta: b) Essa manutencao previne problemas futuros por meio de melhorias na estrutura do codigo, documentacao e testes. Qual e a importancia da documentacao na evolucao de software? a) Serve apenas para fins legais. b) E util apenas para usuarios finais. c) Facilita a compreensao do sistema por novos desenvolvedores e garante consistencia nas alteracoes. d) Nao e necessaria quando se usa boas praticas de codificacao. Resposta correta: c) A documentacao clara e atualizada e essencial para permitir que equipes diferentes entendam o funcionamento do sistema e consigam evolui-lo com seguranca. Em projetos ageis, como a evolucao de software costuma ser tratada? a) Ignorada, pois o foco esta em entregas rapidas. b) Planejada apos o encerramento do ciclo de desenvolvimento. c) Incorporada de forma iterativa ao longo dos sprints. d) Terceirizada para outras equipes. Resposta correta: c) A evolucao de software em metodos ageis ocorre continuamente ao longo dos sprints, com ajustes constantes baseados em feedbacks e mudancas nos requisitos. Qual estrategia e mais indicada para modernizar um sistema legado critico? a) Substituir completamente o sistema por um novo. b) Manter o sistema como esta, apenas aplicando patches. c) Reengenharia incremental, combinando refatoracao e substituicao gradual. d) Ignorar a modernizacao ate ocorrer uma falha. Resposta correta: c) Modernizar um sistema legado de forma incremental permite reduzir riscos, mantendo o sistema operacional enquanto se realizam melhorias graduais. O que significa a sigla CI/CD no contexto da evolucao de software? a) Criacao Integrada / Comunicacao Direta b) Computacao Infinita / Codigo Duplicado c) Integracao Continua / Entrega Continua d) Codigo Interativo / Deploy Customizado Resposta correta: c) CI/CD refere-se a praticas de desenvolvimento modernas que automatizam testes, integracoes e entregas, facilitando a evolucao rapida e confiavel do software. Como a automacao de testes contribui para a evolucao de software? a) Reduz o tempo de desenvolvimento, mas aumenta os riscos. b) Elimina a necessidade de revisoes humanas. c) Garante que alteracoes no codigo nao quebrem funcionalidades existentes. d) Serve apenas para software novo. Resposta correta: c) Automacao de testes permite validar continuamente o funcionamento do software mesmo apos modificacoes, reduzindo a chance de introducao de regressoes. Quando um software deve ser descontinuado? a) Quando ele atinge 5 anos de uso. b) Quando seus custos de manutencao superam os beneficios de mante-lo. c) Quando e substituido por um concorrente. d) Quando um novo gerente assume o projeto. Resposta correta: b) A descontinuacao e uma decisao estrategica que ocorre quando os custos de manter o software nao se justificam mais frente aos beneficios que ele traz. Qual das opcoes abaixo e uma boa pratica ao evoluir um sistema de software? a) Alterar diretamente o codigo em producao para maior agilidade. b) Documentar apenas as grandes mudancas. c) Utilizar controle de versao para rastrear mudancas no codigo. d) Centralizar todas as decisoes nas maos de um unico desenvolvedor. Resposta correta: c) O controle de versao permite acompanhar a evolucaodo codigo, facilitando colaboracoes, auditorias e reversoes em caso de erros. Por que a modularidade e importante na evolucao de software? a) Porque torna o codigo mais dificil de entender por terceiros. b) Para garantir que todas as funcionalidades estejam em um unico arquivo. c) Facilita alteracoes localizadas sem impactar o sistema como um todo. d) Reduz a performance do sistema, mas aumenta a seguranca. Resposta correta: c) Sistemas modulares permitem isolar mudancas em componentes especificos, tornando a manutencao e evolucao mais seguras e eficientes. O que sao debitos tecnicos no contexto da evolucao de software? a) Dividas financeiras causadas por projetos de TI. b) Bugs de dificil correcao. c) Compromissos assumidos por escolhas tecnicas feitas com pressa ou descuido, que precisam ser resolvidos no futuro. d) Problemas no banco de dados. Resposta correta: c) Debito tecnico e o resultado de decisoes tecnicas que visam ganhos rapidos, mas que podem comprometer a qualidade futura do sistema. Qual a melhor maneira de evitar a criacao de grandes debitos tecnicos? a) Postergar decisoes tecnicas complexas. b) Eliminar revisoes de codigo para ganhar tempo. c) Adotar boas praticas de engenharia de software desde o inicio do projeto. d) Depender exclusivamente de ferramentas automaticas. Resposta correta: c) O uso consistente de boas praticas de desenvolvimento, como testes, revisoes e documentacao, ajuda a prevenir a acumulacao de debitos tecnicos que comprometem a evolucao futura.