Geral

Gerência e Qualidade de Software

Semana 1 34

#1

O que é correto afirmar sobre MVC? 

A

Foi usado na implementação de Java.

B

É uma especialização do modelo de três camadas.

C

Foi proposto no final da década de 1990. 

D

A interface gráfica é representada pelos grupos visão + modelo.

E

Organiza as classes em três grupos: visão, controladores, modelo.

#2

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:




A

As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.

B

A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

C

As asserções I e II são falsas.

D

A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.

E

As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.

#3

Qual o formato em que a documentação é gerada pela ferramenta JavaDoc? 

A

XML

B

HTML

C

DOCX 

D

JSON

E

PDF

#4

Marque a alternativa abaixo que apresenta uma informação correta a respeito do “design centrado no usuário” de acordo com o autor Ricardo Dias. 

A

O usuário deve ser representado pelo próprio cliente.

B

O projetista precisa evitar entrar em detalhes de regras de negócio. 

C

A pergunta mais importante a ser feita ao usuário é “o que você quer”.

D

O design centrado no usuário busca promover a colaboração entre implementador e usuário.

E

Usuários que já possuem muita prática tendem a passar as informações de forma muito genérica. 

#5

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:

A

1 – comentados; 2 – empacotado.

B

1 – executados; 2 – ignorado.

C

1 – depurados; 2 – interpretado.

D

1 – executados; 2 – gerado.

E

1 – escritos; 2 – apagado.

#6

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:

A

1 - performance; 2 - refatorações.

B

1 - estrutura; 2 - testes unitários.

C

1 - compactação; 2 - erros sintáticos.

D

1 - velocidade; 2 - redundâncias.

E

1 - legibilidade; 2 - retrabalho.

#7

Assinale a alternativa que descreve corretamente uma vantagem para o uso de programação pareada de acordo com o texto “Programação em par”, da Wikipédia. 

A

Melhorar qualidade do código: como todo código produzido é revisado e aprimorado constantemente por diferentes integrantes da equipe, isso aumenta a qualidade do código. 

B

Ausência de gerência: por ser uma atividade par-a-par, nenhum gerente é necessário. 

C

Gerar mais união na equipe: os participantes mais experientes ficam com pena daqueles menos experientes ao ver o quanto eles ainda precisam avançar e isso acaba gerando mais união na equipe. 

D

Compartilhar conhecimento: como há sempre um participante experiente e um inexperiente, aquele experiente está sempre compartilhando seu conhecimento com o participante inexperiente. 

E

Melhorar a disciplina do time: como a prática de programação é bastante divertida, isso faz com que os programadores não a levem a sério quando programam sozinhos. 

#8

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:

A

I e III, apenas.

B

I, apenas.

C

I e II, apenas.

D

II e III, apenas.

E

I, II e III.

#9

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:
  1. Ao trabalharem juntos, os programadores conseguiram identificar falhas no momento da implementação, o que evitou retrabalho nas etapas seguintes do projeto.
  2. 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.
  3. 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:

A

I, apenas.

B

II e III, apenas.

C

I e III, apenas.

D

I e II, apenas.

E

I, II e III.

#10

De acordo com o autor Everson Mauda, assinale a alternativa que apresenta uma descrição correta do perfil de um time de desenvolvimento de software em relação à dívida técnica. 

A

Prudente e proposital: o time precisa entregar o produto agora, com todas as limitações conhecidas, e assume de maneira proativa as consequências para futuras correções. 

B

Prudente e negligente: o time não tem consciência dos princípios básicos de design, então, nem sequer imagina a bagunça que estão adicionando. 

C

Prudente e involuntário: isso é verdade para times com excelentes arquitetos. Eles fornecem uma solução que agrega valor ao negócio, mas depois o time não tem tempo para o design e utiliza uma solução rápida e com pouca preocupação com a qualidade. 

D

Imprudente e proposital: isso é verdade para times com excelentes arquitetos. Eles fornecem uma solução que agrega valor ao negócio, mas depois de completar a solução, eles entendem que a abordagem de design poderia ter sido melhor. 

E

Imprudente e negligente: o time não tem tempo para o design e utiliza uma solução rápida e com pouca preocupação com a qualidade. 

#11

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:
  1. 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.
  2. 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.
  3. 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.
  4. 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:

A

I, II e III, apenas.

B

I, III e IV, apenas.

C

I e III, apenas.

D

I, II, III e IV.

E

II, III e IV, apenas.

#12

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:

A

A dívida técnica surge quando os desenvolvedores priorizam a qualidade do código, garantindo que futuras mudanças sejam feitas com facilidade.

B

A dívida técnica se refere às escolhas de desenvolvimento que priorizam velocidade de entrega, resultando em soluções que exigirão esforço extra no futuro.

C

A dívida técnica é a prática de evitar qualquer tipo de planejamento no desenvolvimento do sistema, sem se preocupar com o futuro.

D

A dívida técnica se refere ao uso de soluções avançadas, mas que tornam o desenvolvimento mais lento e dificultam a manutenção a longo prazo.

E

A dívida técnica ocorre quando as soluções de software são planejadas de maneira otimizada e bem estruturada desde o início.

#13

De acordo com o autor Everson Mauda, assinale a alternativa que apresenta um pensamento correto de um time de desenvolvimento de software, considerando o perfil desse time em relação à dívida técnica. 

A

Imprudente e negligente: “O que são camadas?”.

B

Imprudente e proposital: “Agora nós sabemos como deveria ter sido construído”. 

C

Imprudente e proposital: “A entrega tem que ser feita e lidaremos com as consequências”. 

D

Prudente e proposital: “Nós não temos tempo para design”.

E

Prudente e negligente: “Nós não temos tempo para design”.

#14

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:

A

1 - instruções; 2 - intensidade.

B

1 - métodos; 2 - consistência.

C

1 - falhas; 2 - cobertura.

D

1 - blocos; 2 - abrangência.

E

1 - caminhos; 2 - profundidade.

#15

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”? 

A

Dividir variável temporária. 

B

Remover atribuições a parâmetros.

C

Introduzir variável explicativa.

D

Extrair método.

E

Substituir variável temporária por consulta. 

#16

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:

A

O desenvolvedor poderia remover todas as funções repetidas sem analisar o impacto no comportamento do sistema, para reduzir o tamanho do código.

B

O desenvolvedor poderia renomear as variáveis para palavras mais complicadas, para aumentar a complexidade e o nível de sofisticação do código.

