O objetivo do planejamento consiste no desenvolvimento de processos, técnicas e atitudes administrativas que permitem avaliar as implicações futuras das decisões tomadas no presente e com foco objetivos empresariais. Esse alinhamento facilita a tomada de decisão no futuro, tornando-a mais ágil, consistente, coerente e eficaz.Conforme ANDRADE (2016, p.12), “(...) no contexto organizacional, pode-se conceituar planejamento como um processo formal, racional, sistêmico e flexível que visa facilitar a tomada de decisões, o alcance de objetivos e o direcionamento da organização a um futuro desejado.ANDRADE, Arnaldo Rosa de. Planejamento Estratégico - Formulação, Implementação e Controle, 2ª edição. Rio de Janeiro: Atlas, 2016. E-book. p.12. ISBN 9788597009040. Disponível em: https://integrada.minhabiblioteca.com.br/reader/books/9788597009040/. Acesso em: 28 dez. 2024.Neste sentido e com base nos princípios dessas abordagens, analise as afirmativas a seguir:
I. Planejamento é um processo formal, elaborado conscientemente, que organiza as atividades de forma racional e estruturada.
II. Planejamento é um processo racional porque suas etapas são independentes e podem ser executadas de forma isolada, sem prejuízo ao resultado.
III. Planejamento é um processo sistêmico, composto por etapas que formam ações interdependentes, interativas e integradas.
IV. Planejamento é um processo flexível, desenvolvido com reavaliações constantes para se adaptar às mudanças do ambiente.Está correto o que se afirma em:
As computações paralela e distribuída atendem às premissas da computação escalável, cada uma das quais com suas particularidades, características, vantagens e desvantagens, que fazem com que se defina qual é a melhor alternativa para o projeto computacional que se busca.Correlacione, adequadamente, o tipo de computação com os elementos a seguir.
Paralela
Distribuída
I. Execução de backup mais complexa.
II. Dependência da rede utilizada.
III. Erros dependentes do momento exato em que o escalonador do SO realiza um chaveamento de contexto.Assinale a alternativa que correlaciona, adequadamente, os dois grupos de informação.
A computação distribuída — que representa uma coleção de computadores independentes aparentando ser um único computador, com o hardware apresentando uma capacidade autônoma, com o software sendo visto pelos usuários como uma única máquina e com a transparência sendo um conceito-chave — possui a grande vantagem da extensibilidade.Com relação à extensibilidade da computação distribuída, avalie as afirmações a seguir, que explicam essa vantagem.I. O sistema se mantém estável.
II. Novos softwares podem ser instalados gradativamente.
III. Há compartilhamento de recursos.
IV. Recursos de alto custo podem ser mais bem utilizados.Está correto o que se afirma em:
Durante uma revisão de código em uma aplicação Java, o coordenador de qualidade observou que parte significativa das classes e métodos estava sem documentação adequada, dificultando o entendimento por novos membros da equipe. A recomendação foi implementar o uso do Javadoc e de outras estratégias que facilitassem a rastreabilidade técnica do sistema. Após algumas sprints, uma nova rodada de revisão foi feita para verificar se os ajustes estavam em conformidade com as boas práticas.
Com base nesse cenário, observe as afirmativas a seguir:
I. A adoção do Javadoc permite que comentários estruturados nos métodos e classes sejam convertidos em documentação navegável, facilitando a leitura técnica do sistema.
II. Mesmo com o uso do Javadoc, a qualidade da documentação depende da clareza e completude dos comentários inseridos pelos desenvolvedores.
III. A automatização por meio do Javadoc torna desnecessária a verificação manual da consistência entre código e documentação, já que a ferramenta garante a fidelidade entre ambos.
Está correto o que se afirma em:
Leia o trecho a seguir:
Durante o desenvolvimento de um sistema web, a equipe de testes automatizados decidiu utilizar o JaCoCo para acompanhar a cobertura de código em seus testes de unidade. Após configurar corretamente o plugin no arquivo pom.xml, foi gerado um relatório detalhado em HTML. No entanto, ao revisar o relatório, notaram que vários métodos estavam com cobertura zero, mesmo após a execução bem-sucedida dos testes. Um dos analistas, então, sugeriu que a equipe verificasse se os testes estavam [preencher 1] corretamente e se o relatório estava sendo [preencher 2] na pasta configurada no projeto.Neste contexto, identifique os termos de [preencher 1] e [preencher 2] que são substituídos por:
Durante o desenvolvimento de um sistema para uma clínica médica, diversos dilemas éticos surgem para os engenheiros de software envolvidos. A equipe precisa tomar decisões que envolvem desde a privacidade dos dados dos pacientes até a entrega de funcionalidades sob pressão. Esse contexto exige dos profissionais consciência de sua responsabilidade ética e técnica no exercício da função.Com base nesse cenário e nos princípios éticos da engenharia de software, observe e associe as situações abaixo aos princípios éticos que as representam.Princípios Éticos
I. Confiabilidade e qualidade do produto.
II. Privacidade e respeito às informações dos usuários.
III. Responsabilidade social e proteção do bem-estar público.
IV. Lealdade à equipe e respeito à hierarquia da empresa.Situações
A. Um engenheiro se recusa a implementar um mecanismo que permitiria ao gestor acessar históricos médicos dos pacientes sem o consentimento deles.
B. Diante de um prazo apertado, a equipe opta por entregar uma versão do sistema sem testes mínimos, mesmo sabendo que há risco de falhas em prontuários.
C. Uma desenvolvedora denuncia anonimamente um colega que modificava registros clínicos a pedido da administração para evitar processos legais.
D. Um engenheiro revisa cuidadosamente o código para evitar vulnerabilidades que poderiam expor dados sigilosos, mesmo isso levando mais tempo.Assinale a alternativa que apresenta a associação correta:
Leia o texto a seguir:"O desenvolvimento de software exige não só que o programa funcione, mas que seja compreensível e sustentável ao longo do tempo. O código limpo não é apenas uma escolha estética, mas uma prática que favorece a colaboração, a manutenção e a evolução de sistemas complexos."DUARTE, Abraão. Clean Code: boas práticas. dev.to, 2021. Disponível em: https://dev.to/abraaoduarte/clean-code-boas-praticas-19n0. Acesso em: 14 mai. 2025.No contexto do desenvolvimento de software, não basta que um sistema apenas funcione corretamente. À medida que projetos crescem em escala e complexidade, torna-se essencial que o código produzido seja claro, bem estruturado e de fácil manutenção. Essa preocupação vai além da funcionalidade imediata, refletindo um compromisso com a qualidade a longo prazo e com o trabalho colaborativo dentro das equipes de desenvolvimento.Com base nesse contexto e no conteúdo estudado, avalie as asserções a seguir e a relação proposta entre elas:I. Os métodos curtos, com nomes significativos e objetivos claros, facilitam a manutenção do código ao permitir que qualquer desenvolvedor entenda rapidamente o que está sendo feito, reduzindo a dependência de comentários.PORQUEII. Um dos pilares do código limpo é escrever métodos longos e detalhados, já que isso garante a explicação completa das regras de negócio e dispensa a necessidade de documentação externa.A respeito dessas asserções, assinale a alternativa correta:
Durante o desenvolvimento de software, é comum que as equipes utilizem métricas para avaliar a qualidade do código produzido. Tais métricas podem indicar não apenas o tamanho do sistema, mas também aspectos como sua complexidade, legibilidade e manutenibilidade. Entre essas métricas, podemos citar a contagem de linhas de código, a [preencher 1] ciclomática e a densidade de [preencher 2], que ajudam os times a identificar pontos que merecem atenção, facilitando o aprimoramento contínuo do código.Neste contexto, identifique os termos de [preencher 1] e [preencher 2] que são substituídos por:
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:
I. 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.
II. Os testes unitários, por si só, são suficientes para garantir que não ocorram erros em produção quando todos passam corretamente.
III. 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:
Uma equipe de desenvolvimento de software está trabalhando em um sistema de gestão escolar. Para cada nova funcionalidade implementada, é necessário garantir que os testes automatizados sejam executados rapidamente, de forma a verificar se nenhuma funcionalidade anterior foi quebrada.
Com base nessa situação, assinale a alternativa que reconhece a prática adotada pela equipe:
Qual refatoração possui o objetivo de “criar uma variável temporária separada para cada atribuição quando você tem uma variável temporária que mais de uma vez recebe uma atribuição, mas não é uma variável de laço nem um acumulador temporário”?
Leia o trecho a seguir:
Com o uso de ferramentas como o JaCoCo, torna-se possível avaliar aspectos importantes do teste de software, como a parte do código que ainda não foi verificada e o nível com que os testes percorrem diferentes possibilidades. Esses recursos facilitam a identificação de [preencher 1] não testados e oferecem uma visão mais clara sobre a [preencher 2] alcançada pelos testes.
Neste contexto, reconheça os termos de [preencher 1] e [preencher 2] que são substituídos por:
Uma equipe de desenvolvedores está utilizando o Coverage.py para medir a cobertura de testes de seu código. O objetivo é garantir que o código esteja sendo amplamente testado, para evitar falhas e garantir o bom funcionamento do sistema. Durante a análise, a equipe percebe que algumas partes do código não estão sendo cobertas pelos testes, o que pode resultar em falhas inesperadas.
Com base nesse cenário, assinale a alternativa que identifica o uso do Coverage.py:
Qual refatoração possui o objetivo de “extrair uma expressão, cujo resultado está sendo armazenado em uma variável temporária, para um método e substituir todas as referências à variável temporária pela expressão, para que este novo método possa então ser usado em outros métodos”?
Em um sistema de software, o desenvolvedor está buscando melhorar a legibilidade do código e reduzir a duplicação de código em várias funções semelhantes. Para isso, ele decide aplicar o conceito de refatoração, tornando o código mais limpo, fácil de manter e entender. Sobre a situação em destaque, assinale a alternativa que reconhece uma abordagem adequada de refatoração:
Leia o cenário abaixo:\nEm 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.\nCom relação à aplicação da cobertura de declaração em testes automatizados, observe as afirmativas a seguir:\n\nI. 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.\nII. A cobertura de declaração é suficiente para garantir que todas as possíveis condições e caminhos lógicos do código foram testados.\nIII. 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.\n\nEstá correto o que se afirma em:
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:\n\nI. 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.\nII. 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.\nIII. O CMake substitui o compilador, realizando a compilação do projeto de forma independente, sem precisar do make ou do gcc.\n\nEstá correto o que se afirma em:
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.PORQUEII. 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:
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: