Questão de Engenharia de Software — Geral — INSTITUTO AOCP 2024
Engenharia de Software›Geral
Código
qa631611
Banca
INSTITUTO AOCP
Órgão
MGI
Ano
2024
Cargo
Esp ( )
A respeito de integração e entrega contínua em desenvolvimento de software, assinale a alternativa correta.
AIntegração contínua é uma prática que requer a integração de código apenas ao final do ciclo de desenvolvimento, garantindo a estabilidade do sistema.
BEntrega contínua significa que o software é entregue automaticamente aos clientes assim que uma nova funcionalidade é desenvolvida.
CIntegração contínua e entrega contínua são práticas que não se aplicam ao desenvolvimento ágil de software.
DIntegração contínua envolve a integração frequente de código em um repositório compartilhado, em que cada integração é verificada por meio de builds automatizados e testes.
EEntrega contínua é uma prática que dispensa a necessidade de testes automatizados, focando apenas na integração frequente de código.
Revelar gabarito e comentário▾
GabaritoD — Integração contínua envolve a integração frequente de código em um repositório compartilhado, em que cada integração é verificada por meio de builds automatizados e testes.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Integração Contínua e Entrega Contínua (CI/CD)
Gabarito: letra D. A integração contínua (CI) é a prática de integrar o código frequentemente em um repositório compartilhado, com cada integração sendo verificada por builds e testes automatizados — exatamente o que a alternativa D descreve. As demais alternativas distorcem o conceito, seja invertendo a frequência da integração, confundindo entrega contínua com implantação automática, negando a aplicação ao desenvolvimento ágil ou dispensando testes.
A integração contínua (CI) e a entrega contínua (CD) são práticas centrais do DevOps e do desenvolvimento ágil de software. A CI surgiu para combater o problema clássico da "integração tardia": quando os desenvolvedores trabalham em branches separados por semanas e só integram o código no final, os conflitos de merge se acumulam e a integração se torna um evento doloroso e arriscado. A solução proposta é integrar o código ao repositório principal com muita frequência — várias vezes ao dia, se possível — e, a cada integração, disparar automaticamente um processo de build e uma suíte de testes. Se algo quebrar, o time é avisado imediatamente, permitindo corrigir o problema em minutos, não em dias.
A entrega contínua (CD) é uma extensão da CI: além de integrar e testar continuamente, o código fica permanentemente em um estado pronto para ser implantado em produção. A diferença crucial é que, na entrega contínua, a implantação em produção ainda é uma decisão manual (um "clique de botão"), enquanto na implantação contínua (continuous deployment) todo o processo até produção é automatizado, sem intervenção humana. O material de apoio reforça essa distinção: "a entrega contínua é uma extensão, que não só traz um fluxo de automatização contínua para os testes da integração, como também para os deploys e processos de lançamento, permitindo que você atualize sua aplicação com apenas um clique de botão".
Um exemplo prático: uma equipe usa um pipeline CI/CD. Cada vez que um desenvolvedor faz um push para o branch principal, o servidor de CI (como Jenkins, GitLab CI ou GitHub Actions) compila o projeto, roda os testes unitários e de integração. Se tudo passar, o artefato é publicado em um repositório de artefatos. Na entrega contínua, a equipe de operações pode, com um clique, implantar essa versão em produção. Na implantação contínua, esse deploy acontece automaticamente. Em ambos os casos, os testes automatizados são indispensáveis — sem eles, não há como garantir que o código está sempre pronto para ser lançado.
A pegadinha que a banca explora neste tema é a confusão entre os três conceitos: integração contínua (CI), entrega contínua (CD) e implantação contínua (continuous deployment). A CI foca na integração frequente e na verificação automática; a CD garante que o software está sempre pronto para ser lançado, mas o deploy final é manual; a implantação contínua automatiza até o deploy em produção. Além disso, é comum a banca afirmar que CI/CD não se aplica ao desenvolvimento ágil — o que é falso, pois essas práticas são fortemente associadas a metodologias ágeis e ao DevOps.
Guarde essa fronteira: CI = integração frequente + build/teste automático; CD = código sempre pronto para deploy (deploy manual); implantação contínua = deploy automático em produção. É exatamente nessa distinção que as alternativas se dividem.
CI/CD: Integração contínua (CI) (Integração frequente no repositório, Build e testes automatizados); Entrega contínua (CD) (Código sempre pronto para deploy, Deploy final é manual); Implantação contínua (Deploy automático em produção, Sem intervenção humana)
Alternativa A — ❌ Incorreta
Afirma que a integração contínua requer a integração do código apenas ao final do ciclo de desenvolvimento. Isso é o oposto do conceito: a CI exige integração frequente, ao longo de todo o desenvolvimento, justamente para evitar os problemas da integração tardia. O material de apoio é claro: "Integração Contínua (Continuous Integration): sempre que produzir uma nova funcionalidade, nunca esperar uma semana para integrar à versão atual do sistema". A alternativa inverte o princípio central da prática.
Alternativa B — ❌ Incorreta
Diz que a entrega contínua significa que o software é entregue automaticamente aos clientes assim que uma nova funcionalidade é desenvolvida. Isso descreve a implantação contínua (continuous deployment), não a entrega contínua. Na entrega contínua, o código fica pronto para ser implantado, mas a implantação em produção é uma decisão manual — a equipe de operações decide quando clicar no botão. A alternativa confunde os dois conceitos, trocando a etapa manual pela automática.
Alternativa C — ❌ Incorreta
Afirma que CI e CD não se aplicam ao desenvolvimento ágil. É exatamente o contrário: CI/CD são práticas fortemente associadas a metodologias ágeis e ao DevOps, pois permitem entregas frequentes, feedback rápido e adaptação contínua — valores centrais do manifesto ágil. O material de apoio menciona que a entrega contínua permite "lançamentos mais frequentes e ágeis", e o XP, por exemplo, é uma metodologia ágil que preza pela entrega contínua. A alternativa nega uma relação que é, na prática, uma das principais sinergias do desenvolvimento moderno.
Alternativa D — ✅ Correta ⟵ GABARITO
Descreve com precisão a integração contínua: "integração frequente de código em um repositório compartilhado, em que cada integração é verificada por meio de builds automatizados e testes". Isso corresponde exatamente à definição clássica de CI: os desenvolvedores integram suas mudanças ao branch principal com frequência, e cada integração dispara automaticamente um build e uma suíte de testes para detectar erros rapidamente. O material de apoio confirma: "na integração contínua, os desenvolvedores integram as suas mudanças ao branch principal sempre que possível. Nessa situação, as mudanças são validadas com builds de testes que rodam de forma automatizada".
Alternativa E — ❌ Incorreta
Afirma que a entrega contínua dispensa a necessidade de testes automatizados, focando apenas na integração frequente. É o oposto: a entrega contínua depende fortemente de testes automatizados, pois é isso que garante que o código está sempre pronto para ser lançado. O material de apoio é explícito: "o pipeline de entrega contínua não prescinde (dispensa) de testes. Muito pelo contrário, os testes são inclusive uma das etapas". Sem testes automatizados, não há como garantir a qualidade do código a cada integração, e a entrega contínua perde seu propósito.