C

O desenvolvedor poderia manter as funções como estão, pois a complexidade do código não impacta seu funcionamento ou a lógica geral.

D

O desenvolvedor poderia adicionar comentários em todas as linhas de código, explicando o que cada uma faz, sem alterar a estrutura do código.

E

O desenvolvedor poderia agrupar as funções semelhantes em uma única função, melhorando a clareza e a reutilização do código, mantendo a funcionalidade.

#17

Qual é o objetivo da refatoração “extrair método”? 

A

Substituir o corpo de um método por novo algoritmo que seja mais claro. 

B

Usar uma variável temporária no lugar de uma atribuição a um parâmetro. 

C

Colocar o corpo de um método cujo nome é tão claro quanto seu corpo dentro do corpo do que o chama e remover o método. 

D

Colocar o resultado de uma expressão complicada, ou partes da expressão, em uma variável temporária cujo nome explique o seu propósito.

E

Transformar um fragmento de código que pode ser agrupado em um método cujo nome explique o seu propósito.

#18

Marque a alternativa que apresenta apenas tipos de itens apresentados no relatório de cobertura da ferramenta Coverage.py. 

A

statements (comandos), lacking (faltantes), included(incluídas), partial (parcial). 

B

statements(comandos), missing(ausentes), included(incluídas), total (total). 

C

statements (comandos), lacking(faltantes), excluded (excluídas), total(total). 

D

statements(comandos), missing (ausentes), excluded(excluídas), partial(parcial).

E

statements(comandos), lacking(faltantes), included(incluídas), total(total). 

#19

Sobre limiares (thresholds) dos valores de cobertura de teste, é correto afirmar que:

A

esse limiar significa o valor máximo de cobertura esperado que um teste deve obter.

B

countersignifica o tipo de cobertura, sendo line e branch, tanto para Maven quanto para Gradle. 

C

com Gradle, é possível informar classes a serem excluídas da verificação dos limiares.

D

apenas um limiar deve ser informado para todos os tipos de cobertura, por exemplo, statemente branch. 

E

limiares são fixados a 90% de cobertura. 

#20

Durante a fase de testes em um projeto Python, a equipe de desenvolvimento utilizou o Coverage.py para verificar a qualidade da cobertura de código. Ao final da execução dos testes, o time analisou o relatório gerado pela ferramenta para entender os pontos que precisavam de atenção.
Com base nesse cenário prático, observe as afirmativas a seguir:
  1. Ao rodar coverage run -m pytest, a equipe conseguiu executar os testes enquanto o Coverage.py registrava a cobertura das linhas de código.
  2. O comando coverage html foi usado para gerar um relatório visual, em que as linhas não cobertas foram destacadas em vermelho.
  3. Para medir a cobertura de código, foi necessário reescrever os testes usando apenas funções do Coverage.py, substituindo os testes existentes com unittest.

Está correto o que se afirma em:

A

I, apenas.

B

I e III, apenas.

C

I e II, apenas.

D

II e III, apenas.

E

I, II e III.

#21

Quais são os três estágios da ferramenta Selenium IDE? 

A

Recording, Playing back, Recovering.

B

Recording, Changing, Playing back. 

C

Recovering, Playing back, Saving.

D

Recording, Playing back, Saving. 

E

Recording, Changing, Saving. 

#22

Leia o trecho a seguir:
No contexto da criação de sistemas web, tornou-se comum empregar testes automatizados para assegurar que as aplicações funcionem de forma consistente e confiável. Entre os recursos utilizados nesse cenário, destaca-se o Selenium IDE, especialmente indicado para iniciantes. Essa solução permite capturar as ações realizadas pelo usuário no ambiente do navegador — como clicar em botões, preencher campos e navegar entre páginas. Ao gravar esses testes, a ferramenta organiza as operações em registros compostos por três elementos: um comando que determina a ação, um identificador que localiza o componente da interface e, quando necessário, um valor a ser fornecido. Dessa forma, cada etapa da automação é representada por um [preencher 1] específico e um correspondente [preencher 2] que aponta para o elemento da interface desejado.
Neste contexto, identifique os termos de [preencher 1] e [preencher 2] que são substituídos por:

A

1 - evento; 2 - seletor lógico

B

1 - comando; 2 - localizador

C

1 - método; 2 - parâmetro

D

1 - função; 2 - argumento

E

1 - operador; 2 - expressão

#23

Para que é usado o método fail() do JUnit? 

A

Para fazer com que o teste falhe. 

B

Para fazer com que o testador busque o erro.

C

Para fazer com que o programador seja penalizado.

D

Para fazer com que o teste seja depurado.

E

Para fazer com que o erro seja encontrado. 

#24

Marque a alternativa que apresenta um exemplo de comando da ferramenta Selenium IDE: 

A

Validate. 

B

WaitTo. 

C

ClickAndGo. 

D

Assert. 

E

WaitAndType. 

#25

O Cucumber é uma ferramenta de teste automatizado que se destaca por utilizar uma linguagem natural, o Gherkin. Essa abordagem é comumente utilizada em metodologias ágeis e promove a colaboração entre desenvolvedores, testadores e stakeholders.
Uma equipe de desenvolvimento está utilizando o Cucumber para automatizar testes de uma aplicação web. Em um dos testes, o analista escreveu o seguinte trecho em Gherkin:
A imagem aparesenta alguns comandos em um arquivo chamado teste1_cucumber, com cinco linhas. Na primeira linha: Cenário: Veri 
Figura: Comandos em um arquivo chamado teste1_cucumber. 
Fonte: Autor. 
Considerando o uso de testes com Cucumber, assinale a alternativa que reconhece o propósito desse tipo de teste.




A

O teste foi escrito para documentar o código-fonte do backend com mais clareza para os desenvolvedores.

B

O teste serve para descrever o estilo visual da aplicação e deve ser usado principalmente por designers.

C

O teste permite automatizar a criação da interface gráfica para que novos usuários sejam cadastrados automaticamente.

D

O teste define regras de negócio de forma abstrata, sem possibilidade de automação, sendo útil apenas como documentação.

E

O teste descreve um comportamento esperado do sistema de forma legível, facilitando a comunicação entre equipe técnica e não técnica.

#26

