Durante a revisão de código de uma biblioteca Java para manipulação de arquivos CSV, um dos revisores notou que as documentações geradas via Javadoc estavam incompletas ou mal posicionadas. Abaixo está um trecho da classe analisada: Figura: Código em Java para manipulação de arquivo. Fonte: Autor. Com base no apresentado do trecho acima, avalie as afirmativas a seguir: A documentação da classe está em conformidade com a boa prática do Javadoc, pois descreve adequadamente a responsabilidade da classe. O método read está bem documentado, pois informa claramente o propósito, os parâmetros e o valor retornado. O método isFileValid não possui Javadoc, o que pode dificultar o entendimento de sua funcionalidade, principalmente em uso por outras equipes ou módulos. A ausência de Javadoc no método logReadOperation é aceitável, já que o método realiza uma operação de log simples e não retorna valor. Está correto o que se afirma em:
Durante o desenvolvimento de um sistema web de gestão escolar, uma equipe de desenvolvedores adotou o padrão arquitetural MVC (Model-View-Controller) em conjunto com a separação por camadas. Essa abordagem foi escolhida para melhorar a organização do código, facilitar a manutenção e permitir uma melhor divisão de responsabilidades entre os componentes do sistema. Com base nesse cenário, observe as afirmativas a seguir: A camada de controle não deve acessar diretamente a base de dados, pois esse papel pertence à camada de modelo, que encapsula as regras de negócio e o acesso à persistência. A camada de visão não deve conter lógica de negócio, como cálculos ou validações, devendo se limitar à exibição dos dados tratados pelas demais camadas. A camada de modelo deve conter tanto a lógica de negócio quanto a apresentação visual dos dados para facilitar o reuso em múltiplas interfaces. Está correto o que se afirma em:
Leia o trecho a seguir: Durante o desenvolvimento de um sistema web, a equipe de testes automatizados decidiu utilizar o JaCoCo para acompanhar a cobertura de código em seus testes de unidade. Após configurar corretamente o plugin no arquivo pom.xml, foi gerado um relatório detalhado em HTML. No entanto, ao revisar o relatório, notaram que vários métodos estavam com cobertura zero, mesmo após a execução bem-sucedida dos testes. Um dos analistas, então, sugeriu que a equipe verificasse se os testes estavam [preencher 1] corretamente e se o relatório estava sendo [preencher 2] na pasta configurada no projeto. Neste contexto, identifique os termos de [preencher 1] e [preencher 2] que são substituídos por:
Imagine que um desenvolvedor está criando uma aplicação de aprendizado de matemática para crianças. A interface precisa ser intuitiva e adequada ao público-alvo, levando em consideração suas limitações cognitivas e a importância de manter a motivação ao longo do processo de aprendizado. A aplicação inclui recursos como feedback visual e desafios baseados em pontuação. Sobre essa situação, assinale a alternativa que reconhece a abordagem para a criação de um design mais eficaz para os usuários:
Durante o desenvolvimento de um sistema de cadastro de clientes, uma equipe optou por criar um módulo de busca utilizando soluções mais rápidas e menos estruturadas, com o objetivo de entregar o sistema dentro do prazo do cliente. Apesar de o sistema ter funcionado, os desenvolvedores perceberam que, a longo prazo, haveria dificuldades para realizar manutenções e melhorias naquele módulo. Um dos desenvolvedores comentou que a equipe havia contraído uma “dívida técnica” com essa decisão. Com base na situação apresentada, assinale a alternativa que reconhece o conceito de dívida técnica:
Leia o trecho a seguir: Durante o processo de desenvolvimento de software, uma das práticas mais eficazes para garantir a qualidade e a manutenção do código é a revisão entre colegas. Nesse processo, um ou mais desenvolvedores analisam o código produzido por outro membro da equipe em busca de possíveis melhorias. A revisão de código, além de permitir a detecção de erros que poderiam passar despercebidos, contribui para a disseminação do conhecimento técnico entre os envolvidos e para o fortalecimento do trabalho em equipe. Entre os benefícios mais reconhecidos estão a melhoria da [preencher 1] do código e a redução de [preencher 2] no futuro. Neste contexto, identifique os termos de [preencher 1] e [preencher 2] que são substituídos por:
Durante uma aula de práticas de desenvolvimento, a professora propôs aos alunos uma atividade em duplas para resolver um desafio de programação. João e Luana começaram a desenvolver a aplicação juntos, compartilhando decisões e alternando funções ao longo da atividade, com foco na qualidade do código e na troca de ideias. Com base na situação descrita, assinale a alternativa que identifica uma característica da programação pareada:
Durante a terceira iteração de um projeto de médio porte, a equipe de desenvolvimento passou a perceber que certos aspectos relacionados à qualidade interna do código estavam sendo deixados em segundo plano. Entre os desafios identificados, estavam inconsistências na padronização, trechos de código que poderiam ser refatorados e aspectos que impactavam a manutenibilidade do sistema. A equipe optou por documentar essas situações ao longo do ciclo de desenvolvimento para tratá-las de forma planejada. Com base nesse cenário, analise as afirmativas a seguir: A ausência de testes automatizados em áreas sensíveis do sistema representa uma dívida técnica que compromete a confiabilidade e a evolução segura do software. Comentários que não refletem a versão atual do código contribuem para a dificuldade de compreensão e manutenção, sendo considerados um tipo de dívida técnica. A existência de código repetido e métodos muito extensos caracteriza acúmulo de dívida técnica, pois aumenta a complexidade e os riscos nas futuras alterações. O uso do backlog como repositório para registrar pontos de dívida técnica contribui para o controle e o planejamento da equipe em relação à qualidade do projeto. Está correto o que se afirma em:
Leia o trecho abaixo: Durante o desenvolvimento de um sistema educacional, a equipe de programadores incorporou práticas de melhoria contínua ao processo de desenvolvimento, incluindo revisões semanais de código. Nessas sessões, os membros da equipe analisam aspectos como legibilidade, estrutura lógica e confiabilidade das implementações realizadas por seus colegas. Com base nessa situação, analise as asserções a seguir e a relação proposta entre elas: I. A revisão de código deve incluir tanto a análise da clareza e legibilidade do código quanto a verificação da presença de testes que garantam sua confiabilidade, PORQUE II. a identificação de código com lógica confusa e sem cobertura de testes pode indicar pontos críticos de manutenção, que devem ser priorizados durante a revisão para evitar dívidas técnicas. A respeito dessas asserções, assinale a alternativa correta:
A revisão de código é uma prática essencial em equipes de desenvolvimento de software, pois visa identificar erros, melhorar a qualidade do código e compartilhar conhecimento entre os membros da equipe. Durante o processo, um desenvolvedor revisa o código de outro, oferecendo sugestões e melhorias, além de corrigir falhas que podem passar despercebidas. Com base na prática de revisão de código e nas contribuições de boas práticas adotadas em equipes ágeis, observe e associe as práticas de revisão de código às suas principais características. Práticas de Revisão de Código Características I. Revisão Técnica A. Foca na identificação de problemas de lógica e erros no comportamento do código, assegurando que o sistema funcione conforme esperado. II. Revisão de Estilo B. Analisa o código em termos de clareza e legibilidade, garantindo que as convenções de estilo e as boas práticas de codificação sejam seguidas. III. Revisão de Funcionalidade C. Verifica o desempenho do código, identificando áreas que podem ser otimizadas para melhorar a eficiência e reduzir o uso de recursos. IV. Revisão de Performance D. Foca na correção de erros de implementação, como falhas de sintaxe, referências incorretas e falta de validações necessárias. Assinale a alternativa que apresenta a associação correta:
Leia o trecho a seguir: Durante o desenvolvimento de uma aplicação web, a equipe escolheu adotar o trabalho colaborativo entre programadores como uma estratégia para melhorar a qualidade do código e fortalecer a comunicação técnica dentro da equipe. Nessa abordagem, um desenvolvedor escreve o código enquanto o outro revisa e contribui com sugestões durante o processo. Com base nessa situação, observe as afirmativas a seguir: I. A colaboração entre os programadores permitiu que o programador menos experiente adquirisse rapidamente novos conhecimentos, favorecendo o aprendizado contínuo. II. O desenvolvedor responsável pela revisão pode contribuir com ideias importantes sobre a estrutura do código, mesmo sem ser o principal responsável pela escrita. III. O uso dessa abordagem afetou a produtividade da equipe, resultando em um atraso significativo nas entregas do projeto. Está correto o que se afirma em:
Durante o desenvolvimento de um sistema de controle de estoque, a equipe decidiu adotar uma abordagem colaborativa para melhorar a qualidade do código e promover o aprendizado entre os membros. Uma das estratégias adotadas foi a programação em pares, uma técnica comum em metodologias ágeis como o Extreme Programming (XP), na qual dois programadores trabalham juntos em uma mesma tarefa, alternando entre os papéis de codificador e revisor. Com base nessa situação, observe as afirmativas abaixo: Ao trabalharem juntos, os programadores conseguiram identificar falhas no momento da implementação, o que evitou retrabalho nas etapas seguintes do projeto. Como os dois programadores sempre executavam tarefas diferentes ao mesmo tempo, a entrega de funcionalidades era mais rápida, mesmo com pouca troca de conhecimento entre eles. Um dos membros da equipe, com menos experiência, relatou que passou a compreender melhor a estrutura do sistema e as boas práticas, graças à troca contínua com seu par durante as sessões. Está correto o que se afirma em:
Os requisitos não funcionais podem ser classificados em diferentes categorias, como os requisitos de desempenho, que tratam de [preencher 1] , e os requisitos de segurança, que tratam de [preencher 2] . Esses tipos de requisitos impõem restrições ao sistema para garantir que ele atenda aos critérios de qualidade e eficiência. As lacunas [preencher 1] e [preencher 2] são corretamente substituídas por:
O documento de especificação de requisitos pode ter diferentes formatos e níveis de detalhamento, dependendo das necessidades da organização e do projeto. Alguns documentos podem ser mais simples, enquanto outros podem ser extremamente detalhados, incluindo diagramas e especificações formais. Diante disso, assinale a alternativa que descreve uma abordagem correta para a estruturação de um documento de especificação de requisitos:
No desenvolvimento de software, é importante identificar e definir corretamente os requisitos para garantir que o produto final atenda às necessidades dos usuários e funcione de acordo com as especificações esperadas. Requisitos de software são categorizados de várias formas, cada uma com um propósito específico que contribui para o sucesso do projeto. Diante disso, assinale a alternativa que apresenta o tipo de requisito de software entre as opções abaixo:
Ferramentas de automação de testes são amplamente utilizadas para aumentar a eficiência e a precisão dos processos de verificação em sistemas de software. Essas ferramentas oferecem diferentes funcionalidades, como criação e reprodução de scripts, validações e integração com outras plataformas. O Selenium IDE é uma dessas ferramentas, sendo frequentemente usada em cenários específicos de testes. Com base nas características do Selenium IDE, selecione a alternativa que apresenta uma funcionalidade corretamente atribuída a essa ferramenta.
A gestão de dependências no desenvolvimento de software é fundamental para garantir que todas as partes do projeto funcionem harmoniosamente. Essa prática envolve monitorar e controlar como diferentes componentes de software se relacionam e dependem uns dos outros. A falta de uma gestão adequada pode levar a problemas de integração e falhas no software. Qual das seguintes alternativas descreve corretamente a gestão de dependências no contexto da gestão de configuração de software?
A validação de software é uma etapa crítica no processo de desenvolvimento, destinada a assegurar que o sistema esteja em conformidade com sua especificação e que atende às expectativas do cliente. Durante o processo de validação, diferentes tipos de testes são realizados para garantir a qualidade e a funcionalidade do software. Logo, assinale a alternativa correta sobre o tipo de teste que é mais adequado para identificar problemas que só se manifestam quando todos os componentes do sistema estão integrados.
Durante o desenvolvimento de um novo sistema para uma empresa, a equipe de engenharia de software está avaliando qual modelo de processo utilizar. Eles consideram que o projeto possui muitos riscos desconhecidos e que podem surgir novos requisitos durante o desenvolvimento. A equipe decide usar um modelo de processo que incorpora a análise de riscos e permite revisões e aprimoramentos constantes em ciclos iterativos, adaptando-se melhor às mudanças e incertezas. Neste sentido, assinale a alternativa que descreve uma vantagem do modelo em Espiral em comparação ao modelo em Cascata.
Os diferentes modelos de processo de software são utilizados para gerenciar o desenvolvimento de software, cada um com suas características específicas. O modelo em cascata, por exemplo, segue uma abordagem sequencial e linear, enquanto o modelo incremental permite o desenvolvimento em etapas curtas com feedback contínuo. Logo, assinale a alternativa que descreve corretamente uma característica do modelo espiral.
A engenharia de software não apenas se preocupa com o desenvolvimento de sistemas de software, mas também com a sua manutenção e evolução ao longo do tempo. Essas atividades são essenciais para garantir que o software permaneça útil e relevante diante de mudanças nos requisitos e nas tecnologias disponíveis. Com base no texto base, analise as seguintes descrições e identifique qual delas corresponde corretamente a um aspecto fundamental da engenharia de software. Logo, assinale a alternativa que descreve um aspecto fundamental da engenharia de software.
Em uma aplicação bancária, proteger os dados dos usuários contra acessos não autorizados é fundamental para manter a confiança e a segurança. A implementação de medidas que garantam a segurança das informações é uma prioridade no desenvolvimento de software. Diante disso, assinale a alternativa que exemplifica um requisito de segurança.
O processo de engenharia de requisitos é composto por várias etapas essenciais, que incluem a elicitação, análise, especificação, validação e gestão de requisitos. Cada etapa desempenha um papel crucial para assegurar que os requisitos sejam corretamente compreendidos e documentados. Assinale a alternativa que descreve corretamente uma das etapas do processo de engenharia de requisitos.
No processo de desenvolvimento de software, diferentes níveis de requisitos são utilizados para descrever tanto as necessidades gerais dos usuários quanto às características técnicas detalhadas do sistema. Esses requisitos podem variar quanto ao grau de abstração ou especificidade, dependendo da fase do projeto e do público-alvo, existem diferentes formas de categorizar os requisitos de acordo com seu nível de detalhamento. Assinale a alternativa que descreve corretamente essas características.
A Engenharia de Requisitos é uma subárea da Engenharia de Software dedicada a descobrir, analisar, documentar, verificar e validar os requisitos de um sistema. Esses requisitos refletem as necessidades dos clientes e é fundamental para garantir o sucesso de um projeto de software. Qual das alternativas abaixo define corretamente o que é um requisito?
Os requisitos de desempenho especificam as condições de operação do sistema, incluindo velocidade, capacidade e confiabilidade. Esses requisitos são importantes para garantir que o sistema funcione de forma eficaz sob diversas condições de uso, influenciando diretamente a experiência do usuário e a eficiência operacional. Neste sentido, assinale a alternativa que representa um requisito de desempenho:
Durante o processo de elicitação de requisitos para o desenvolvimento de software, são utilizadas diversas técnicas para coletar as informações necessárias. Cada técnica tem suas próprias características e é escolhida com base nas necessidades do projeto e na relação com o cliente. Considerando isso, qual das alternativas descreve corretamente uma dessas técnicas?
No desenvolvimento de software, os requisitos podem ser classificados como funcionais e não funcionais. Requisitos funcionais descrevem o comportamento específico que o sistema deve ter, enquanto os requisitos não funcionais descrevem as qualidades e restrições do sistema, como desempenho e usabilidade. Agora, suponha que você esteja desenvolvendo um aplicativo de comércio eletrônico, diante disso, assinale a alternativa que traz um exemplo que representa um requisito não funcional para esse projeto.
O documento de especificação de requisitos é essencial no desenvolvimento de software, sendo utilizado por várias partes interessadas para diferentes propósitos. Este documento pode ser utilizado pelo cliente, pelos gerentes de projeto, pelos desenvolvedores, pelos testadores, entre outros. Cada um destes stakeholders utiliza o documento para orientar suas atividades específicas relacionadas ao projeto. Identifique a alternativa que descreve um dos usos do documento de especificação de requisitos:
A gestão de configuração de software é fundamental para assegurar que todas as partes de um projeto de software sejam organizadas e controladas de maneira eficaz. Ela envolve o rastreamento de várias versões de todos os artefatos produzidos durante o desenvolvimento, garantindo que mudanças possam ser feitas de maneira controlada e todas as dependências sejam gerenciadas adequadamente. Essa prática é crucial para manter a integridade e a qualidade do software. Analise e assinale corretamente a alternativa sobre um item de configuração de software.