Durante o desenvolvimento de projetos em Java, especialmente em ambientes colaborativos, é fundamental contar com ferramentas que automatizem o processo de construção e gerenciem dependências. O Gradle é uma dessas ferramentas modernas que se destaca por sua flexibilidade e desempenho. Ele utiliza uma abordagem baseada em [preencher 1] para definir e organizar tarefas de construção, permitindo automações personalizadas. Além disso, o Gradle possui integração nativa com repositórios [preencher 2], facilitando a resolução automática de bibliotecas externas e otimizando o fluxo de trabalho. Neste contexto, identifique os termos de [preencher 1] e [preencher 2] que são substituídos por:
Durante o desenvolvimento de um software em C++, um estudante optou por utilizar o CMake para facilitar a geração dos arquivos de build em diferentes sistemas operacionais. Para isso, ele escreveu um arquivo chamado CMakeLists.txt e o utilizou para configurar e gerar os arquivos de projeto automaticamente. Considerando essa situação, assinale a alternativa que reconhece sobre a automação com CMake:
Durante o desenvolvimento de um sistema de agendamento médico online, a equipe de projeto identificou dificuldades enfrentadas por usuários durante a etapa de confirmação do agendamento. Com base em análises realizadas, discutiu-se a necessidade de revisar os elementos da interface, considerando aspectos relacionados à experiência do usuário. Como resposta, foi proposta a adoção de práticas fundamentadas nos princípios do design centrado no usuário (UCD), visando aprimorar a interface a partir de uma abordagem iterativa e orientada por feedback real. Com base nesse cenário, observe as afirmativas a seguir: A equipe planejou reformular a interface com base em uma linguagem mais técnica, adequada ao jargão médico, garantindo maior precisão nas informações. A reformulação da interface será guiada por entrevistas e observações realizadas com usuários reais, que participaram ativamente da construção das soluções propostas. A equipe optou por concentrar os testes de usabilidade apenas na fase final do projeto, para evitar interrupções no desenvolvimento e garantir maior fluidez nas entregas. Está correto o que se afirma em:
Durante o desenvolvimento de um sistema web para gerenciamento de eventos, a equipe optou por utilizar o padrão arquitetural MVC para organizar a estrutura do código. Após uma entrega parcial, foram observados comportamentos inesperados na forma como certas informações eram apresentadas em diferentes partes da aplicação, o que levou a uma análise mais detalhada da separação de responsabilidades entre as camadas. Com relação a este contexto e sobre o conteúdo estudado, analise as asserções a seguir e a relação proposta entre elas: I. O problema enfrentado pela equipe foi causado por um desvio do padrão MVC, pois cálculos relacionados à regra de negócio devem ser realizados no Model, e não na View. PORQUE II. Ao manter a lógica de cálculo nas Views, aumenta-se o risco de inconsistência de dados e dificulta-se a reutilização dessa lógica em outros pontos do sistema, como relatórios, exportações ou APIs. A respeito dessas asserções, assinale a alternativa correta:
Durante o desenvolvimento de um sistema de gestão escolar, a equipe de software optou por uma abordagem arquitetural que facilitasse a manutenção do código por diferentes times. A intenção era permitir que ajustes em certas partes do sistema pudessem ser feitos sem causar impacto imediato em outras funcionalidades. Essa escolha buscava também favorecer a organização da base de código e a escalabilidade futura da aplicação. Considerando o contexto apresentado, assinale a alternativa que reconhece o padrão arquitetural aplicado.
Durante o desenvolvimento de um projeto acadêmico em grupo, os alunos precisaram colaborar na criação de um site. Para garantir que cada um pudesse contribuir sem sobrescrever o trabalho dos colegas, o professor sugeriu o uso de uma ferramenta chamada Git. Ao final, todos destacaram a importância dessa ferramenta para manter a organização do trabalho em grupo. Sobre o recurso utilizado no projeto, assinale a alternativa que reconhece uma funcionalidade do Git:
Durante o desenvolvimento de um projeto colaborativo em equipe, Mariana foi encarregada de iniciar o controle de versão utilizando o Git. No terminal, ela criou o repositório com o comando [Preencher 1], adicionou os arquivos necessários com o comando [Preencher 2] e, por fim, registrou as mudanças com o comando [Preencher 3]. Ao concluir, comunicou a equipe que o projeto já estava versionado e pronto para receber contribuições por meio de push e pull. Neste contexto, identifique os termos de [preencher 1], [preencher 2] e [preencher 3] que são substituídos por:
Leia o cenário a seguir: Durante o desenvolvimento de uma aplicação colaborativa, os desenvolvedores A e B estão trabalhando em branches distintas, feature-a e feature-b, respectivamente. O desenvolvedor A realiza alterações no arquivo config.py, enquanto o desenvolvedor B faz modificações no mesmo arquivo, mas em um trecho diferente de código. Quando ambos tentam realizar o git merge de suas branches na branch main, ocorre um conflito, pois ambos alteraram a mesma linha de código no arquivo config.py. Com relação a este contexto e sobre o conteúdo estudado, avalie as asserções a seguir e a relação proposta entre elas: I. Quando um conflito é detectado após um comando git merge, o desenvolvedor deve realizar o comando git reset --hard para voltar ao estado anterior ao merge e recomeçar o processo de resolução do conflito. PORQUE II. O comando git diff pode ser utilizado durante a resolução de um conflito para visualizar as diferenças entre a versão atual do arquivo e a versão que será integrada, permitindo que o desenvolvedor veja claramente as modificações feitas por outros colaboradores. A respeito dessas asserções, assinale a alternativa correta:
Durante uma sprint de desenvolvimento, uma equipe utilizou práticas colaborativas para implementar diferentes funcionalidades de um sistema. A estratégia adotada envolveu a divisão das tarefas em múltiplas etapas, visando organizar melhor o processo de integração das contribuições de cada membro ao projeto principal. Com base no contexto apresentado e nos conhecimentos sobre o Git, observe as afirmativas a seguir: Os conflitos de merge ocorrem quando há alterações incompatíveis em um mesmo trecho de código feitas em diferentes branches. Os branches remotos permitem que diferentes colaboradores desenvolvam funcionalidades simultaneamente, mesmo que localmente estejam trabalhando em versões distintas do projeto. Para resolver um conflito de merge, o Git automaticamente escolhe a alteração mais recente entre os arquivos em conflito. Está correto o que se afirma em:
Durante uma auditoria em um projeto de médio porte, a equipe de qualidade identificou inconsistências na documentação técnica da API REST da aplicação. Ao revisar o processo, observou-se que parte da equipe utilizava anotações diretamente no código-fonte, enquanto outra parte gerava documentação manual em arquivos separados. A coordenação decidiu padronizar o uso de ferramentas automáticas para garantir atualização constante e reduzir esforço redundante. Com base nesse contexto, compreenda e associe as ferramentas de documentação às suas principais características ou abordagens. Ferramentas / Abordagens Características / Abordagens I. Javadoc A. Utiliza docstrings e arquivos de configuração para gerar documentação técnica de sistemas Python. II. JaCoCo B. Avalia a qualidade do código com base em métricas como duplicação, cobertura e complexidade ciclomática. III. SonarQube C. Gera documentação automática em formato HTML a partir de comentários estruturados no código Java. IV. Sphinx Produz relatórios detalhados sobre cobertura de testes de código Java, integrando-se a ferramentas de CI. Assinale a alternativa que apresenta a associação correta:
Durante o redesenho de um sistema interno em uma empresa do setor de seguros, a equipe de desenvolvimento optou por seguir um cronograma enxuto, priorizando a implementação rápida com base em informações fornecidas por áreas gestoras. A equipe acreditava conhecer suficientemente o ambiente de trabalho dos atendentes, e optou por não realizar atividades como observações em campo ou testes com protótipos antes da entrega inicial. Com relação a este contexto e sobre o conteúdo estudado, analise as asserções a seguir e a relação proposta entre elas: I. A ausência de testes e validação com usuários reais pode ter contribuído para um sistema funcionalmente completo, mas com baixa usabilidade para os atendentes. PORQUE II. O Design Centrado no Usuário parte do princípio de que as necessidades do negócio devem ser priorizadas em detrimento das experiências individuais, já que o usuário pode se adaptar ao sistema com o tempo. A respeito dessas asserções, assinale a alternativa correta:
Durante a revisão de código de uma biblioteca Java para manipulação de arquivos CSV, um dos revisores notou que as documentações geradas via Javadoc estavam incompletas ou mal posicionadas. Abaixo está um trecho da classe analisada: Figura: Código em Java para manipulação de arquivo. Fonte: Autor. Com base no apresentado do trecho acima, avalie as afirmativas a seguir: A documentação da classe está em conformidade com a boa prática do Javadoc, pois descreve adequadamente a responsabilidade da classe. O método read está bem documentado, pois informa claramente o propósito, os parâmetros e o valor retornado. O método isFileValid não possui Javadoc, o que pode dificultar o entendimento de sua funcionalidade, principalmente em uso por outras equipes ou módulos. A ausência de Javadoc no método logReadOperation é aceitável, já que o método realiza uma operação de log simples e não retorna valor. Está correto o que se afirma em:
Durante o desenvolvimento de um sistema web de gestão escolar, uma equipe de desenvolvedores adotou o padrão arquitetural MVC (Model-View-Controller) em conjunto com a separação por camadas. Essa abordagem foi escolhida para melhorar a organização do código, facilitar a manutenção e permitir uma melhor divisão de responsabilidades entre os componentes do sistema. Com base nesse cenário, observe as afirmativas a seguir: A camada de controle não deve acessar diretamente a base de dados, pois esse papel pertence à camada de modelo, que encapsula as regras de negócio e o acesso à persistência. A camada de visão não deve conter lógica de negócio, como cálculos ou validações, devendo se limitar à exibição dos dados tratados pelas demais camadas. A camada de modelo deve conter tanto a lógica de negócio quanto a apresentação visual dos dados para facilitar o reuso em múltiplas interfaces. Está correto o que se afirma em:
Leia o trecho a seguir: Durante o desenvolvimento de um sistema web, a equipe de testes automatizados decidiu utilizar o JaCoCo para acompanhar a cobertura de código em seus testes de unidade. Após configurar corretamente o plugin no arquivo pom.xml, foi gerado um relatório detalhado em HTML. No entanto, ao revisar o relatório, notaram que vários métodos estavam com cobertura zero, mesmo após a execução bem-sucedida dos testes. Um dos analistas, então, sugeriu que a equipe verificasse se os testes estavam [preencher 1] corretamente e se o relatório estava sendo [preencher 2] na pasta configurada no projeto. Neste contexto, identifique os termos de [preencher 1] e [preencher 2] que são substituídos por:
Imagine que um desenvolvedor está criando uma aplicação de aprendizado de matemática para crianças. A interface precisa ser intuitiva e adequada ao público-alvo, levando em consideração suas limitações cognitivas e a importância de manter a motivação ao longo do processo de aprendizado. A aplicação inclui recursos como feedback visual e desafios baseados em pontuação. Sobre essa situação, assinale a alternativa que reconhece a abordagem para a criação de um design mais eficaz para os usuários:
Durante o desenvolvimento de um sistema de cadastro de clientes, uma equipe optou por criar um módulo de busca utilizando soluções mais rápidas e menos estruturadas, com o objetivo de entregar o sistema dentro do prazo do cliente. Apesar de o sistema ter funcionado, os desenvolvedores perceberam que, a longo prazo, haveria dificuldades para realizar manutenções e melhorias naquele módulo. Um dos desenvolvedores comentou que a equipe havia contraído uma “dívida técnica” com essa decisão. Com base na situação apresentada, assinale a alternativa que reconhece o conceito de dívida técnica:
Leia o trecho a seguir: Durante o processo de desenvolvimento de software, uma das práticas mais eficazes para garantir a qualidade e a manutenção do código é a revisão entre colegas. Nesse processo, um ou mais desenvolvedores analisam o código produzido por outro membro da equipe em busca de possíveis melhorias. A revisão de código, além de permitir a detecção de erros que poderiam passar despercebidos, contribui para a disseminação do conhecimento técnico entre os envolvidos e para o fortalecimento do trabalho em equipe. Entre os benefícios mais reconhecidos estão a melhoria da [preencher 1] do código e a redução de [preencher 2] no futuro. Neste contexto, identifique os termos de [preencher 1] e [preencher 2] que são substituídos por:
Durante uma aula de práticas de desenvolvimento, a professora propôs aos alunos uma atividade em duplas para resolver um desafio de programação. João e Luana começaram a desenvolver a aplicação juntos, compartilhando decisões e alternando funções ao longo da atividade, com foco na qualidade do código e na troca de ideias. Com base na situação descrita, assinale a alternativa que identifica uma característica da programação pareada:
Durante a terceira iteração de um projeto de médio porte, a equipe de desenvolvimento passou a perceber que certos aspectos relacionados à qualidade interna do código estavam sendo deixados em segundo plano. Entre os desafios identificados, estavam inconsistências na padronização, trechos de código que poderiam ser refatorados e aspectos que impactavam a manutenibilidade do sistema. A equipe optou por documentar essas situações ao longo do ciclo de desenvolvimento para tratá-las de forma planejada. Com base nesse cenário, analise as afirmativas a seguir: A ausência de testes automatizados em áreas sensíveis do sistema representa uma dívida técnica que compromete a confiabilidade e a evolução segura do software. Comentários que não refletem a versão atual do código contribuem para a dificuldade de compreensão e manutenção, sendo considerados um tipo de dívida técnica. A existência de código repetido e métodos muito extensos caracteriza acúmulo de dívida técnica, pois aumenta a complexidade e os riscos nas futuras alterações. O uso do backlog como repositório para registrar pontos de dívida técnica contribui para o controle e o planejamento da equipe em relação à qualidade do projeto. Está correto o que se afirma em:
Leia o trecho abaixo: Durante o desenvolvimento de um sistema educacional, a equipe de programadores incorporou práticas de melhoria contínua ao processo de desenvolvimento, incluindo revisões semanais de código. Nessas sessões, os membros da equipe analisam aspectos como legibilidade, estrutura lógica e confiabilidade das implementações realizadas por seus colegas. Com base nessa situação, analise as asserções a seguir e a relação proposta entre elas: I. A revisão de código deve incluir tanto a análise da clareza e legibilidade do código quanto a verificação da presença de testes que garantam sua confiabilidade, PORQUE II. a identificação de código com lógica confusa e sem cobertura de testes pode indicar pontos críticos de manutenção, que devem ser priorizados durante a revisão para evitar dívidas técnicas. A respeito dessas asserções, assinale a alternativa correta:
A revisão de código é uma prática essencial em equipes de desenvolvimento de software, pois visa identificar erros, melhorar a qualidade do código e compartilhar conhecimento entre os membros da equipe. Durante o processo, um desenvolvedor revisa o código de outro, oferecendo sugestões e melhorias, além de corrigir falhas que podem passar despercebidas. Com base na prática de revisão de código e nas contribuições de boas práticas adotadas em equipes ágeis, observe e associe as práticas de revisão de código às suas principais características. Práticas de Revisão de Código Características I. Revisão Técnica A. Foca na identificação de problemas de lógica e erros no comportamento do código, assegurando que o sistema funcione conforme esperado. II. Revisão de Estilo B. Analisa o código em termos de clareza e legibilidade, garantindo que as convenções de estilo e as boas práticas de codificação sejam seguidas. III. Revisão de Funcionalidade C. Verifica o desempenho do código, identificando áreas que podem ser otimizadas para melhorar a eficiência e reduzir o uso de recursos. IV. Revisão de Performance D. Foca na correção de erros de implementação, como falhas de sintaxe, referências incorretas e falta de validações necessárias. Assinale a alternativa que apresenta a associação correta:
Leia o trecho a seguir: Durante o desenvolvimento de uma aplicação web, a equipe escolheu adotar o trabalho colaborativo entre programadores como uma estratégia para melhorar a qualidade do código e fortalecer a comunicação técnica dentro da equipe. Nessa abordagem, um desenvolvedor escreve o código enquanto o outro revisa e contribui com sugestões durante o processo. Com base nessa situação, observe as afirmativas a seguir: I. A colaboração entre os programadores permitiu que o programador menos experiente adquirisse rapidamente novos conhecimentos, favorecendo o aprendizado contínuo. II. O desenvolvedor responsável pela revisão pode contribuir com ideias importantes sobre a estrutura do código, mesmo sem ser o principal responsável pela escrita. III. O uso dessa abordagem afetou a produtividade da equipe, resultando em um atraso significativo nas entregas do projeto. Está correto o que se afirma em:
Durante o desenvolvimento de um sistema de controle de estoque, a equipe decidiu adotar uma abordagem colaborativa para melhorar a qualidade do código e promover o aprendizado entre os membros. Uma das estratégias adotadas foi a programação em pares, uma técnica comum em metodologias ágeis como o Extreme Programming (XP), na qual dois programadores trabalham juntos em uma mesma tarefa, alternando entre os papéis de codificador e revisor. Com base nessa situação, observe as afirmativas abaixo: Ao trabalharem juntos, os programadores conseguiram identificar falhas no momento da implementação, o que evitou retrabalho nas etapas seguintes do projeto. Como os dois programadores sempre executavam tarefas diferentes ao mesmo tempo, a entrega de funcionalidades era mais rápida, mesmo com pouca troca de conhecimento entre eles. Um dos membros da equipe, com menos experiência, relatou que passou a compreender melhor a estrutura do sistema e as boas práticas, graças à troca contínua com seu par durante as sessões. Está correto o que se afirma em:
Os requisitos não funcionais podem ser classificados em diferentes categorias, como os requisitos de desempenho, que tratam de [preencher 1] , e os requisitos de segurança, que tratam de [preencher 2] . Esses tipos de requisitos impõem restrições ao sistema para garantir que ele atenda aos critérios de qualidade e eficiência. As lacunas [preencher 1] e [preencher 2] são corretamente substituídas por:
O documento de especificação de requisitos pode ter diferentes formatos e níveis de detalhamento, dependendo das necessidades da organização e do projeto. Alguns documentos podem ser mais simples, enquanto outros podem ser extremamente detalhados, incluindo diagramas e especificações formais. Diante disso, assinale a alternativa que descreve uma abordagem correta para a estruturação de um documento de especificação de requisitos:
No desenvolvimento de software, é importante identificar e definir corretamente os requisitos para garantir que o produto final atenda às necessidades dos usuários e funcione de acordo com as especificações esperadas. Requisitos de software são categorizados de várias formas, cada uma com um propósito específico que contribui para o sucesso do projeto. Diante disso, assinale a alternativa que apresenta o tipo de requisito de software entre as opções abaixo:
Ferramentas de automação de testes são amplamente utilizadas para aumentar a eficiência e a precisão dos processos de verificação em sistemas de software. Essas ferramentas oferecem diferentes funcionalidades, como criação e reprodução de scripts, validações e integração com outras plataformas. O Selenium IDE é uma dessas ferramentas, sendo frequentemente usada em cenários específicos de testes. Com base nas características do Selenium IDE, selecione a alternativa que apresenta uma funcionalidade corretamente atribuída a essa ferramenta.
A gestão de dependências no desenvolvimento de software é fundamental para garantir que todas as partes do projeto funcionem harmoniosamente. Essa prática envolve monitorar e controlar como diferentes componentes de software se relacionam e dependem uns dos outros. A falta de uma gestão adequada pode levar a problemas de integração e falhas no software. Qual das seguintes alternativas descreve corretamente a gestão de dependências no contexto da gestão de configuração de software?
A validação de software é uma etapa crítica no processo de desenvolvimento, destinada a assegurar que o sistema esteja em conformidade com sua especificação e que atende às expectativas do cliente. Durante o processo de validação, diferentes tipos de testes são realizados para garantir a qualidade e a funcionalidade do software. Logo, assinale a alternativa correta sobre o tipo de teste que é mais adequado para identificar problemas que só se manifestam quando todos os componentes do sistema estão integrados.
Durante o desenvolvimento de um novo sistema para uma empresa, a equipe de engenharia de software está avaliando qual modelo de processo utilizar. Eles consideram que o projeto possui muitos riscos desconhecidos e que podem surgir novos requisitos durante o desenvolvimento. A equipe decide usar um modelo de processo que incorpora a análise de riscos e permite revisões e aprimoramentos constantes em ciclos iterativos, adaptando-se melhor às mudanças e incertezas. Neste sentido, assinale a alternativa que descreve uma vantagem do modelo em Espiral em comparação ao modelo em Cascata.