Durante o desenvolvimento de um sistema de pedidos para uma lanchonete, a equipe buscou formas de validar automaticamente as funcionalidades implementadas, com foco em garantir a confiabilidade do sistema ao longo do tempo. Para isso, decidiram empregar uma ferramenta de testes automatizados amplamente utilizada na linguagem Java, capaz de verificar o comportamento de métodos e funções, inclusive em situações de uso inesperadas ou incorretas.
Com base nesse cenário e no uso do JUnit, observe as afirmativas a seguir:
  1. Os testes podem verificar se o método calcularTotal() retorna corretamente a soma dos itens adicionados, mesmo após remoções.
  2. A equipe pode configurar um teste para garantir que o método finalizarPedido() lance uma exceção ao tentar finalizar um pedido com o carrinho vazio.
  3. Com os testes automatizados, a equipe se isenta de testar manualmente o sistema em qualquer momento, mesmo após alterações no código.

Está correto o que se afirma em:

A

I, II e III.

B

I e III, apenas.

C

I e II, apenas.

D

II e III, apenas.

E

I, apenas.

#27

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:

A

A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

B

As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.

C

As asserções I e II são falsas.

D

A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.

E

As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.

#28

Qual comando da ferramenta Git é usado para copiar os commits mais recentes do repositório local para o repositório remoto? 

A

Clone. 

B

Commit. 

C

Add.

D

Push. 

E

Pull. 

#29

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? 

A

Clone. 

B

Add. 

C

Commit. 

D

Push. 

E

Pull. 

#30

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:
  1. Retornar para a branch feature/login para corrigir a área de stage e retirar os arquivos indesejados.
  2. Utilizar o comando git restore --staged <arquivo> para remover os arquivos da área de stage.
  3.  Após limpar a área de stage, retornar à branch main utilizando git checkout main.
  4. Com a branch main ativa, executar git merge feature/login para integrar as alterações.

Está correto o que se afirma em:

A

I, II, III e IV.

B

I, II e III, apenas.

C

I e III, apenas.

D

II e IV, apenas.

E

III e IV, apenas.

#31

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?

A
pull request
B
push order
C
merge request
D
add order
E
clone suggestion
#32

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:

A
II, III e IV, apenas.
B
I, II, III e IV.
C
III e IV, apenas.
D
I, III e IV, apenas.
E
I, II e III, apenas.
#33

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:

A
1-git status, 2-git init, 3 - git pull
B
1-git init; 2-git add; 3- git commit
C
1-git commit, 2-git status; 3- git add
D
1-git push; 2- git pull; 3- git status
E
1-git add, 2-git commit, 3 - git push
#34

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:

A
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
B
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
C
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
D
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
E
As asserções I e III são falsas.

Semana 2 10

#1

Qual é o objetivo do arquivo CMakeLists.txt? 

A

Conter os scripts de integração da aplicação a serem executados pela ferramenta cmake. 

B

Conter o roteiro de teste para criação de scripts de teste a serem executados pela ferramenta cmake. 

C

Conter o roteiro usado pela ferramenta cmake para criar os scripts de compilação da aplicação. 

D

Conter os scripts de compilação da aplicação a serem executados pela ferramenta cmake.

E

Conter scripts de teste automatizados para serem executados pela ferramenta cmake. 

#2

Qual alternativa a seguir mostra apenas diretórios usados pela estrutura padrão de projetos criado pela ferramenta Maven?

A

“src/main/java”, “src/main/resources”, “src/test/java”, “src/pom” e “target”. 

B

“src/main/java”, “src/test/java”, “src/main/resources”, “src/pom” e “target”.

C

“src/main/java”, “src/test/java”, “src/main/resources”, “src/test/resources” e “target”. 

D

“src/test/java”, “src/main/resources”, “src/test/resources”, “src/pom” e “target”. 

E

“src/main/java”, “src/test/java”, “src/test/resources”, “src/pom” e “target”. 

#3

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:
  1. O Maven permite automatizar o processo de build de aplicações, definindo fases como compilação, teste e empacotamento.
  2. Com o Maven, todas as dependências de um projeto precisam ser adicionadas manualmente ao diretório de bibliotecas da aplicação.
  3. 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:

A

II e III, apenas.

B

I e III, apenas.

C

I, II e III.

D

I, apenas.

E

I e II, apenas.

#4

Qual o nome do arquivo que contém as configurações básicas para o projeto Gradle a serem usadas na compilação automática?

A

compile.build. 

B

compile.gradle. 

C

build.gradle. 

D

gradle.compile.

E

gradle.build.

#5

Qual é o comando usado para criar e inicializar um novo build do Gradle? 

A

grade build.

B

gradle init.

C

grade begin.

D

grade create.

E

grade start. 

#6

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:

A
1-bibliotecas; 2 - temporários
B
1-interface gráfica: 2 - de código-fonte
C
1-scripts; 2 - remotos
D
1-arquivos XML; 2 - internos da IDE
E
1-linha de comando: 2 - privados
#7

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:

A
I, III e IV, apenas
B
I, II e IV, apenas
C
I, II e III, apenas
D
I e III, apenas
E
I, II, III e IV
#8

Durante o desenvolvimento de projetos em linguagens como Java, torna-se fundamental adotar práticas que facilitem o gerenciamento de dependências externas, além de organizar e automatizar tarefas recorrentes, como compilação, empacotamento e execução de testes. Para isso, é comum a utilização de ferramentas que padronizam o ciclo de construção do software e centralizam a configuração desses processos. Com base nisso, assinale a alternativa que identifica a principal função do Maven em um projeto Java:

A
Gerar o código-fonte automaticamente a partir de uma interface gráfica
B
Compilar o projeto apenas quando um novo branch é criado
C
Criar arquivos JAR com interface gráfica incorporada ao código-fonte
D
Gerenciar dependências e automatizar o processo de compilação, testes e empacotamento
E
Realizar o controle de acesso de usuários no ambiente de desenvolvimento
#9

Durante a configuração de um projeto corporativo Java com múltiplos módulos, a equipe de desenvolvimento percebeu que o tempo de build estava excessivamente alto e que cada alteração em um módulo disparava a recompilação completa de todos os módulos dependentes, mesmo sem necessidade. O projeto usava Gradle, mas não havia uma configuração otimizada para builds incrementais. 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. A estrutura modular de um projeto Gradle, quando mal configurada, pode causar recompilações desnecessárias, impactando diretamente a performance do build. PORQUE II. A ausência de declaração explícita de dependências entre módulos impede que o Gradle execute builds incrementais com eficiência, pois ele não consegue identificar o que mudou de fato. A respeito dessas asserções, assinale a alternativa correta:

