Durante uma revisão de código em uma aplicação Java, o coordenador de qualidade observou que parte significativa das classes e métodos estava sem documentação adequada, dificultando o entendimento por novos membros da equipe. A recomendação foi implementar o uso do Javadoc e de outras estratégias que facilitassem a rastreabilidade técnica do sistema. Após algumas sprints, uma nova rodada de revisão foi feita para verificar se os ajustes estavam em conformidade com as boas práticas.
Com base nesse cenário, observe as afirmativas a seguir:
I. A adoção do Javadoc permite que comentários estruturados nos métodos e classes sejam convertidos em documentação navegável, facilitando a leitura técnica do sistema.
II. Mesmo com o uso do Javadoc, a qualidade da documentação depende da clareza e completude dos comentários inseridos pelos desenvolvedores.
III. A automatização por meio do Javadoc torna desnecessária a verificação manual da consistência entre código e documentação, já que a ferramenta garante a fidelidade entre ambos.
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:
Durante o desenvolvimento de um sistema para uma clínica médica, diversos dilemas éticos surgem para os engenheiros de software envolvidos. A equipe precisa tomar decisões que envolvem desde a privacidade dos dados dos pacientes até a entrega de funcionalidades sob pressão. Esse contexto exige dos profissionais consciência de sua responsabilidade ética e técnica no exercício da função.Com base nesse cenário e nos princípios éticos da engenharia de software, observe e associe as situações abaixo aos princípios éticos que as representam.Princípios Éticos
I. Confiabilidade e qualidade do produto.
II. Privacidade e respeito às informações dos usuários.
III. Responsabilidade social e proteção do bem-estar público.
IV. Lealdade à equipe e respeito à hierarquia da empresa.Situações
A. Um engenheiro se recusa a implementar um mecanismo que permitiria ao gestor acessar históricos médicos dos pacientes sem o consentimento deles.
B. Diante de um prazo apertado, a equipe opta por entregar uma versão do sistema sem testes mínimos, mesmo sabendo que há risco de falhas em prontuários.
C. Uma desenvolvedora denuncia anonimamente um colega que modificava registros clínicos a pedido da administração para evitar processos legais.
D. Um engenheiro revisa cuidadosamente o código para evitar vulnerabilidades que poderiam expor dados sigilosos, mesmo isso levando mais tempo.Assinale a alternativa que apresenta a associação correta:
Leia o texto a seguir:"O desenvolvimento de software exige não só que o programa funcione, mas que seja compreensível e sustentável ao longo do tempo. O código limpo não é apenas uma escolha estética, mas uma prática que favorece a colaboração, a manutenção e a evolução de sistemas complexos."DUARTE, Abraão. Clean Code: boas práticas. dev.to, 2021. Disponível em: https://dev.to/abraaoduarte/clean-code-boas-praticas-19n0. Acesso em: 14 mai. 2025.No contexto do desenvolvimento de software, não basta que um sistema apenas funcione corretamente. À medida que projetos crescem em escala e complexidade, torna-se essencial que o código produzido seja claro, bem estruturado e de fácil manutenção. Essa preocupação vai além da funcionalidade imediata, refletindo um compromisso com a qualidade a longo prazo e com o trabalho colaborativo dentro das equipes de desenvolvimento.Com base nesse contexto e no conteúdo estudado, avalie as asserções a seguir e a relação proposta entre elas:I. Os métodos curtos, com nomes significativos e objetivos claros, facilitam a manutenção do código ao permitir que qualquer desenvolvedor entenda rapidamente o que está sendo feito, reduzindo a dependência de comentários.PORQUEII. Um dos pilares do código limpo é escrever métodos longos e detalhados, já que isso garante a explicação completa das regras de negócio e dispensa a necessidade de documentação externa.A respeito dessas asserções, assinale a alternativa correta:
Durante o desenvolvimento de software, é comum que as equipes utilizem métricas para avaliar a qualidade do código produzido. Tais métricas podem indicar não apenas o tamanho do sistema, mas também aspectos como sua complexidade, legibilidade e manutenibilidade. Entre essas métricas, podemos citar a contagem de linhas de código, a [preencher 1] ciclomática e a densidade de [preencher 2], que ajudam os times a identificar pontos que merecem atenção, facilitando o aprimoramento contínuo do código.Neste contexto, identifique os termos de [preencher 1] e [preencher 2] que são substituídos por:
Uma equipe de desenvolvimento de software está trabalhando em um sistema de gestão escolar. Para cada nova funcionalidade implementada, é necessário garantir que os testes automatizados sejam executados rapidamente, de forma a verificar se nenhuma funcionalidade anterior foi quebrada.
Com base nessa situação, assinale a alternativa que reconhece a prática adotada pela equipe:
Qual refatoração possui o objetivo de “criar uma variável temporária separada para cada atribuição quando você tem uma variável temporária que mais de uma vez recebe uma atribuição, mas não é uma variável de laço nem um acumulador temporário”?
Leia o trecho a seguir:
Com o uso de ferramentas como o JaCoCo, torna-se possível avaliar aspectos importantes do teste de software, como a parte do código que ainda não foi verificada e o nível com que os testes percorrem diferentes possibilidades. Esses recursos facilitam a identificação de [preencher 1] não testados e oferecem uma visão mais clara sobre a [preencher 2] alcançada pelos testes.
Neste contexto, reconheça os termos de [preencher 1] e [preencher 2] que são substituídos por:
Uma equipe de desenvolvedores está utilizando o Coverage.py para medir a cobertura de testes de seu código. O objetivo é garantir que o código esteja sendo amplamente testado, para evitar falhas e garantir o bom funcionamento do sistema. Durante a análise, a equipe percebe que algumas partes do código não estão sendo cobertas pelos testes, o que pode resultar em falhas inesperadas.
Com base nesse cenário, assinale a alternativa que identifica o uso do Coverage.py:
Qual refatoração possui o objetivo de “extrair uma expressão, cujo resultado está sendo armazenado em uma variável temporária, para um método e substituir todas as referências à variável temporária pela expressão, para que este novo método possa então ser usado em outros métodos”?
Em um sistema de software, o desenvolvedor está buscando melhorar a legibilidade do código e reduzir a duplicação de código em várias funções semelhantes. Para isso, ele decide aplicar o conceito de refatoração, tornando o código mais limpo, fácil de manter e entender. Sobre a situação em destaque, assinale a alternativa que reconhece uma abordagem adequada de refatoração:
Durante a configuração de um projeto C++ com múltiplos arquivos-fonte e diretórios, o uso de CMake tornou-se essencial para automatizar a geração do projeto e controlar o processo de compilação de forma eficiente. O desenvolvedor deseja compilar um executável principal, organizar os arquivos em subdiretórios e incluir bibliotecas externas de forma modular, mantendo clareza e reutilização no projeto. Considerando práticas reais de uso do CMake nesse contexto, analise as afirmativas a seguir:I. O comando add_subdirectory() permite incluir subdiretórios que contenham seus próprios arquivos CMakeLists.txt, possibilitando a organização modular de bibliotecas ou partes da aplicação.
II. A instrução target_include_directories() pode ser usada para especificar diretórios de cabeçalhos para um alvo específico, evitando que os includes precisem ser definidos globalmente.
III. A função find_package() permite localizar bibliotecas externas instaladas no sistema, mas seu uso depende da existência de módulos de configuração apropriados para cada biblioteca.
IV. O comando add_executable() deve ser utilizado apenas dentro de subdiretórios, e não no diretório principal do projeto, onde apenas configurações globais devem ser declaradas.Está correto o que se afirma em:
Leia o trecho a seguir:No desenvolvimento de aplicações Java, é comum recorrer a ferramentas que auxiliam na automação da configuração do projeto e no gerenciamento de bibliotecas externas. Uma das soluções mais utilizadas para isso é o Maven, que facilita a inclusão automática de dependências, padroniza a estrutura dos projetos, permite a realização de builds e oferece suporte ao controle de versões.Com base no uso do Maven no contexto de desenvolvimento de projetos Java, observe as afirmativas a seguir:$I.$ O Maven permite automatizar o processo de build de aplicações, definindo fases como compilação, teste e empacotamento.$II.$ Com o Maven, todas as dependências de um projeto precisam ser adicionadas manualmente ao diretório de bibliotecas da aplicação.$III.$ A configuração principal de um projeto Maven é feita no arquivo $pom.xml$, que define dependências, plugins e outras configurações.Está correto o que se afirma em:
Durante o desenvolvimento de um sistema para uma pequena empresa de logística, a equipe identificou que o cálculo de prazo de entrega estava implementado de formas diferentes em diversos pontos do código. Algumas variações causavam resultados inconsistentes. Para resolver isso, o time decidiu aplicar refatoração: extraiu a lógica repetida para uma única função reutilizável, reorganizou os arquivos por responsabilidade e criou testes automatizados. 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 decisão de centralizar a lógica de cálculo de prazo em uma única função refatorada melhora a qualidade do sistema, pois evita comportamentos divergentes e facilita futuras atualizações, PORQUE II. ao aplicar refatoração com base na identificação de código duplicado em pontos críticos, a equipe melhora a previsibilidade do sistema e reduz o tempo necessário para localizar e corrigir erros. A respeito dessas asserções, assinale a alternativa correta:
Durante a validação de uma função criada para automatizar uma rotina comum no sistema, foram definidos alguns testes com base em diferentes combinações de entrada. O trecho de código abaixo representa a lógica usada para atualizar o status de um pedido:def processar_pedido(pedido):
if pedido["pago"]:
if pedido["estoque"] > 0:
pedido["status"] = "Confirmado"
else:
pedido["status"] = "Aguardando Estoque"
else:
pedido["status"] = "Pagamento Pendente"Foram aplicados os seguintes testes:
• Teste 1: ("pago": True, "estoque": 5)
• Teste 2: ("pago": True, "estoque": 0)Com base nesses testes e no código apresentado, avalie as afirmativas a seguir:
I. A linha pedido["status"] = "Pagamento Pendente" não foi executada em nenhum dos testes.
II. O bloco if pedido["pago"]: foi testado tanto com o resultado verdadeiro quanto falso.
III. A cobertura de declaração ainda não é total, pois nem todas as instruções foram executadas.
IV. A adição de um teste com ("pago": False) permitiria alcançar $100%$ de statement coverage.
Está correto o que se afirma em:
Qual é o nome do comando que representa uma solicitação para que um desenvolvedor revise e, se for o caso, realize o merge de um branch que outro desenvolvedor criou?
Um desenvolvedor está trabalhando em uma aplicação que contém duas branches principais: main e feature/login. Ele está desenvolvendo uma nova funcionalidade na branch feature/login e, durante esse processo, percebeu que algumas alterações não foram devidamente confirmadas antes de trocar para a branch main. Após realizar algumas correções na branch main, ele decide voltar para a branch feature/login e retomar seu trabalho. Porém, ao tentar realizar o git merge feature/login de volta para a branch main, ele se depara com um conflito. Ele também nota que a branch feature/login está com alguns arquivos que não deveriam ser parte do commit, e ele precisa removê-los da área de stage. Com base neste cenário, sobre a sequência correta de comandos para resolver os problemas e retomar o desenvolvimento da maneira mais adequada, analise as afirmativas a seguir:
I. Retornar para a branch feature/login para corrigir a área de stage e retirar os arquivos indesejados.
II. Utilizar o comando git restore --staged <arquivo> para remover os arquivos da área de stage.
III. Após limpar a área de stage, retornar à branch main utilizando git checkout main.
IV. Com a branch main ativa, executar git merge feature/login para integrar as alterações.
Está correto o que se afirma em:
Qual comando da ferramenta Git é usado para criar snapshots (ou fotografias) dos arquivos de um sistema e armazená-las no sistema de controle de versões?
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: