Gerência e Qualidade de Software
Semana 1 34
O que é correto afirmar sobre MVC?
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:
Qual o formato em que a documentação é gerada pela ferramenta JavaDoc?
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.
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 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:
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.
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:
Com base nessa situação, observe as afirmativas abaixo:
- Ao trabalharem juntos, os programadores conseguiram identificar falhas no momento da implementação, o que evitou retrabalho nas etapas seguintes do projeto.
- Como os dois programadores sempre executavam tarefas diferentes ao mesmo tempo, a entrega de funcionalidades era mais rápida, mesmo com pouca troca de conhecimento entre eles.
- Um dos membros da equipe, com menos experiência, relatou que passou a compreender melhor a estrutura do sistema e as boas práticas, graças à troca contínua com seu par durante as sessões.
Está correto o que se afirma em:
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.
Com base nesse cenário, analise as afirmativas a seguir:
- A ausência de testes automatizados em áreas sensíveis do sistema representa uma dívida técnica que compromete a confiabilidade e a evolução segura do software.
- Comentários que não refletem a versão atual do código contribuem para a dificuldade de compreensão e manutenção, sendo considerados um tipo de dívida técnica.
- A existência de código repetido e métodos muito extensos caracteriza acúmulo de dívida técnica, pois aumenta a complexidade e os riscos nas futuras alterações.
- O uso do backlog como repositório para registrar pontos de dívida técnica contribui para o controle e o planejamento da equipe em relação à qualidade do projeto.
Está correto o que se afirma em:
Com base na situação apresentada, assinale a alternativa que reconhece o conceito de dívida técnica:
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.
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:
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”?
Sobre a situação em destaque, assinale a alternativa que reconhece uma abordagem adequada de refatoração:
Qual é o objetivo da refatoração “extrair método”?
Marque a alternativa que apresenta apenas tipos de itens apresentados no relatório de cobertura da ferramenta Coverage.py.
Sobre limiares (thresholds) dos valores de cobertura de teste, é correto afirmar que:
Com base nesse cenário prático, observe as afirmativas a seguir:
- Ao rodar coverage run -m pytest, a equipe conseguiu executar os testes enquanto o Coverage.py registrava a cobertura das linhas de código.
- O comando coverage html foi usado para gerar um relatório visual, em que as linhas não cobertas foram destacadas em vermelho.
- 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:
Quais são os três estágios da ferramenta Selenium IDE?
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:
Para que é usado o método fail() do JUnit?
Marque a alternativa que apresenta um exemplo de comando da ferramenta Selenium IDE:
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.
Com base nesse cenário e no uso do JUnit, observe as afirmativas a seguir:
- Os testes podem verificar se o método calcularTotal() retorna corretamente a soma dos itens adicionados, mesmo após remoções.
- 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.
- 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:
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:
Qual comando da ferramenta Git é usado para copiar os commits mais recentes do repositório local para o repositório remoto?
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?
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:
- Retornar para a branch feature/login para corrigir a área de stage e retirar os arquivos indesejados.
- Utilizar o comando git restore --staged <arquivo> para remover os arquivos da área de stage.
- Após limpar a área de stage, retornar à branch main utilizando git checkout main.
- Com a branch main ativa, executar git merge feature/login para integrar as alterações.
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?
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:
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:
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:
Semana 2 10
Qual é o objetivo do arquivo CMakeLists.txt?
Qual alternativa a seguir mostra apenas diretórios usados pela estrutura padrão de projetos criado pela ferramenta Maven?
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:
- O Maven permite automatizar o processo de build de aplicações, definindo fases como compilação, teste e empacotamento.
- Com o Maven, todas as dependências de um projeto precisam ser adicionadas manualmente ao diretório de bibliotecas da aplicação.
- 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:
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?
Qual é o comando usado para criar e inicializar um novo build do Gradle?
Durante o desenvolvimento de projetos em Java, especialmente em ambientes colaborativos, é fundamental contar com ferramentas que automatizem o processo de construção e gerenciem dependências. O Gradle é uma dessas ferramentas modernas que se destaca por sua flexibilidade e desempenho. Ele utiliza uma abordagem baseada em [preencher 1] para definir e organizar tarefas de construção, permitindo automações personalizadas. Além disso, o Gradle possui integração nativa com repositórios [preencher 2], facilitando a resolução automática de bibliotecas externas e otimizando o fluxo de trabalho. Neste contexto, identifique os termos de [preencher 1] e [preencher 2] que são substituídos por:
Durante 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:
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:
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:
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:
Semana 3 9
Qual alternativa apresenta a ordem correta dos itens usados para definir exemplos concretos de comportamento seguindo BDD?
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:
Marque a alternativa que apresenta apenas anotações existentes no JUnit 4.x para serem usados em classes de teste:
Qual alternativa apresenta a ordem correta das etapas para uso da ferramenta Cucumber?
Marque a alternativa que apresenta apenas métodos existentes do JUnit 3.8 para serem usados em classes de teste.
Considerando a situação acima, assinale a alternativa que reconhece sobre a prática de Lucas com JUnit:
| 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:
- O uso de linguagem natural no cenário visa facilitar a comunicação entre áreas técnicas e não técnicas.
- A estrutura do cenário segue o padrão Given-When-Then, comum na abordagem BDD.
- 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:
Qual alternativa abaixo apresenta uma característica correta da ferramenta Selenium IDE?
Com base nas características e princípios do Selenium, identifique e associe as descrições a seguir:
| Ferramentas | Características |
| I. Selenium IDE | A. Facilita a gravação e execução de testes sem necessidade de conhecimento profundo de programação. |
| II. Testes com múltiplos navegadores | B. Permite a execução de testes em diferentes navegadores, garantindo a compatibilidade da aplicação com plataformas diversas. |
| III. Integração com outros recursos | C. 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 scripts | D. Permite gravar ações realizadas no navegador, gerando automaticamente scripts para automatizar os testes. |
Assinale a alternativa que apresenta a associação correta:
Semana 4 7
Marque a alternativa que contém uma afirmação correta em relação ao uso de JaCoCo.
Que tipo de análise de cobertura pode ser realizada com a ferramenta Coverage.py?
O que é cobertura de condição (condition coverage)?
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:
- 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.
- A cobertura de declaração é suficiente para garantir que todas as possíveis condições e caminhos lógicos do código foram testados.
- 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:
Com base nesse conceito, observe e associe os tipos de cobertura de testes às suas respectivas descrições.
| Tipos de cobertura de testes | Descrições |
| I. Cobertura de Declaração | A. Mede a execução de todas as linhas de código, sem considerar as condições lógicas ou ramificações. |
| II. Cobertura de Ramo | B. 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 Caminho | C. 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ção | D. 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:
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”?
Com base nesse cenário, assinale a alternativa que identifica o uso do Coverage.py:
Semana 5 13
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:
- A demora na execução do pipeline pode comprometer a efetividade da CI, pois desestimula commits frequentes e dificulta feedback rápido.
- 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.
- Ignorar testes automatizados pontualmente, mesmo sendo uma prática ruim, é aceitável dentro da filosofia da CI quando os prazos estão apertados.
- 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:
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 | Situaçõ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:
Figura: Trecho em python da função p().
Fonte: Autor
O código funciona corretamente, mas o programador decide refatorá-lo da seguinte forma:

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:
Com base nessa situação, assinale a alternativa que reconhece a prática adotada pela equipe:
Neste contexto, identifique os termos de [preencher 1] e [preencher 2] que são substituídos por:
Pelas boas práticas de “clean code”, o ideal é que nossas funções recebam no máximo quantos parâmetros?
"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:
Qual alternativa abaixo apresenta uma boa prática correta de “clean code” associada a comentários?
Qual alternativa a seguir inclui todas as atividades-padrão corretas, e apenas essas, do processo de integração contínua (IC)?
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?
Qual alternativa a seguir apresenta corretamente uma boa prática de “clean code”?
Com base na situação apresentada, observe as afirmativas a seguir:
- 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.
- Os testes unitários, por si só, são suficientes para garantir que não ocorram erros em produção quando todos passam corretamente.
- 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:
Com base nos princípios de código limpo, assinale a alternativa que reconhece a forma de melhorar a legibilidade desse código:
Semana 6 9
Com base na prática de revisão de código e nas contribuições de boas práticas adotadas em equipes ágeis, observe e associe as práticas de revisão de código às suas principais características.
| Práticas de Revisão de Código | Características |
| I. Revisão Técnica | A. Foca na identificação de problemas de lógica e erros no comportamento do código, assegurando que o sistema funcione conforme esperado. |
| II. Revisão de Estilo | B. Analisa o código em termos de clareza e legibilidade, garantindo que as convenções de estilo e as boas práticas de codificação sejam seguidas. |
| III. Revisão de Funcionalidade | C. Verifica o desempenho do código, identificando áreas que podem ser otimizadas para melhorar a eficiência e reduzir o uso de recursos. |
| IV. Revisão de Performance | D. Foca na correção de erros de implementação, como falhas de sintaxe, referências incorretas e falta de validações necessárias. |
Assinale a alternativa que apresenta a associação correta:
Assinale a alternativa que apresenta uma informação correta sobre dívida técnica de acordo com o autor Everson Mauda.
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.
Com base na situação descrita, assinale a alternativa que identifica uma característica da programação pareada:
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:
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:
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.
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.
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.
Semana 7 8