A
As asserções I e II são falsas
B
As asserções I e II são proposições verdadeiras, e a Il é uma justificativa da I
C
A asserção I é uma proposição falsa, e a Il é uma proposição verdadeira
D
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I
E
A asserção I é uma proposição verdadeira, e a Il é uma proposição falsa
#10

Joana está desenvolvendo um sistema em C++ que será utilizado em diferentes sistemas operacionais. Para facilitar a portabilidade e automatizar a criação dos arquivos de compilação, ela decide usar o CMake. No diretório raiz do projeto, ela cria um arquivo chamado CMakeLists.txt e, a partir dele, gera os arquivos de build para diferentes ambientes, utilizando, em seguida, comandos específicos para compilação e execução. Com base na situação descrita e nos conhecimentos sobre o funcionamento do CMake, observe as afirmativas abaixo: I. O uso do CMakeLists.txt permite que Joana defina quais arquivos-fonte serão incluídos na compilação, bem como o nome do executável resultante. II. A execução do comando make após o CMake é possível porque o CMake gerou um Makefile compatível com o sistema da Joana. III. O CMake substitui o compilador, realizando a compilação do projeto de forma independente, sem precisar do make ou do gcc. Está correto o que se afirma em:

A
I e II, apenas
B
II e III, apenas
C
I e III, apenas
D
I, II e III
E
I, apenas

Semana 3 9

#1

Qual alternativa apresenta a ordem correta dos itens usados para definir exemplos concretos de comportamento seguindo BDD? 

A

Cenário > Dado > Quando > Então. 

B

Dado > Cenário > Então > Quando. 

C

Dado > Cenário > Quando > Então. 

D

Cenário > Dado > Então > Quando. 

E

Cenário > Quando > Dado > Então. 

#2

Durante a automação de testes com o Selenium IDE, a equipe de qualidade precisou validar a funcionalidade de finalização de pedidos em uma aplicação web. Em alguns momentos, perceberam que determinados botões interativos demoravam a ficar disponíveis após o carregamento da página, o que resultava em falhas na execução do teste gravado. Diante disso, a equipe considerou algumas abordagens para tornar a automação mais estável.
Com base neste cenário e no uso do Selenium IDE, avalie as afirmativas a seguir:
I. Inserir comandos de espera explícita no script, como waitForElementPresent, pode ajudar a garantir que o elemento esteja disponível antes da tentativa de interação.
II. A execução sequencial dos comandos no Selenium IDE depende da presença e visibilidade dos elementos na interface, o que exige planejamento em páginas com carregamento dinâmico.
III. O Selenium IDE permite usar scripts Java personalizados para contornar limitações de interação com elementos que não estejam visíveis ou prontos.
IV. O uso de comandos de espera fixos, como pause, deve ser evitado sempre que possível, pois torna os testes menos flexíveis e mais sujeitos a falhas.
Está correto o que se afirma em:





A

I, III e IV, apenas.

B

II, III e IV, apenas.

C

I e III, apenas.

D

I, II, III e IV.

E

I, II e IV, apenas.

#3

Marque a alternativa que apresenta apenas anotações existentes no JUnit 4.x para serem usados em classes de teste: 

A

@AfterClass, @Before, @BeforeClass, @During, @Test. 

B

@After, @Before, @BeforeClass, @During, @Test.

C

@After, @AfterClass, @Before, @BeforeClass, @During. 

D

@After, @AfterClass, @Before, @BeforeClass, @Test.

E

@After, @AfterClass, @BeforeClass, @During, @Test.

#4

Qual alternativa apresenta a ordem correta das etapas para uso da ferramenta Cucumber? 

A

Seu projeto > Características > Passos > Cenários > Código de suporte > Biblioteca de automação > Definições de passos > Seu sistema. 

B

Seu projeto > Cenários > Passos > Características > Código de suporte > Definições de passos > Biblioteca de automação > Seu sistema. 

C

Seu projeto > Cenários > Características > Passos > Código de suporte > Biblioteca de automação > Definições de passos > Seu sistema. 

D

Seu projeto > Cenários > Passos > Características > Definições de passos > Biblioteca de automação > Código de suporte > Seu sistema.

E

Seu projeto > Características > Cenários > Passos > Definições de passos > Código de suporte > Biblioteca de automação > Seu sistema. 

#5

Marque a alternativa que apresenta apenas métodos existentes do JUnit 3.8 para serem usados em classes de teste. 

A

assertTrue, assertNotTrue, assertEquals, assertNotEquals, assertNull, assertNotNull, assertSame, assertNotSame.

B

assertTrue, assertNotTrue, assertEquals, assertNull, assertNotNull, assertSame, assertNotSame. 

C

assertTrue, assertFalse, assertEquals, assertNotEquals, assertNull, assertNotNull, assertSame, assertNotSame.

D

assertTrue, assertFalse, assertEquals, assertNull, assertNotNull, assertSame, assertNotSame.

E

assertTrue, assertNotTrue, assertEquals, assertNotEquals, assertNull, assertNotNull, assertSame, assertNotSame. 

#6

Lucas está começando a desenvolver testes automatizados para sua aplicação Java. Ele decidiu usar o JUnit, pois ouviu que é uma das bibliotecas mais utilizadas para esse fim. Após criar sua classe de teste, ele escreveu um método de teste simples para verificar se a soma de dois números está correta.
Considerando a situação acima, assinale a alternativa que reconhece sobre a prática de Lucas com JUnit:

A

Lucas deve utilizar a anotação @Test para marcar os métodos de teste que deseja executar com JUnit.

B

Lucas precisa compilar os testes com o comando javac -test para que o JUnit reconheça os métodos automaticamente.

C

Lucas deve usar a anotação @Main no método de teste para que ele seja executado corretamente pelo JUnit.

D

Lucas precisa renomear os métodos de teste com prefixo test_ para que o JUnit execute corretamente.

E

Lucas precisa criar um método public static void main na classe de teste para executar os testes.

#7

A equipe de desenvolvimento de uma empresa de tecnologia está implementando testes automatizados para validar o comportamento de uma funcionalidade de busca em seu sistema de e-commerce. Um analista propôs o uso do Cucumber, escrevendo um cenário no seguinte formato:
Funcionalidade: Buscar produtos    
Cenário: Usuário realiza uma busca por nome do produto
Dado que o usuário acessa a página inicial        
Quando ele digita "fones de ouvido" na barra de busca E clica no botão de pesquisar
Então a lista de produtos exibida deve conter itens relacionados a "fones de ouvido"

