[{"data":1,"prerenderedAt":848},["ShallowReactive",2],{"navigation_docs":3,"-atividades-atv-15-gitflow-colaboracao":252,"-atividades-atv-15-gitflow-colaboracao-surround":843},[4,96,189],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"⚙️ Engenharia de Software","i-lucide-book-open","\u002Fengenharia-software","1.engenharia-software",[10,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92],{"title":5,"path":7,"stem":11},"1.engenharia-software\u002Findex",{"title":13,"path":14,"stem":15},"📋 Plano de Ensino e Aplicações","\u002Fengenharia-software\u002Fengenharia-software-aplicacoes","1.engenharia-software\u002F01.engenharia-software-aplicacoes",{"title":17,"path":18,"stem":19},"Cap 01: Introdução e Natureza do Software","\u002Fengenharia-software\u002Fcap-01","1.engenharia-software\u002F02.cap-01",{"title":21,"path":22,"stem":23},"Cap 02: Modelos de Processo de Software","\u002Fengenharia-software\u002Fcap-02","1.engenharia-software\u002F03.cap-02",{"title":25,"path":26,"stem":27},"Cap 03: As Atividades do Processo","\u002Fengenharia-software\u002Fcap-03","1.engenharia-software\u002F04.cap-03",{"title":29,"path":30,"stem":31},"Cap 04: Metodologias Ágeis","\u002Fengenharia-software\u002Fcap-04","1.engenharia-software\u002F05.cap-04",{"title":33,"path":34,"stem":35},"Cap 05: Fundamentos de Requisitos","\u002Fengenharia-software\u002Fcap-05","1.engenharia-software\u002F06.cap-05",{"title":37,"path":38,"stem":39},"Cap 06: Elicitação e Levantamento","\u002Fengenharia-software\u002Fcap-06","1.engenharia-software\u002F07.cap-06",{"title":41,"path":42,"stem":43},"Cap 07: Especificação de Requisitos (ERS)","\u002Fengenharia-software\u002Fcap-07","1.engenharia-software\u002F08.cap-07",{"title":45,"path":46,"stem":47},"Cap 08: Validação e Gestão","\u002Fengenharia-software\u002Fcap-08","1.engenharia-software\u002F09.cap-08",{"title":49,"path":50,"stem":51},"Cap 09: Fundamentos da Modelagem","\u002Fengenharia-software\u002Fcap-09","1.engenharia-software\u002F10.cap-09",{"title":53,"path":54,"stem":55},"Cap 10: Diagrama de Casos de Uso (Conceitos)","\u002Fengenharia-software\u002Fcap-10","1.engenharia-software\u002F11.cap-10",{"title":57,"path":58,"stem":59},"Cap 11: Casos de Uso (Prática e Relações)","\u002Fengenharia-software\u002Fcap-11","1.engenharia-software\u002F12.cap-11",{"title":61,"path":62,"stem":63},"Cap 12: Diagrama de Classes (Conceitos)","\u002Fengenharia-software\u002Fcap-12","1.engenharia-software\u002F13.cap-12",{"title":65,"path":66,"stem":67},"Cap 13: Herança e Polimorfismo","\u002Fengenharia-software\u002Fcap-13","1.engenharia-software\u002F14.cap-13",{"title":69,"path":70,"stem":71},"Cap 14: Diagrama de Sequência","\u002Fengenharia-software\u002Fcap-14","1.engenharia-software\u002F15.cap-14",{"title":73,"path":74,"stem":75},"Cap 15: Diagramas Dinâmicos (Estados e Atividades)","\u002Fengenharia-software\u002Fcap-15","1.engenharia-software\u002F16.cap-15",{"title":77,"path":78,"stem":79},"Cap 16: Qualidade de Software (SQA)","\u002Fengenharia-software\u002Fcap-16","1.engenharia-software\u002F17.cap-16",{"title":81,"path":82,"stem":83},"Cap 17: Estratégias de Teste","\u002Fengenharia-software\u002Fcap-17","1.engenharia-software\u002F18.cap-17",{"title":85,"path":86,"stem":87},"Cap 18: Manutenção e Evolução","\u002Fengenharia-software\u002Fcap-18","1.engenharia-software\u002F19.cap-18",{"title":89,"path":90,"stem":91},"Cap 19: Gerência de Configuração (SCM)","\u002Fengenharia-software\u002Fcap-19","1.engenharia-software\u002F20.cap-19",{"title":93,"path":94,"stem":95},"Cap 20: Conclusão e Próximos Passos","\u002Fengenharia-software\u002Fcap-20","1.engenharia-software\u002F21.cap-20",{"title":97,"icon":98,"path":99,"stem":100,"children":101},"🛠️ Atividades","i-lucide-wrench","\u002Fatividades","2.atividades",[102,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161,165,169,173,177,181,185],{"title":103,"path":99,"stem":104},"📋 Orientações Gerais","2.atividades\u002Findex",{"title":106,"path":107,"stem":108},"📅 Cronograma","\u002Fatividades\u002Fcronograma","2.atividades\u002F01.cronograma",{"title":110,"path":111,"stem":112},"✏️ Atividade 01: Escopo e Personas","\u002Fatividades\u002Fatv-01-escopo","2.atividades\u002F02.atv-01-escopo",{"title":114,"path":115,"stem":116},"⚙️ Atividade 02: Processos de Software","\u002Fatividades\u002Fatv-02-processos","2.atividades\u002F03.atv-02-processos",{"title":118,"path":119,"stem":120},"📋 Atividade 03: Engenharia de Requisitos","\u002Fatividades\u002Fatv-03-requisitos","2.atividades\u002F04.atv-03-requisitos",{"title":122,"path":123,"stem":124},"📝 Atividade 04: User Stories e Backlog","\u002Fatividades\u002Fatv-04-backlog","2.atividades\u002F05.atv-04-backlog",{"title":126,"path":127,"stem":128},"🎭 Atividade 05: Casos de Uso (UML)","\u002Fatividades\u002Fatv-05-casos-uso","2.atividades\u002F06.atv-05-casos-uso",{"title":130,"path":131,"stem":132},"🖼️ Atividade 06: Prototipagem e Wireframes","\u002Fatividades\u002Fatv-06-prototipagem","2.atividades\u002F07.atv-06-prototipagem",{"title":134,"path":135,"stem":136},"🏛️ Atividade 07: Diagrama de Classes (UML)","\u002Fatividades\u002Fatv-07-classes","2.atividades\u002F08.atv-07-classes",{"title":138,"path":139,"stem":140},"🔀 Atividade 08: Diagrama de Sequência (UML)","\u002Fatividades\u002Fatv-08-sequencia","2.atividades\u002F09.atv-08-sequencia",{"title":142,"path":143,"stem":144},"🧪 Atividade 09: Qualidade e Testes","\u002Fatividades\u002Fatv-09-testes","2.atividades\u002F10.atv-09-testes",{"title":146,"path":147,"stem":148},"🏁 Atividade 10: Projeto Integrador Final","\u002Fatividades\u002Fatv-10-projeto-final","2.atividades\u002F11.atv-10-projeto-final",{"title":150,"path":151,"stem":152},"📊 Atividade 11: Diagrama de Atividades (UML)","\u002Fatividades\u002Fatv-11-atividades","2.atividades\u002F12.atv-11-atividades",{"title":154,"path":155,"stem":156},"🔄 Atividade 12: Diagrama de Transição de Estados (UML)","\u002Fatividades\u002Fatv-12-estados","2.atividades\u002F13.atv-12-estados",{"title":158,"path":159,"stem":160},"🏗️ Atividade 13: Arquitetura de Software e Padrões","\u002Fatividades\u002Fatv-13-arquitetura","2.atividades\u002F14.atv-13-arquitetura",{"title":162,"path":163,"stem":164},"🌐 Atividade 14: Modelagem de APIs REST e Swagger","\u002Fatividades\u002Fatv-14-apis-swagger","2.atividades\u002F15.atv-14-apis-swagger",{"title":166,"path":167,"stem":168},"🌿 Atividade 15: GitFlow e Trabalho Colaborativo","\u002Fatividades\u002Fatv-15-gitflow-colaboracao","2.atividades\u002F16.atv-15-gitflow-colaboracao",{"title":170,"path":171,"stem":172},"🚀 Atividade 16: Pipelines de CI\u002FCD com GitHub Actions","\u002Fatividades\u002Fatv-16-pipelines-cicd","2.atividades\u002F17.atv-16-pipelines-cicd",{"title":174,"path":175,"stem":176},"🐳 Atividade 17: Containerização de Ambientes com Docker","\u002Fatividades\u002Fatv-17-conteineres-docker","2.atividades\u002F18.atv-17-conteineres-docker",{"title":178,"path":179,"stem":180},"🔒 Atividade 18: Segurança no Desenvolvimento e OWASP","\u002Fatividades\u002Fatv-18-seguranca-devsecops","2.atividades\u002F19.atv-18-seguranca-devsecops",{"title":182,"path":183,"stem":184},"📈 Atividade 19: Métricas de Software, Estimativas e DORA","\u002Fatividades\u002Fatv-19-metricas-estimativas","2.atividades\u002F20.atv-19-metricas-estimativas",{"title":186,"path":187,"stem":188},"🏆 Atividade 20: Projeto Final Avançado (Fase 2)","\u002Fatividades\u002Fatv-20-projeto-final-avancado","2.atividades\u002F21.atv-20-projeto-final-avancado",{"title":190,"icon":191,"path":192,"stem":193,"children":194},"🖼️ Galeria de Projetos Integradores","i-lucide-image","\u002Fprojetos-integradores","3.projetos-integradores",[195,197,207,216,225,234,243],{"title":190,"path":192,"stem":196},"3.projetos-integradores\u002Findex",{"title":198,"path":199,"stem":200,"children":201},"🅿️ Projeto 01: Gestão de Estacionamentos","\u002Fprojetos-integradores\u002Fpi-01-gestao-estacionamentos","3.projetos-integradores\u002F01.pi-01-gestao-estacionamentos\u002Findex",[202,203],{"title":198,"path":199,"stem":200},{"title":204,"path":205,"stem":206},"README","\u002Fprojetos-integradores\u002Fpi-01-gestao-estacionamentos\u002Freadme","3.projetos-integradores\u002F01.pi-01-gestao-estacionamentos\u002F2.readme",{"title":208,"path":209,"stem":210,"children":211},"🔐 Projeto 02: Gerador de Senhas","\u002Fprojetos-integradores\u002Fpi-02-gerador-senhas","3.projetos-integradores\u002F02.pi-02-gerador-senhas\u002Findex",[212,213],{"title":208,"path":209,"stem":210},{"title":204,"path":214,"stem":215},"\u002Fprojetos-integradores\u002Fpi-02-gerador-senhas\u002Freadme","3.projetos-integradores\u002F02.pi-02-gerador-senhas\u002F2.readme",{"title":217,"path":218,"stem":219,"children":220},"🍣 Projeto 03: Pedidos Restaurante","\u002Fprojetos-integradores\u002Fpi-03-pedidos-restaurante","3.projetos-integradores\u002F03.pi-03-pedidos-restaurante\u002Findex",[221,222],{"title":217,"path":218,"stem":219},{"title":204,"path":223,"stem":224},"\u002Fprojetos-integradores\u002Fpi-03-pedidos-restaurante\u002Freadme","3.projetos-integradores\u002F03.pi-03-pedidos-restaurante\u002F2.readme",{"title":226,"path":227,"stem":228,"children":229},"📱 Projeto 04: Empréstimos Dispositivos","\u002Fprojetos-integradores\u002Fpi-04-emprestimos-dispositivos","3.projetos-integradores\u002F04.pi-04-emprestimos-dispositivos\u002Findex",[230,231],{"title":226,"path":227,"stem":228},{"title":204,"path":232,"stem":233},"\u002Fprojetos-integradores\u002Fpi-04-emprestimos-dispositivos\u002Freadme","3.projetos-integradores\u002F04.pi-04-emprestimos-dispositivos\u002F2.readme",{"title":235,"path":236,"stem":237,"children":238},"📦 Projeto 05: Gestão de Estoque","\u002Fprojetos-integradores\u002Fpi-05-gestao-estoque","3.projetos-integradores\u002F05.pi-05-gestao-estoque\u002Findex",[239,240],{"title":235,"path":236,"stem":237},{"title":204,"path":241,"stem":242},"\u002Fprojetos-integradores\u002Fpi-05-gestao-estoque\u002Freadme","3.projetos-integradores\u002F05.pi-05-gestao-estoque\u002F2.readme",{"title":244,"path":245,"stem":246,"children":247},"🛵 Projeto 06: Aplicativo de Delivery","\u002Fprojetos-integradores\u002Fpi-06-delivery","3.projetos-integradores\u002F06.pi-06-delivery\u002Findex",[248,249],{"title":244,"path":245,"stem":246},{"title":204,"path":250,"stem":251},"\u002Fprojetos-integradores\u002Fpi-06-delivery\u002Freadme","3.projetos-integradores\u002F06.pi-06-delivery\u002F2.readme",{"id":253,"title":166,"body":254,"description":836,"extension":837,"links":838,"meta":839,"navigation":840,"path":167,"seo":841,"stem":168,"__hash__":842},"docs\u002F2.atividades\u002F16.atv-15-gitflow-colaboracao.md",{"type":255,"value":256,"toc":817},"minimark",[257,260,265,269,319,321,325,332,339,349,351,355,365,370,411,416,429,433,435,439,450,503,507,549,564,575,577,581,587,635,639,645,647,651,656,674,676,680,683,702,704,708,725,727,731,813],[258,259],"hr",{},[261,262,264],"h2",{"id":263},"objetivo-da-aula","🎯 Objetivo da Aula",[266,267,268],"p",{},"Ao final desta atividade, você será capaz de:",[270,271,272,281,303,313],"ul",{},[273,274,275,276,280],"li",{},"Trabalhar de forma colaborativa usando repositórios ",[277,278,279],"strong",{},"Git\u002FGitHub",".",[273,282,283,284,287,288,292,293,292,296,292,299,302],{},"Aplicar o padrão de ramificação ",[277,285,286],{},"GitFlow"," (",[289,290,291],"code",{},"main",", ",[289,294,295],{},"develop",[289,297,298],{},"feature\u002F",[289,300,301],{},"hotfix\u002F",").",[273,304,305,306,309,310,280],{},"Criar ",[277,307,308],{},"Pull Requests (PR)"," e conduzir processos de ",[277,311,312],{},"Code Review",[273,314,315,316,280],{},"Identificar e resolver de forma segura os clássicos ",[277,317,318],{},"Conflitos de Merge (Merge Conflicts)",[258,320],{},[261,322,324],{"id":323},"o-cenário-prático-seu-desafio","🏢 O Cenário Prático (Seu Desafio)",[266,326,327,328,331],{},"Na ",[277,329,330],{},"TecProExpress",", os desenvolvedores Beto e Lucas estavam trabalhando na mesma tela de faturamento. Beto alterou o cálculo do frete adicionando o imposto do ICMS. Lucas, trabalhando no mesmo arquivo na mesma linha de código, mudou a lógica para aceitar Pix. Ao subir o código no final do dia, as alterações se atropelaram, o servidor do Git travou e metade da lógica do Beto sumiu da empresa!",[266,333,334,335,280],{},"O gerente técnico ficou furioso: ",[336,337,338],"em",{},"\"Como vocês não usam branches dedicadas e GitFlow?!\"",[340,341,342],"blockquote",{},[266,343,344,345,348],{},"\"Seu desafio como ",[277,346,347],{},"Engenheiro de Configuração (DevOps)"," é implantar a metodologia GitFlow na TecProExpress. Você desenhará a topologia de branches mostrando a trilha do desenvolvimento de uma nova funcionalidade, como ela passa por revisão técnica e como resolver os conflitos de mesclagem lógicos se dois desenvolvedores tocarem no mesmo arquivo.\"",[258,350],{},[261,352,354],{"id":353},"fundamentos-a-teoria-traduzida","🧠 Fundamentos: A Teoria Traduzida",[266,356,357,358,361,362,364],{},"O ",[277,359,360],{},"Git"," é a ferramenta de controle de versão (como a máquina do tempo do seu código). O ",[277,363,286],{}," é o \"manual de trânsito\" que diz quais faixas lógicas os desenvolvedores devem trafegar.",[366,367,369],"h3",{"id":368},"as-faixas-lógicas-branches-do-gitflow","As Faixas Lógicas (Branches) do GitFlow:",[371,372,373,381,389,400],"ol",{},[273,374,375,380],{},[277,376,377,379],{},[289,378,291],{}," (antiga master):"," A faixa rápida de alta segurança. Contém apenas o código que está rodando em produção de forma 100% testada e estável.",[273,382,383,388],{},[277,384,385,387],{},[289,386,295],{},":"," A faixa central de integração. Onde o time junta todas as novas funcionalidades que estão sendo desenvolvidas para a próxima versão.",[273,390,391,396,397,302],{},[277,392,393,387],{},[289,394,395],{},"feature\u002Fnome-da-tarefa"," Faixas locais temporárias. Cada programador cria a sua para trabalhar isoladamente em uma tarefa específica (Ex: ",[289,398,399],{},"feature\u002Flogin-htmx",[273,401,402,407,408,410],{},[277,403,404,387],{},[289,405,406],{},"hotfix\u002Fcorrecao-critica"," Faixa de emergência direta. Criada a partir da ",[289,409,291],{}," para corrigir um bug grave que está derrubando a produção de forma imediata.",[412,413,415],"h4",{"id":414},"visualizando-a-topologia-gitflow","📊 Visualizando a Topologia GitFlow",[417,418,421,424,425,428],"callout",{"color":419,"icon":420},"success","i-lucide-lightbulb",[277,422,423],{},"Dica:"," ",[277,426,427],{},"Code Review:"," Nunca mescle seu código na branch de integração sem que pelo menos um outro colega de equipe faça o \"Double Check\" no seu Pull Request. Quatro olhos veem muito melhor do que dois!",[430,431],"mermaid",{"code":432},"gitGraph\n    commit id: \"v1.0.0 (Setup)\"\n    branch develop\n    checkout develop\n    commit id: \"Inicializar Spring Boot\"\n    branch feature-login\n    checkout feature-login\n    commit id: \"Criar Controller de Login\"\n    commit id: \"Integrar Thymeleaf e HTMX\"\n    checkout develop\n    merge feature-login id: \"Merge: Sprint 1\"\n    checkout main\n    merge develop id: \"Release v1.1.0\"\n",[258,434],{},[261,436,438],{"id":437},"exemplo-guiado-anatomia-de-um-conflito-de-merge","📖 Exemplo Guiado: Anatomia de um Conflito de Merge",[266,440,441,442,445,446,449],{},"Se dois desenvolvedores editarem a linha 42 do arquivo ",[289,443,444],{},"DeliveryService.java"," de forma diferente, o Git não saberá qual escolher. Ele gerará um ",[277,447,448],{},"Merge Conflict"," e marcará o arquivo assim:",[451,452,457],"pre",{"className":453,"code":454,"language":455,"meta":456,"style":456},"language-java shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C\u003C\u003C\u003C\u003C\u003C\u003C HEAD\n    \u002F\u002F Lógica do Desenvolvedor Lucas (Branch Local)\n    double freteFinal = valorBase * 1.10;\n=======\n    \u002F\u002F Lógica do Desenvolvedor Beto (Branch Remota)\n    double freteFinal = (valorBase + impostoIcms) * 1.05;\n>>>>>>> feature\u002Fcalculo-beto\n","java","",[289,458,459,467,473,479,485,491,497],{"__ignoreMap":456},[460,461,464],"span",{"class":462,"line":463},"line",1,[460,465,466],{},"\u003C\u003C\u003C\u003C\u003C\u003C\u003C HEAD\n",[460,468,470],{"class":462,"line":469},2,[460,471,472],{},"    \u002F\u002F Lógica do Desenvolvedor Lucas (Branch Local)\n",[460,474,476],{"class":462,"line":475},3,[460,477,478],{},"    double freteFinal = valorBase * 1.10;\n",[460,480,482],{"class":462,"line":481},4,[460,483,484],{},"=======\n",[460,486,488],{"class":462,"line":487},5,[460,489,490],{},"    \u002F\u002F Lógica do Desenvolvedor Beto (Branch Remota)\n",[460,492,494],{"class":462,"line":493},6,[460,495,496],{},"    double freteFinal = (valorBase + impostoIcms) * 1.05;\n",[460,498,500],{"class":462,"line":499},7,[460,501,502],{},">>>>>>> feature\u002Fcalculo-beto\n",[366,504,506],{"id":505},"️-como-resolver-o-conflito-passo-a-passo","🛠️ Como resolver o conflito passo a passo:",[371,508,509,529,535],{},[273,510,511,514,515,518,519,522,523,518,525,528],{},[277,512,513],{},"Analise com calma:"," O conflito exibe a seção superior (",[289,516,517],{},"\u003C\u003C\u003C\u003C\u003C\u003C\u003C HEAD"," até ",[289,520,521],{},"=======",") contendo o seu código, e a seção inferior (",[289,524,521],{},[289,526,527],{},">>>>>>>",") contendo o código de quem já enviou.",[273,530,531,534],{},[277,532,533],{},"Consenso técnico:"," Converse com seu colega de equipe para entender as necessidades de ambos os códigos.",[273,536,537,540,541,292,544,292,546,548],{},[277,538,539],{},"Edição Limpa:"," Apague as marcações vermelhas do Git (",[289,542,543],{},"\u003C\u003C\u003C\u003C\u003C\u003C\u003C",[289,545,521],{},[289,547,527],{},") e mescle as duas lógicas na melhor solução possível:",[451,550,552],{"className":453,"code":551,"language":455,"meta":456,"style":456},"    \u002F\u002F Lógica Consolidada em Equipe\n    double freteFinal = (valorBase + impostoIcms) * 1.10;\n",[289,553,554,559],{"__ignoreMap":456},[460,555,556],{"class":462,"line":463},[460,557,558],{},"    \u002F\u002F Lógica Consolidada em Equipe\n",[460,560,561],{"class":462,"line":469},[460,562,563],{},"    double freteFinal = (valorBase + impostoIcms) * 1.10;\n",[371,565,566],{"start":481},[273,567,568,571,572,302],{},[277,569,570],{},"Commit de Resolução:"," Salve o arquivo editado e faça o commit de sucesso (",[289,573,574],{},"git commit -am \"Resolvendo conflito de cálculo de frete\"",[258,576],{},[261,578,580],{"id":579},"️-prática-obrigatória-1-a-linha-do-tempo-gitflow","🛠️ Prática Obrigatória 1: A Linha do Tempo GitFlow",[266,582,583,586],{},[277,584,585],{},"Cenário:"," O fluxo de versionamento do seu projeto semestral.",[371,588,589,596],{},[273,590,591,592,595],{},"Escreva a sintaxe do Mermaid ",[289,593,594],{},"gitGraph"," (baseado no exemplo guiado) representando a evolução do seu projeto.",[273,597,598,599],{},"O seu gráfico deve apresentar:\n",[270,600,601,606,611,618,623],{},[273,602,603,604,280],{},"O commit inicial na branch ",[289,605,291],{},[273,607,608,609,280],{},"A criação e checkout da branch ",[289,610,295],{},[273,612,613,614,617],{},"A criação de uma branch de ",[289,615,616],{},"feature\u002Fsua-funcionalidade-principal"," com pelo menos 2 commits individuais.",[273,619,620,621,280],{},"O merge da feature de volta para a ",[289,622,295],{},[273,624,625,626,628,629,631,632,280],{},"O merge final da ",[289,627,295],{}," para a ",[289,630,291],{}," selando a versão estável ",[289,633,634],{},"v1.0.0",[366,636,638],{"id":637},"resultado-esperado-para-sua-referência","🏁 Resultado Esperado (Para sua Referência)",[266,640,641,642,644],{},"O diagrama interativo ",[289,643,594],{}," renderizado no corpo do seu arquivo de entrega na documentação do mdBook.",[258,646],{},[261,648,650],{"id":649},"️-prática-obrigatória-2-manual-de-resolução-de-conflitos","🛠️ Prática Obrigatória 2: Manual de Resolução de Conflitos",[266,652,653,655],{},[277,654,585],{}," Proteção contra perda de arquivos.",[371,657,658,661,671],{},[273,659,660],{},"Simule (em formato texto dentro do seu Markdown) um arquivo do seu projeto que sofreu conflito em equipe.",[273,662,663,664,292,666,292,668,670],{},"Escreva o bloco mostrando as tags de demarcação (",[289,665,543],{},[289,667,521],{},[289,669,527],{},") com os códigos conflitantes.",[273,672,673],{},"Escreva logo abaixo o arquivo final resolvido e justifique a escolha técnica da mesclagem.",[258,675],{},[261,677,679],{"id":678},"instruções-de-entrega-microsoft-teams","📤 Instruções de Entrega (Microsoft Teams)",[266,681,682],{},"Após validar suas especificações de versionamento técnico:",[371,684,685,696,699],{},[273,686,687,688,691,692,695],{},"Salve o arquivo contendo os diagramas GitGraph e a simulação de conflito com o nome ",[289,689,690],{},"Atividade_15.md"," na pasta ",[289,693,694],{},"es-atv-15-gitflow-colaboracao\u002F"," do seu repositório GitHub.",[273,697,698],{},"Certifique-se de fazer o commit e push para o repositório público.",[273,700,701],{},"Submeta o link do seu repositório no Microsoft Teams para avaliação do professor.",[258,703],{},[261,705,707],{"id":706},"checkpoint-de-lógica","💡 Checkpoint de Lógica",[417,709,712,424,715,718,719,721,722,724],{"color":710,"icon":711},"primary","i-lucide-megaphone",[277,713,714],{},"Importante:",[277,716,717],{},"Reflexão Profissional:","\nPor que a metodologia GitFlow proíbe terminantemente que os desenvolvedores façam commits diretos e pushes na branch ",[289,720,291],{}," de produção? (Resposta: Para garantir estabilidade e governança do produto. A branch ",[289,723,291],{}," representa o software rodando nos clientes; se pushes diretos fossem permitidos, qualquer erro de digitação local que quebrasse a compilação seria publicado imediatamente, parando as operações de faturamento ou de logística da empresa). 🧠🛡️",[258,726],{},[261,728,730],{"id":729},"rubrica-formativa-de-avaliação","📊 Rubrica Formativa de Avaliação",[732,733,735,736,735,759],"table",{"style":734},"width:100%; border-collapse: collapse; font-family: sans-serif; margin: 20px 0; border: 1px solid #ddd; box-shadow: 0 4px 8px rgba(0,0,0,0.1);","\n  ",[737,738,739,740,735],"thead",{},"\n    ",[741,742,744,745,744,750,744,753,744,756,739],"tr",{"style":743},"background-color: #2c3e50; color: white;","\n      ",[746,747,749],"th",{"style":748},"padding: 12px; border: 1px solid #ddd; text-align: left;","Critério de Avaliação",[746,751,752],{"style":748},"Insuficiente (0% - 40%)",[746,754,755],{"style":748},"Regular (41% - 70%)",[746,757,758],{"style":748},"Excelente (71% - 100%)",[760,761,739,762,739,781,739,797,735],"tbody",{},[741,763,744,765,744,772,744,775,744,778,739],{"style":764},"background-color: #f8f9fa;",[766,767,769],"td",{"style":768},"padding: 10px; border: 1px solid #ddd;",[277,770,771],{},"Fluxo GitFlow & Diagrama Mermaid gitGraph",[766,773,774],{"style":768},"Erros na sintaxe do Mermaid ou ramificação direta sem branch `develop`.",[766,776,777],{"style":768},"Desenha o GitGraph mas sem mostrar o ciclo de vida completo de uma branch `feature`.",[766,779,780],{"style":768},"Diagrama Mermaid `gitGraph` impecável mapeando commits na `main`, criação da `develop`, ramificação de `feature` e tag de release.",[741,782,744,783,744,788,744,791,744,794,739],{},[766,784,785],{"style":768},[277,786,787],{},"Resolução de Conflitos (Merge Conflict)",[766,789,790],{"style":768},"Não entende as marcações do Git (`\u003C\u003C\u003C\u003C\u003C\u003C\u003C`, `=======`, `>>>>>>>`).",[766,792,793],{"style":768},"Simula o conflito mas resolve de forma destrutiva apagando lógicas válidas.",[766,795,796],{"style":768},"Simulação técnica perfeita de conflito de código com resolução consensual limpa e justificativa.",[741,798,744,799,744,804,744,807,744,810,739],{"style":764},[766,800,801],{"style":768},[277,802,803],{},"Entrega no GitHub",[766,805,806],{"style":768},"Entrega fora da pasta `es-atv-15-gitflow-colaboracao\u002F`.",[766,808,809],{"style":768},"Arquivo entregue sem os blocos de código formatados.",[766,811,812],{"style":768},"Submete `Atividade_15.md` com GitGraph funcional e documentação limpa no repositório.",[814,815,816],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":456,"searchDepth":469,"depth":475,"links":818},[819,820,821,826,829,832,833,834,835],{"id":263,"depth":469,"text":264},{"id":323,"depth":469,"text":324},{"id":353,"depth":469,"text":354,"children":822},[823],{"id":368,"depth":475,"text":369,"children":824},[825],{"id":414,"depth":481,"text":415},{"id":437,"depth":469,"text":438,"children":827},[828],{"id":505,"depth":475,"text":506},{"id":579,"depth":469,"text":580,"children":830},[831],{"id":637,"depth":475,"text":638},{"id":649,"depth":469,"text":650},{"id":678,"depth":469,"text":679},{"id":706,"depth":469,"text":707},{"id":729,"depth":469,"text":730},"Bem-vindo a mais uma etapa prática de Engenharia de Software! Até agora, você criou especificações e diagramas. Mas na vida real de desenvolvimento corporativo, as equipes trabalham juntas em uma base de código única. Como fazer para que 10 programadores editem o mesmo arquivo do Spring Boot ao mesmo tempo sem que um apague a alteração do outro? Hoje, aprenderemos a dominar o controle de versão profissional usando o Git e a metodologia estratégica GitFlow. 🛡️🧩","md",null,{},true,{"title":166,"description":836},"H9gwSwh18bnrIaOnSsBaFMoJuAemWrW-bqmPd64dX44",[844,846],{"title":162,"path":163,"stem":164,"description":845,"children":-1},"Bem-vindo a mais uma etapa prática de Engenharia de Software! Agora que você conhece as camadas internas do software, aprenderá como expor e conectar o seu sistema ao mundo externo. Hoje, vamos nos tornar arquitetos de comunicação móvel e web, projetando contratos de integração baseados em APIs RESTful, payloads de dados JSON e documentando tudo com o padrão profissional global Swagger (OpenAPI). 🛡️🧩",{"title":170,"path":171,"stem":172,"description":847,"children":-1},"Bem-vindo a mais uma etapa da sua jornada na Engenharia de Software! Nas atividades anteriores, aprendemos sobre GitFlow e arquitetura. Hoje, daremos um passo fundamental na automação de processos industriais de software: a Integração Contínua (CI). Aprenderemos como automatizar a compilação e execução de testes JUnit a cada Push que seu time faz para o repositório, garantindo blindagem contra códigos bugados! 🛡️🧩",1788375145815]