Figura: Código em Java para manipulação de arquivo.
Fonte: Autor.
Com base no apresentado do trecho acima, avalie as afirmativas a seguir:
- A documentação da classe está em conformidade com a boa prática do Javadoc, pois descreve adequadamente a responsabilidade da classe.
- O método read está bem documentado, pois informa claramente o propósito, os parâmetros e o valor retornado.
- O método isFileValid não possui Javadoc, o que pode dificultar o entendimento de sua funcionalidade, principalmente em uso por outras equipes ou módulos.
- A ausência de Javadoc no método logReadOperation é aceitável, já que o método realiza uma operação de log simples e não retorna valor.
Está correto o que se afirma em:
Com base nesse cenário, observe as afirmativas a seguir:
- A equipe planejou reformular a interface com base em uma linguagem mais técnica, adequada ao jargão médico, garantindo maior precisão nas informações.
- A reformulação da interface será guiada por entrevistas e observações realizadas com usuários reais, que participaram ativamente da construção das soluções propostas.
- A equipe optou por concentrar os testes de usabilidade apenas na fase final do projeto, para evitar interrupções no desenvolvimento e garantir maior fluidez nas entregas.
Está correto o que se afirma em:
Sobre essa situação, assinale a alternativa que reconhece a abordagem para a criação de um design mais eficaz para os usuários:
O que é correto afirmar sobre arquitetura em três camadas?
Com base nesse contexto, compreenda e associe as ferramentas de documentação às suas principais características ou abordagens.
| Ferramentas / Abordagens | Características / Abordagens |
| I. Javadoc | A. Utiliza docstrings e arquivos de configuração para gerar documentação técnica de sistemas Python. |
| II. JaCoCo | B. Avalia a qualidade do código com base em métricas como duplicação, cobertura e complexidade ciclomática. |
| III. SonarQube | C. Gera documentação automática em formato HTML a partir de comentários estruturados no código Java. |
| IV. Sphinx | Produz relatórios detalhados sobre cobertura de testes de código Java, integrando-se a ferramentas de CI. |
Assinale a alternativa que apresenta a associação correta:
Quais são os passos do design centrado no usuário de acordo com Ricardo Dias?
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:
Quais são as tags (@) JavaDoc?