Com base nesse cenário e nos princípios do BDD com Cucumber, observe as afirmativas a seguir:
  1. O uso de linguagem natural no cenário visa facilitar a comunicação entre áreas técnicas e não técnicas.
  2. A estrutura do cenário segue o padrão Given-When-Then, comum na abordagem BDD.
  3. Esse tipo de escrita técnica dificulta a colaboração de stakeholders não familiarizados com programação.

Está correto o que se afirma em:

A

I, apenas.

B

I e III, apenas.

C

I e II, apenas.

D

II e III, apenas.

E

I, II e III.

#8

Qual alternativa abaixo apresenta uma característica correta da ferramenta Selenium IDE? 

A

Pode realizar testes de banco de dados.

B

Permite editar os scripts pré-gravados. 

C

Pode fornecer um relatório de teste detalhado. 

D

Pode exportar para scripts do WebDriver. 

E

Suporta testes orientados a dados. 

#9

A automação de testes tem se tornado fundamental no desenvolvimento de software, garantindo a qualidade das aplicações, principalmente em sistemas com interfaces web dinâmicas. O Selenium, uma das principais ferramentas para automação de testes de interface, possibilita a execução de testes em diversos navegadores, simulando a interação de um usuário real com a aplicação.
Com base nas características e princípios do Selenium, identifique e associe as descrições a seguir:
FerramentasCaracterísticas
I. Selenium IDEA. Facilita a gravação e execução de testes sem necessidade de conhecimento profundo de programação.
II. Testes com múltiplos navegadoresB. Permite a execução de testes em diferentes navegadores, garantindo a compatibilidade da aplicação com plataformas diversas.
III. Integração com outros recursosC. Oferece uma interface gráfica de fácil utilização para a criação e execução de testes, ideal para iniciantes e testes rápidos.
IV. Gravação e execução de scriptsD. Permite gravar ações realizadas no navegador, gerando automaticamente scripts para automatizar os testes.

Assinale a alternativa que apresenta a associação correta:

A

I-C, II-B, III-A, IV-D

B

I-A; II-B; III-C; IV-D.

C

I-B; II-C; III-A; IV-D.

D

I-D; II-A; III-B; IV-C.

E

I-C; II-B; III-D; IV-A.

Semana 4 7

#1

Marque a alternativa que contém uma afirmação correta em relação ao uso de JaCoCo. 

A

Precisa ser necessariamente usado em conjunto com a ferramenta Quarkus CLI.

B

Não pode ser usado para testes de integração.

C

Não pode ter valores limiares de cobertura atribuídos. 

D

Pode ser usado em conjunto com Maven e com Gradle. 

E

Deve ser usado apenas para testes de sistema/aceitação. 

#2

Que tipo de análise de cobertura pode ser realizada com a ferramenta Coverage.py?

A

statement (comando), function(função), branch(ramo), condition(condição). 

B

apenas function (função), condition (condição).

C

apenas statement (comando), branch (ramo), condition (condição).

D

apenas statement(comando), function (função), branch (ramo). 

E

apenas statement(comando), branch (ramo). 

#3

O que é cobertura de condição (condition coverage)? 

A

Medida que informa quantas variáveis definidas foram usadas. 

B

Medida que informa quais funções foram chamadas e quais funções não foram chamadas. 

C

Medida que informa se cada subexpressão booleana em um programa foi avaliada como verdadeira e falsa durante a execução de um conjunto de testes. 

D

Medida que informa quantas linhas de código foram executadas pelo conjunto de testes e quantas linhas de código não foram executadas. 

E

Medida que informa se cada ramificação de uma instrução de controle foi executada. 

#4

Leia o cenário abaixo:
Em um sistema de software, o desenvolvedor deseja garantir que todas as declarações do código estejam sendo testadas adequadamente. A ideia é identificar trechos de código que não estão sendo testados, para garantir que todo o comportamento esperado do sistema seja validado.
Com relação à aplicação da cobertura de declaração em testes automatizados, observe as afirmativas a seguir:
  1. A cobertura de declaração assegura que todas as linhas de código foram executadas, mas não garante que a lógica do código foi testada corretamente.
  2. A cobertura de declaração é suficiente para garantir que todas as possíveis condições e caminhos lógicos do código foram testados.
  3. Para garantir uma validação completa do comportamento do código, a cobertura de declaração deve ser complementada com a cobertura de ramo e de caminho, que avaliam a lógica e os diferentes cenários do código.

Está correto o que se afirma em:

A

I, II e III.

B

I e II, apenas.

C

I e III, apenas.

D

II e III, apenas.

E

I, apenas.

#5

Em um processo de desenvolvimento de software, é importante medir a cobertura dos testes para garantir que o código foi devidamente validado. A cobertura de testes refere-se à medida em que as linhas de código, condições ou caminhos foram executados durante a execução dos testes. Diferentes tipos de cobertura de testes podem ser utilizados, como cobertura de declaração, de ramo, de caminho e de condição.
Com base nesse conceito, observe e associe os tipos de cobertura de testes às suas respectivas descrições. 
Tipos de cobertura de testesDescrições
I. Cobertura de DeclaraçãoA. Mede a execução de todas as linhas de código, sem considerar as condições lógicas ou ramificações.
II. Cobertura de RamoB. Avalia a execução de todos os caminhos possíveis no código, levando em consideração as várias combinações de decisões e ramificações.
III. Cobertura de CaminhoC. Mede a execução de todos os ramos de uma estrutura de decisão, como instruções if e switch, considerando se todas as possibilidades foram verificadas.
IV. Cobertura de CondiçãoD. Verifica se todas as condições dentro das expressões lógicas foram avaliadas para todos os seus valores possíveis (verdadeiro ou falso).

Assinale a alternativa que apresenta a associação correta:

A

I-B; II-D; III-C; IV-A.

B

I-A; II-C; III-B; IV-D.

C

I-A; II-C; III-D; IV-B.

D

I-D; II-B; III-A; IV-C.

E

I-C; II-A; III-B; IV-D.

#6

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”? 

 

A

Remover atribuições a parâmetros. 

B

Substituir variável temporária por consulta. 

C

Introduzir variável explicativa. 

D

Dividir variável temporária.

E

Extrair método. 

#7

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:

A

O Coverage.py mostra a cobertura de código em tempo real, indicando imediatamente quais partes do código precisam de mais testes.

B

