[{"data":1,"prerenderedAt":827},["ShallowReactive",2],{"navigation_docs":3,"-atividades-atv-12-estados":252,"-atividades-atv-12-estados-surround":822},[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":154,"body":254,"description":815,"extension":816,"links":817,"meta":818,"navigation":819,"path":155,"seo":820,"stem":156,"__hash__":821},"docs\u002F2.atividades\u002F13.atv-12-estados.md",{"type":255,"value":256,"toc":790},"minimark",[257,260,265,269,298,300,304,311,314,328,330,334,341,346,401,406,419,423,425,429,432,520,524,530,541,544,548,561,563,567,573,614,618,621,623,627,632,651,653,657,660,683,685,689,708,710,714],[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,276,284,291],"ul",{},[273,274,275],"li",{},"Identificar entidades de negócio com ciclos de vida complexos.",[273,277,278,279,283],{},"Modelar os ",[280,281,282],"strong",{},"Estados"," estáveis de um objeto no sistema.",[273,285,286,287,290],{},"Mapear ",[280,288,289],{},"Eventos Gatilho (Triggers)"," que provocam a transição entre estados.",[273,292,293,294,297],{},"Aplicar ",[280,295,296],{},"Condições de Guarda (Guards)"," para proteção lógica contra transições inválidas.",[258,299],{},[261,301,303],{"id":302},"o-cenário-prático-seu-desafio","🏢 O Cenário Prático (Seu Desafio)",[266,305,306,307,310],{},"Na ",[280,308,309],{},"TecProExpress",", tivemos um incidente grave de banco de dados: um cliente de suporte ligou reclamando que a sua entrega apareceu no sistema como \"Entregue com Sucesso\", mas o motorista ainda nem havia saído com o caminhão do centro de distribuição!",[266,312,313],{},"Ao analisar o código, a equipe técnica descobriu que não havia validação de regras de negócios. Um motorista distraído clicou no botão \"Confirmar Entrega\" na tela errada de um pacote que ainda estava no estado de triagem físico!",[315,316,317],"blockquote",{},[266,318,319,320,323,324,327],{},"\"Seu desafio como ",[280,321,322],{},"Arquiteto de Software"," é desenhar o Diagrama de Máquina de Estados para a entidade ",[280,325,326],{},"Entrega",". Você deve blindar o sistema, definindo as regras exatas de como um pacote muda de estado (ex: de Pendente para Em Rota) e quais validações (guardas) impedem que um pacote seja marcado como Entregue antes de ser despachado.\"",[258,329],{},[261,331,333],{"id":332},"fundamentos-a-teoria-traduzida","🧠 Fundamentos: A Teoria Traduzida",[266,335,336,337,340],{},"Enquanto o Diagrama de Atividades mostra o fluxo das ações de um processo, o Diagrama de Máquina de Estados foca em ",[280,338,339],{},"um único objeto"," do início ao fim da sua existência.",[342,343,345],"h3",{"id":344},"elementos-chave","Elementos Chave:",[347,348,349,355,373,379,388],"ol",{},[273,350,351,354],{},[280,352,353],{},"Estado Inicial (Círculo Preto):"," O ponto de criação do objeto.",[273,356,357,360,361,365,366,365,369,372],{},[280,358,359],{},"Estado (Retângulo Arredondado):"," Uma condição estável na vida do objeto onde ele aguarda um evento (Ex: ",[362,363,364],"code",{},"PENDENTE",", ",[362,367,368],{},"EM_ROTA",[362,370,371],{},"ENTREGUE",").",[273,374,375,378],{},[280,376,377],{},"Transição (Seta Direcionada):"," A mudança de um estado para o outro.",[273,380,381,384,385,372],{},[280,382,383],{},"Evento Gatilho (Trigger):"," A ação que dispara a transição (Ex: ",[362,386,387],{},"despacharPacote()",[273,389,390,397,398,372],{},[280,391,392,393,396],{},"Condição de Guarda (Guard - entre colchetes ",[362,394,395],{},"[...]","):"," Uma regra que precisa ser verdadeira para a transição acontecer. (Ex: ",[362,399,400],{},"[motorista_no_local == true]",[402,403,405],"h4",{"id":404},"visualizando-a-lógica","📊 Visualizando a Lógica",[407,408,411,414,415,418],"callout",{"color":409,"icon":410},"success","i-lucide-lightbulb",[280,412,413],{},"Dica:"," ",[280,416,417],{},"Condição Guarda:"," Pense na guarda como um segurança de boate. A transição quer acontecer, mas o segurança impede se a condição não for atendida!",[420,421],"mermaid",{"code":422},"stateDiagram-v2\n    [*] --> PENDENTE : cadastrarPedido()\n    PENDENTE --> EM_ROTA : despachar() [caminhao_carregado == true]\n    EM_ROTA --> ENTREGUE : finalizar() [foto_comprovante_anexada == true]\n    EM_ROTA --> TENTATIVA_FALHA : motoristaAusente()\n    TENTATIVA_FALHA --> EM_ROTA : redirecionar()\n    ENTREGUE --> [*]\n",[258,424],{},[261,426,428],{"id":427},"exemplo-guiado","📖 Exemplo Guiado",[266,430,431],{},"Abaixo, veja o mapeamento de transição para o ciclo de vida do pacote da TecProExpress.",[433,434,435,455],"table",{},[436,437,438],"thead",{},[439,440,441,446,449,452],"tr",{},[442,443,445],"th",{"align":444},"left","Estado Origem",[442,447,448],{"align":444},"Evento Gatilho",[442,450,451],{"align":444},"Condição Guarda",[442,453,454],{"align":444},"Estado Destino",[456,457,458,479,499],"tbody",{},[439,459,460,465,470,475],{},[461,462,463],"td",{"align":444},[362,464,364],{},[461,466,467],{"align":444},[362,468,469],{},"despachar()",[461,471,472],{"align":444},[362,473,474],{},"[motorista_associado != null]",[461,476,477],{"align":444},[362,478,368],{},[439,480,481,485,490,495],{},[461,482,483],{"align":444},[362,484,368],{},[461,486,487],{"align":444},[362,488,489],{},"confirmarEntrega()",[461,491,492],{"align":444},[362,493,494],{},"[distancia_gps_cliente \u003C 100m]",[461,496,497],{"align":444},[362,498,371],{},[439,500,501,505,510,515],{},[461,502,503],{"align":444},[362,504,368],{},[461,506,507],{"align":444},[362,508,509],{},"cancelarPedido()",[461,511,512],{"align":444},[362,513,514],{},"[motivo != null]",[461,516,517],{"align":444},[362,518,519],{},"CANCELADO",[342,521,523],{"id":522},"️-regra-uml-em-sintaxe-padrão","🛠️ Regra UML em Sintaxe Padrão:",[266,525,526,527],{},"A sintaxe formal gravada na seta da transição segue o padrão:\n",[362,528,529],{},"Evento [Guarda] \u002F Ação executada",[270,531,532],{},[273,533,534,414,538],{},[535,536,537],"em",{},"Exemplo:",[362,539,540],{},"confirmarEntrega [comprovanteAnexado] \u002F notificarCliente()",[420,542],{"code":543},"stateDiagram-v2\n    state \"Pendente de Coleta\" as P\n    state \"Em Rota de Entrega\" as ER\n    state \"Cancelado\" as C\n    state \"Entregue\" as E\n\n    [*] --> P\n    P --> ER : atribuirMotorista [motorista_ativo == true]\n    ER --> E : confirmarEntrega [gps_ok == true] \u002F enviarSMS()\n    ER --> C : cancelar [cliente_solicitou] \u002F estornarCartao()\n    C --> [*]\n    E --> [*]\n",[402,545,547],{"id":546},"detalhamento-do-processo","🔍 Detalhamento do Processo:",[270,549,550],{},[273,551,552,553,556,557,560],{},"Note a guarda ",[362,554,555],{},"[gps_ok == true]",". Se o aplicativo do motorista não coletar a coordenada geográfica a menos de 100 metros da casa do cliente, o sistema bloqueia a mudança para o estado ",[362,558,559],{},"Entregue",", evitando fraudes ou cliques acidentais!",[258,562],{},[261,564,566],{"id":565},"️-prática-obrigatória-1-a-máquina-de-estados","🛠️ Prática Obrigatória 1: A Máquina de Estados",[266,568,569,572],{},[280,570,571],{},"Cenário:"," O projeto semestral da sua equipe.",[347,574,575,590,597,604],{},[273,576,577,578,581,582,585,586,589],{},"Selecione a entidade mais crítica do seu sistema que possui vários status (Ex: ",[362,579,580],{},"Pedido"," em um e-commerce, ",[362,583,584],{},"Agendamento"," em uma clínica, ",[362,587,588],{},"Vaga"," em um estacionamento).",[273,591,592,593,596],{},"Mapeie pelo menos ",[280,594,595],{},"4 estados distintos"," para essa entidade.",[273,598,599,600,603],{},"Defina claramente os ",[280,601,602],{},"Eventos Gatilho"," em cada seta de transição.",[273,605,606,607,610,611,613],{},"Adicione pelo menos ",[280,608,609],{},"2 Condições de Guarda"," entre colchetes ",[362,612,395],{}," para blindar transições perigosas.",[342,615,617],{"id":616},"resultado-esperado-para-sua-referência","🏁 Resultado Esperado (Para sua Referência)",[266,619,620],{},"Uma imagem (PNG\u002FJPG) do diagrama de máquina de estados UML modelado de forma organizada, exibindo a trajetória completa da entidade do estado inicial ao final.",[258,622],{},[261,624,626],{"id":625},"️-prática-obrigatória-2-tabela-de-transições-lógicas","🛠️ Prática Obrigatória 2: Tabela de Transições Lógicas",[266,628,629,631],{},[280,630,571],{}," Detalhamento da lógica de negócios.",[347,633,634,648],{},[273,635,636,637,365,639,365,641,644,645,647],{},"Crie uma tabela com 4 colunas: ",[280,638,445],{},[280,640,448],{},[280,642,643],{},"Condição de Guarda"," e ",[280,646,454],{},".",[273,649,650],{},"Preencha as linhas detalhando as regras lógicas que você desenhou no diagrama da Prática 1.",[258,652],{},[261,654,656],{"id":655},"instruções-de-entrega-microsoft-teams","📤 Instruções de Entrega (Microsoft Teams)",[266,658,659],{},"Após validar suas documentações técnicas de estados:",[347,661,662,677,680],{},[273,663,664,665,668,669,672,673,676],{},"Salve o arquivo de tabela com o nome ",[362,666,667],{},"Atividade_12.md"," e a imagem do seu diagrama com o nome ",[362,670,671],{},"Atividade_12.png"," na pasta ",[362,674,675],{},"es-atv-12-estados\u002F"," do seu repositório GitHub.",[273,678,679],{},"Certifique-se de fazer o commit e push para o repositório público.",[273,681,682],{},"Submeta o link do seu repositório no Microsoft Teams para avaliação do professor.",[258,684],{},[261,686,688],{"id":687},"checkpoint-de-lógica","💡 Checkpoint de Lógica",[407,690,693,414,696,699,700,703,704,707],{"color":691,"icon":692},"primary","i-lucide-megaphone",[280,694,695],{},"Importante:",[280,697,698],{},"Reflexão Profissional:","\nO que diferencia, na modelagem profissional, um ",[280,701,702],{},"Estado"," de uma ",[280,705,706],{},"Atividade","? (Resposta: Um Estado representa uma situação de estabilidade temporária onde o objeto está aguardando passivamente um evento externo para mudar. Uma Atividade é uma ação ativa, de execução procedural contínua e computacional direta, que transiciona automaticamente para o próximo passo assim que termina). 🧠🛡️",[258,709],{},[261,711,713],{"id":712},"rubrica-formativa-de-avaliação","📊 Rubrica Formativa de Avaliação",[433,715,717,718,717,738],{"style":716},"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  ",[436,719,720,721,717],{},"\n    ",[439,722,724,725,724,729,724,732,724,735,720],{"style":723},"background-color: #2c3e50; color: white;","\n      ",[442,726,728],{"style":727},"padding: 12px; border: 1px solid #ddd; text-align: left;","Critério de Avaliação",[442,730,731],{"style":727},"Insuficiente (0% - 40%)",[442,733,734],{"style":727},"Regular (41% - 70%)",[442,736,737],{"style":727},"Excelente (71% - 100%)",[456,739,720,740,720,758,720,774,717],{},[439,741,724,743,724,749,724,752,724,755,720],{"style":742},"background-color: #f8f9fa;",[461,744,746],{"style":745},"padding: 10px; border: 1px solid #ddd;",[280,747,748],{},"Máquina de Estados & Condições de Guarda",[461,750,751],{"style":745},"Menos de 4 estados ou transições sem eventos gatilho claros.",[461,753,754],{"style":745},"Mapeia os 4 estados mas sem declarar as condições de guarda `[...]`.",[461,756,757],{"style":745},"Diagrama de máquina de estados impecável com ao menos 4 estados, eventos gatilho e guardas `[...]` de proteção.",[439,759,724,760,724,765,724,768,724,771,720],{},[461,761,762],{"style":745},[280,763,764],{},"Tabela de Transições Lógicas",[461,766,767],{"style":745},"Omite a tabela de transições lógicas.",[461,769,770],{"style":745},"Preenche a tabela com colunas incompletas.",[461,772,773],{"style":745},"Tabela detalhada de transições de estado cobrindo Estado Origem, Gatilho, Guarda e Estado Destino.",[439,775,724,776,724,781,724,784,724,787,720],{"style":742},[461,777,778],{"style":745},[280,779,780],{},"Entrega no GitHub",[461,782,783],{"style":745},"Entrega fora da pasta `es-atv-12-estados\u002F`.",[461,785,786],{"style":745},"Entrega apenas o arquivo markdown sem a imagem `.png`.",[461,788,789],{"style":745},"Submete `Atividade_12.md` e `Atividade_12.png` no repositório com validação de padrão.",{"title":791,"searchDepth":792,"depth":793,"links":794},"",2,3,[795,796,797,803,808,811,812,813,814],{"id":263,"depth":792,"text":264},{"id":302,"depth":792,"text":303},{"id":332,"depth":792,"text":333,"children":798},[799],{"id":344,"depth":793,"text":345,"children":800},[801],{"id":404,"depth":802,"text":405},4,{"id":427,"depth":792,"text":428,"children":804},[805],{"id":522,"depth":793,"text":523,"children":806},[807],{"id":546,"depth":802,"text":547},{"id":565,"depth":792,"text":566,"children":809},[810],{"id":616,"depth":793,"text":617},{"id":625,"depth":792,"text":626},{"id":655,"depth":792,"text":656},{"id":687,"depth":792,"text":688},{"id":712,"depth":792,"text":713},"Bem-vindo a mais uma etapa prática do seu treinamento em Engenharia de Software. Na atividade anterior, você aprendeu sobre processos e fluxos lógicos. Hoje, nosso foco muda para o ciclo de vida de uma entidade do sistema. Você aprenderá como modelar os Estados pelos quais um dado transiciona, garantindo que o software nunca entre em inconsistência lógica. 🛡️🧩","md",null,{},true,{"title":154,"description":815},"M90VdrC7luFRM4a0z6hibIPYuUHvtU6I81JXS0pt8e8",[823,825],{"title":150,"path":151,"stem":152,"description":824,"children":-1},"Bem-vindo ao início do Bloco Avançado de Engenharia de Software. Ao longo das próximas semanas, você sairá da modelagem puramente estática e entrará de cabeça na lógica processual, no design de APIs modernas, no ecossistema corporativo (Java 17, Spring Boot 3.5.x, Thymeleaf, HTMX) e nas práticas de DevOps. Hoje, seu desafio é modelar o fluxo procedural dinâmico usando o Diagrama de Atividades. 🛡️🧩",{"title":158,"path":159,"stem":160,"description":826,"children":-1},"Bem-vindo a mais uma etapa do seu desenvolvimento técnico! Agora que você domina a modelagem de processos e dados, daremos o passo mais importante para quem quer se tornar um desenvolvedor sênior ou gestor técnico: projetar a arquitetura interna do software. Hoje, aprenderemos a organizar sistemas profissionais em camadas usando o padrão MVC (Model-View-Controller) corporativo com Java 17, Spring Boot 3.5.x, Thymeleaf e HTMX, além de aplicar o padrão de projeto criacional Factory. 🛡️🧩",1788375145445]