Questão nº 49
Questão de Desenvolvimento de Sistemas · FGV CGU 2021 - Tarde (nº 49)
Sistemas de Controle de Versão (SCV), tais como o Mercurial, o GIT e o SVN, são ferramentas indispensáveis para apoiar as melhores práticas de desenvolvimento de sistemas.
Os SCVs atualmente disponíveis possuem grande flexibilidade para se adaptar ao fluxo de trabalho de um time e suas práticas de desenvolvimento. No GIT, essa customização do fluxo de trabalho para um time ou projeto é comum, e muitos desses fluxos de trabalho utilizam uma abordagem conhecida como ramificação de recurso (Feature Branch).
Uma possível limitação dessa abordagem seria o(a):
- Adiminuição da velocidade de desenvolvimento. A necessidade de utilização de rebase quando uma funcionalidade é finalizada aumenta a complexidade do desenvolvimento;
- Bindisponibilidade de dados de auditoria. Existe perda parcial do histórico do repositório quando é realizado o merge de um ramo (Branch);
- Cimpacto na integração contínua. Se o ciclo de entrega de funcionalidade de um time é longo, aumentam os riscos e desafios dos merges e integrações; (alternativa correta)
- Dmenor qualidade funcional. O novo fluxo de trabalho dificulta a elaboração de testes de aceitação em função da separação de funcionalidades em diferentes ramos (Branches);
- Emenor qualidade do código. O novo fluxo de trabalho dificulta a execução de revisão de código (Code Review) pela imposição de pull requests e merge reviews.
Resposta comentada
Gabarito Alternativa C
Conceito-chave: Feature Branch é criar um ramo (uma cópia do código) para cada nova funcionalidade, trabalhar nela isoladamente e depois juntar (merge) com o ramo principal. O problema é que, quanto mais tempo a funcionalidade fica isolada, mais o código principal "anda" e mais difícil e arriscado fica juntar tudo de volta — isso é o impacto na integração contínua.
- (A) Incorreta: O rebase é opcional e não é uma regra; a velocidade de desenvolvimento geralmente aumenta com o isolamento, e a complexidade do merge não é uma limitação inerente, mas sim consequência de ciclos longos (que é o caso da C).
- (B) Incorreta: O Git preserva todo o histórico, inclusive dos merges; não há perda de auditoria, pois os commits de cada branch continuam registrados.
- (C) Correta: Se o time demora a entregar a funcionalidade (ciclo longo), o branch fica muito tempo divergente do principal, gerando conflitos grandes e riscos na hora do merge — exatamente o problema da integração contínua.
- (D) Incorreta: Testes de aceitação podem ser feitos normalmente em cada branch; a separação de funcionalidades não impede testes, apenas exige que eles sejam rodados antes do merge.
- (E) Incorreta: O pull request e o code review são facilitados pelo Feature Branch, não dificultados; eles são justamente práticas recomendadas nesse fluxo.
Armadilha da banca na (A): Ela tenta te convencer de que o rebase é obrigatório e que isso "diminui a velocidade". Na prática, o rebase é uma ferramenta opcional para organizar o histórico, e a real limitação do Feature Branch não é o rebase, mas sim o tempo de vida longo do branch, que gera conflitos de integração — exatamente o que a (C) aponta.
Fonte: FGV CGU 2021 - Tarde Auditor Federal de Finanças e Controle - Área Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.