A ferramenta Coverage.py é usada para medir o número de falhas encontradas durante a execução dos testes, ajudando a identificar erros no código.

C

O Coverage.py é usado para monitorar o tempo de execução dos testes, sem fornecer informações sobre a cobertura de código.

D

O Coverage.py indica a porcentagem de linhas de código não executadas durante os testes, mas não fornece detalhes sobre falhas específicas.

E

O Coverage.py é uma ferramenta de depuração que ajuda a corrigir erros de código automaticamente, garantindo que o código esteja livre de falhas.

Semana 5 13

#1

Durante o desenvolvimento de um sistema web para uma rede de farmácias, a equipe decidiu adotar a Integração Contínua (CI) como estratégia para reduzir falhas e acelerar o ciclo de entrega. O projeto é sensível a mudanças frequentes, especialmente por lidar com integrações com APIs de estoque em tempo real e com dados sensíveis de clientes.
Nas últimas semanas, no entanto, a equipe tem enfrentado alguns problemas:
  • Em alguns momentos, o pipeline de CI demora mais de 20 minutos para validar uma simples modificação.
  • Desenvolvedores estão criando branches longas e fazendo merges em lote ao final da semana.
  • Os erros no sistema só são percebidos após o deploy em produção, apesar da existência de testes e integração.

Considerando os princípios da Integração Contínua, observe as afirmativas abaixo:
  1. A demora na execução do pipeline pode comprometer a efetividade da CI, pois desestimula commits frequentes e dificulta feedback rápido.
  2. O uso de branches longas e merges em lote compromete a CI, já que aumenta o risco de conflitos e dificulta a identificação da origem de falhas.
  3. Ignorar testes automatizados pontualmente, mesmo sendo uma prática ruim, é aceitável dentro da filosofia da CI quando os prazos estão apertados.
  4. O fato de erros só serem detectados após o deploy indica que a CI está sendo mal aplicada, especialmente se há testes automatizados no pipeline.

Está correto o que se afirma em:

A

I e II, apenas.

B

I, II e IV, apenas.

C

I, III e IV, apenas.

D

I, II, III e IV.

E

II, III e IV, apenas.

#2

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 ÉticosSituações
I. Confiabilidade e qualidade do produto.A. Um engenheiro se recusa a implementar um mecanismo que permitiria ao gestor acessar históricos médicos dos pacientes sem o consentimento deles.
II. Privacidade e respeito às informações dos usuários.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.
III. Responsabilidade social e proteção do bem-estar público.C. Uma desenvolvedora denuncia anonimamente um colega que modificava registros clínicos a pedido da administração para evitar processos legais.
IV. Lealdade à equipe e respeito à hierarquia da empresa.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:

A

I-B; II-D; III-C; IV-A

B

I-D; II-A; III-B; IV-C

C

I-D; II-A; III-C; IV-B

D

I-C; II-B; III-D; IV-A

E

I-B; II-C; III-A; IV-D

#3

Durante uma sprint de correção e melhoria em um sistema de controle de estoque, um desenvolvedor se depara com o seguinte trecho de código legado:
A imagem apresenta um trecho de código em linguagem Java, com uma estrutura condicional simples. A função se chama p e não recebe parâmetros. Dentro dela, há uma instrução if que verifica se a variável x é igual a 1. Se essa condição for verdadeira, a função y é executada. Caso contrário, ou seja, se x for diferente de 1, a função z é chamada. O código representa uma decisão entre dois caminhos possíveis com base no valor da variável x. 

Figura: Trecho em python da função p().
Fonte: Autor
O código funciona corretamente, mas o programador decide refatorá-lo da seguinte forma:
 A imagem mostra um trecho de código Java com o nome da função processarPedido, que não recebe parâmetros. Dentro da função, há uma estrutura condicional if que verifica se a variável tipoPedido é igual a PEDIDO_NORMAL. Se a condição for verdadeira, a função gerarNotaFiscal é chamada. Caso contrário, a função notificarErroProcesssamento é executada. O código representa uma lógica de controle em que o processamento do pedido depende do tipo identificado.
Figura: Trecho em python da função processarPedido(). 
Fonte: Autor
O time questiona se a mudança foi necessária, considerando que o código anterior já estava “funcionando”. O desenvolvedor justifica que a nova versão é mais clara para qualquer pessoa que leia o código posteriormente.
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 clareza e a legibilidade do código são prioridades no desenvolvimento de software, mesmo que ele já esteja funcional, pois reduzem erros e facilitam a manutenção futura.
PORQUE
II. Refatorar um método para renomear variáveis ou funções que já funcionam pode ser dispensável, já que o funcionamento lógico do sistema não se altera com isso.
Assinale a alternativa correta:












A

A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

B

As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.

C

A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.

D

As asserções I e II são falsas.

E

As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.

#4

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:

A

Integração contínua com execução automatizada de testes a cada mudança no código.

B

Programação em par com foco em revisão manual de testes.

C

Teste de aceitação feito antes do início da codificação.

D

Entrega contínua com testes automatizados exclusivamente ao final de cada sprint.

E

Refatoração de código com reexecução manual de testes após o deploy em produção.

#5

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:

A

1 – complexidade; 2 – defeitos.

B

1 – complexidade; 2 – comentários.

C

1 – legibilidade; 2 – testes.

D

1 – arquitetura; 2 – integrações.

E

1 – modularidade; 2 – versões.

#6

Pelas boas práticas de “clean code”, o ideal é que nossas funções recebam no máximo quantos parâmetros? 

A

2

B

5

C

4

D

1

E

3

#7

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.
PORQUE
II. 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:

A

A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.

B

As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.

C

As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.

D

A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

E

As asserções I e II são falsas.

#8

Qual alternativa abaixo apresenta uma boa prática correta de “clean code” associada a comentários? 

A

É melhor ter comentários no código, mesmo que ruins, do que gastar tempo refatorando o código. 

B

Uma forma inteligente de fazer um comentário é usar a própria linguagem de programação para isso. 

C

Não fazer comentários redundantes que dizem exatamente o que o código está fazendo, pois são ruins e desnecessários.

D

É melhor ter comentários imprecisos do que nenhum. 

E

Quanto mais longo o comentário, melhor. 

#9

Qual alternativa a seguir inclui todas as atividades-padrão corretas, e apenas essas, do processo de integração contínua (IC)? 

A

Envio de código para sistema de controle de versão, monitoramento do repositório de controle de versão, execução de scripts de build, geração de documentação do código, geração de relatórios, integração do projeto. 

B

Envio de código para sistema de controle de versão, monitoramento do repositório de controle de versão, execução de scripts de build, geração de documentação do código, execução de testes, geração de relatórios, integração do projeto, notificação do resultado. 

C

Envio de código para sistema de controle de versão, monitoramento do repositório de controle de versão, execução de scripts de build, geração de documentação do código, execução de testes, geração de relatórios, integração do projeto. 

D

Envio de código para sistema de controle de versão, monitoramento do repositório de controle de versão, execução de scripts de build, geração de relatórios, integração do projeto, notificação do resultado. 

E

Envio de código para sistema de controle de versão, monitoramento do repositório de controle de versão, execução de scripts de build, execução de testes, geração de relatórios, integração do projeto, notificação do resultado.

#10

No processo de integração contínua, qual o papel do servidor de integração contínua em relação ao repositório de controle de versões? 

A

Possui um papel ativo, ou seja, ele fica monitorando o repositório de controle de versões, buscando por modificações de código-fonte. 

B

Nenhum papel, pois o servidor de integração contínua fica monitorando o servidor de testes para buscar por modificações em código-fonte. 

C

Possui papel tanto ativo quanto passivo, ou seja, ele fica monitorando o repositório de controle de versões, buscando por modificações de código-fonte, porém, se ele demorar para perguntar ao controle de versões ele será então notificado. 

D

Possui um papel passivo, ou seja, ele fica aguardando o repositório de controle de versões notificá-lo que houve modificações em código-fonte. 

E

Nenhum papel, pois o servidor de integração contínua é notificado que houve modificações em código-fonte pelo servidor de testes. 

#11

Qual alternativa a seguir apresenta corretamente uma boa prática de “clean code? 

A

Cada função deve fazer apenas coisas relacionadas. 

B

Nomes de métodos devem ter adjetivos. 

C

Evite efeitos colaterais.

D

Esconda o propósito ao nomear as coisas. 

E

Nomes de classes devem ter verbos.

#12

Em um time de desenvolvimento ágil, os desenvolvedores utilizam uma pipeline de integração contínua com testes automatizados. A cada push no repositório, o servidor dispara testes unitários e de integração. Porém, um erro causou instabilidade em outras partes do sistema e exigiu um rollback de emergência.
Com base na situação apresentada, observe as afirmativas a seguir:
  1. O problema poderia ter sido evitado se houvesse testes de integração mais completos na pipeline, validando a interação entre os módulos afetados.
  2. Os testes unitários, por si só, são suficientes para garantir que não ocorram erros em produção quando todos passam corretamente.
  3. A eficácia da integração contínua depende da qualidade dos testes; se forem superficiais, falhas críticas ainda podem passar despercebidas.

Está correto o que se afirma em:

A

I, apenas.

B

I e III, apenas.

C

I e II, apenas.

D

II e III, apenas.

E

I, II e III.

#13

Uma equipe de desenvolvimento está revisando o código de um novo projeto. Durante a revisão, foi identificado um método com o nome f1() que calcula o valor final de um pedido com base em impostos e descontos aplicados. Além disso, havia uma classe chamada C1 que agrupava funções relacionadas a pagamentos e envio de produtos. A equipe decidiu refatorar os nomes para refletirem com mais clareza a responsabilidade de cada elemento no código.
Com base nos princípios de código limpo, assinale a alternativa que reconhece a forma de melhorar a legibilidade desse código:

A

A equipe poderia manter os nomes originais e criar um documento separado explicando o que cada método e classe faz no projeto.

B

A equipe poderia manter os nomes curtos, pois códigos mais compactos tendem a ser mais fáceis de digitar e entender rapidamente.

C

A equipe poderia remover o método f1() e distribuir sua lógica entre outras funções menores, mesmo que os nomes não representem diretamente suas funcionalidades.

D

A equipe poderia renomear o método f1() para calcularValorFinalPedido() e a classe C1 para ProcessadorDePagamento, refletindo suas responsabilidades.

E

A equipe poderia adicionar comentários detalhados explicando a função do método f1() e a estrutura da classe C1, mantendo os nomes atuais.

Semana 6 9

#1

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ódigoCaracterísticas
I. Revisão TécnicaA. 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 EstiloB. 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 FuncionalidadeC. 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 PerformanceD. 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:


A

I-B; II-A; III-D; IV-C.

B

I-C; II-B; III-D; IV-A.

C

I-D; II-B; III-A; IV-C.

D

I-A; II-B; III-C; IV-D

E

I-B; II-D; III-C; IV-A.

#2

Assinale a alternativa que apresenta uma informação correta sobre dívida técnica de acordo com o autor Everson Mauda. 

A

Dívidas técnicas do tipo “negligente” são mais fáceis de serem quitadas. 

B

Um time de desenvolvimento deveria buscar nunca adquirir dívidas técnicas. 

C

O time de desenvolvimento não precisa ter pressa para pagar uma dívida técnica. 

D

Dívidas técnicas do tipo “proposital” devem ser evitadas. 

E

Um exemplo de dívida técnica é a escolha de um design mais rápido e de baixa qualidade.

#3

Assinale a alternativa que apresenta uma recomendação correta para revisores de código, de acordo com os autores Aline Torres e Marco Tulio Valente. 

A

Evite imagens e screenshots. 

B

Não faça perguntas nos comentários, apenas sugestões diretas. 

C

Evite sugestões relacionadas a estilos pessoais. 

D

Na dúvida, o revisor deve sugerir uma alteração. 

E

Evite usar o pronome “nós”, pois o código não foi feito por você também. 

#4

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:

A

A programação pareada é uma técnica em que dois alunos compartilham a responsabilidade pela atividade, mas cada um programa uma parte de forma independente.

B

A programação pareada é uma prática que permite que apenas um aluno programe, enquanto o outro observa passivamente e aprende com o processo.

C

A programação pareada é um processo competitivo em que os alunos se revezam para testar quem comete menos erros no desenvolvimento.

D

A programação pareada é uma estratégia onde cada aluno reproduz o código do colega separadamente e compara os resultados no final.

E

A programação pareada é um método em que dois alunos colaboram ativamente, revisando o código em tempo real e alternando entre digitação e revisão.

#5

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

As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.

B

A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

C

As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.

D

As asserções I e II são falsas.

E

A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.

#6

Durante uma sprint em andamento, a equipe da Squad Orion realizou uma revisão de código em uma funcionalidade nova de cadastro de usuários. O desenvolvedor responsável adicionou validações no backend, mas esqueceu de padronizar os nomes das variáveis, misturando camelCase com snake_case. Além disso, um trecho do código apresentava um if aninhado com três níveis, sem clareza de propósito.
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. A função do All() deve ser renomeada para refletir com clareza a responsabilidade do método, contribuindo para a compreensão e manutenção do código,
PORQUE
II. Os nomes genéricos e vagos de funções dificultam a legibilidade do código, prejudicam a colaboração em equipe e aumentam o risco de erros em projetos ágeis.
A respeito dessas asserções, assinale a alternativa correta:




A

A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.

B

A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

C

As asserções I e II são falsas.

D

As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.

E

As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.

#7

Assinale a alternativa que apresenta uma informação correta em relação às variações no pareamento para a programação pareada de acordo com o texto “Programação em par”, da Wikipédia. 

A

No pareamento novato-novato, há a vantagem de se conseguir melhores resultados do que cada um dos novatos trabalhando de forma independente. 

B

No pareamento novato-novato, há a vantagem de que ambos os novatos possam desenvolver bons hábitos de programação em conjunto. 

C

No pareamento especialista-especialista, há a vantagem de ambos os especialistas sempre questionarem as práticas estabelecidas. 

D

No pareamento especialista-novato, há a desvantagem de que os especialistas não têm a paciência necessária para permitir a participação construtiva de novatos.

E

No pareamento especialista-novato, há a desvantagem de que o novato não possui perfil para questionar as práticas estabelecidas. 

#8

Assinale a alternativa que apresenta a principal motivação para revisão de código de acordo com a pesquisa apresentada pelos autores Aline Torres e Marco Tulio Valente. 

A

Transferir conhecimento. 

B

Aumentar qualidade. 

C

Detectar bugs. 

D

Soluções alternativas.

E

Melhorar o código.

#9

Assinale a alternativa que apresenta uma questão que deve ser considerada em revisão de código de acordo com os autores Aline Torres e Marco Tulio Valente. 

A

Alguns bugs específicos. 

B

Código com problemas de indentação.

C

Uso de bibliotecas ou frameworks em geral. 

D

Excesso de documentação. 

E

Código muito simples.

Semana 7 8

#1

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:
 Código Java da classe CsvReader, que contém métodos relacionados à leitura de arquivos CSV. No topo, há um comentário explicativo indicando que a classe realiza a leitura de arquivos CSV e retorna os dados em formato de lista. Em seguida, aparece o construtor padrão da classe, que não executa nenhuma ação. Abaixo, há três métodos: O método read, que recebe o caminho de um arquivo como parâmetro e retorna uma lista de vetores de strings — cada vetor representa uma linha do CSV; O método isFileValid, que verifica se o caminho termina com a extensão .csv, retornando verdadeiro ou falso; O método logReadOperation, que imprime no console o nome do arquivo lido e a quantidade de linhas processadas.

Figura: Código em Java para manipulação de arquivo.
Fonte: Autor.
Com base no apresentado do trecho acima, avalie as afirmativas a seguir:
  1. A documentação da classe está em conformidade com a boa prática do Javadoc, pois descreve adequadamente a responsabilidade da classe.
  2. O método read está bem documentado, pois informa claramente o propósito, os parâmetros e o valor retornado.
  3. 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.
  4. 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:





A

I, III e IV, apenas.

B

I, II e IV, apenas.

C

I, II, III e IV.

D

I, II e III, apenas.

E

II, III e IV, apenas.

#2

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:
  1. 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.
  2. 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.
  3. 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:

A

II, apenas.

B

I, II e III.

C

II e III, apenas.

D

I e III, apenas.

E

I e II, apenas.

#3

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:

A

Oferecer desafios dinâmicos que variem de dificuldade conforme o desempenho individual de cada aluno, sem feedback imediato, pode evitar que os alunos se sintam pressionados pela competição direta.

B

A interface deve destacar as pontuações de cada aluno logo após cada exercício, permitindo comparações diretas entre eles para incentivar uma competição saudável.

C

A interface deve oferecer uma classificação global dos alunos, destacando sempre os melhores desempenhos e premiando-os com medalhas virtuais a cada avanço.

D

A interface deve permitir que os alunos escolham entre várias opções de personalização, como skins para o aplicativo e avatares, premiando com bônus aqueles que escolherem temas mais complexos.

E

O uso de recompensas visuais e feedback positivo durante os exercícios, sem exposição de pontuações relativas aos outros alunos, pode contribuir para uma experiência mais inclusiva e motivadora para todos os usuários.

#4

O que é correto afirmar sobre arquitetura em três camadas? 

A

A interface com o usuário também é chamada de camada de aplicação. 

B

As três camadas são: interface com o usuário, controladores, e banco de dados. 

C

Normalmente, é centralizada, ou seja, é executada em apenas uma máquina. 

D

Comumente usada na construção de sistemas de informação corporativos.

E

Alternativamente, pode haver apenas duas camadas, em que lógica de negócio e bancos de dados são unificadas. 

#5

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 / AbordagensCaracterísticas / Abordagens
I. JavadocA. Utiliza docstrings e arquivos de configuração para gerar documentação técnica de sistemas Python.
II. JaCoCoB. Avalia a qualidade do código com base em métricas como duplicação, cobertura e complexidade ciclomática.
III. SonarQubeC. Gera documentação automática em formato HTML a partir de comentários estruturados no código Java.
IV. SphinxProduz 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:

A

I-D; II-B; III-A; IV-C

B

I-B; II-A; III-D; IV-C

C

I-D; II-C; III-B; IV-A

D

I-C; II-D; III-B; IV-A

E

I-A; II-C; III-D; IV-B

#6

Quais são os passos do design centrado no usuário de acordo com Ricardo Dias? 

A

Desenho, avaliação do desenho e implementação.

B

Pesquisa de design, desenho, prototipação e implementação. 

C

Pesquisa de design, desenho e avaliação do desenho.

D

Desenho, prototipação e avaliação do desenho. 

E

Pesquisa de design, desenho, prototipação e avaliação do desenho. 

#7

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:

A

I, II e III.

B

I, apenas.

C

I e II, apenas.

D

I e III, apenas.

E

II e III, apenas.

#8

Quais são as tags (@) JavaDoc? 

A

author, date, param, return, version.

B

author, param, return, see, version.

C

author, date, return, see, version.

D

author, date, param, see, version.

E

author, date, param, return, see.