[{"data":1,"prerenderedAt":608},["ShallowReactive",2],{"navigation_docs":3,"-engenharia-software-cap-11":252,"-engenharia-software-cap-11-surround":603},[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":57,"body":254,"description":596,"extension":597,"links":598,"meta":599,"navigation":600,"path":58,"seo":601,"stem":59,"__hash__":602},"docs\u002F1.engenharia-software\u002F12.cap-11.md",{"type":255,"value":256,"toc":576},"minimark",[257,260,265,293,295,299,314,317,323,325,329,336,343,361,368,374,380,386,400,406,412,418,422,435,456,462,468,472,475,507,513,519,524,528,530,534,541,556,558,562],[258,259],"hr",{},[261,262,264],"h2",{"id":263},"objetivo-do-capítulo","🎯 Objetivo do Capítulo",[266,267,268,269,278,279,278,285,288,289,292],"p",{},"Aplicar os relacionamentos de ",[270,271,272,273,277],"strong",{},"Inclusão (",[274,275,276],"code",{},"\u003C\u003Cinclude>>",")",", ",[270,280,281,282,277],{},"Extensão (",[274,283,284],{},"\u003C\u003Cextend>>",[270,286,287],{},"Associação"," e ",[270,290,291],{},"Generalização"," em cenários reais, garantindo que o diagrama reflita regras de negócio obrigatórias, opcionais e hierarquias de Atores\u002FCasos de Uso.",[258,294],{},[261,296,298],{"id":297},"o-cenário-corporativo-tecproexpress-health","🏢 O Cenário Corporativo (TecProExpress Health)",[266,300,301,302,305,306,309,310,313],{},"A ",[270,303,304],{},"TecProExpress"," iniciou um projeto para uma rede de laboratórios. O sistema deve permitir que o ",[270,307,308],{},"Bioquímico"," valide exames, mas a lei exige que todo exame validado dispare automaticamente uma notificação para o ",[270,311,312],{},"Órgão Governamental",".",[266,315,316],{},"Ao mesmo tempo, o paciente pode (ou não) solicitar o envio do laudo por e-mail após a visualização.",[318,319,320],"blockquote",{},[266,321,322],{},"\"Seu desafio é modelar essas dependências. O que é um passo obrigatório (Inclusão) e o que é uma ação opcional (Extensão)? Esse diagrama guiará a segurança e o fluxo de dados da aplicação.\"",[258,324],{},[261,326,328],{"id":327},"relacionamentos-entre-casos-de-uso","🧠 Relacionamentos entre Casos de Uso",[330,331,333,334,277],"h3",{"id":332},"_1-inclusão-include","1. Inclusão (",[274,335,276],{},[266,337,338,339,342],{},"Ocorre quando um Caso de Uso ",[270,340,341],{},"sempre"," precisa de outro para ser concluído. É uma dependência obrigatória.",[344,345,346],"ul",{},[347,348,349,352,353,357,358,313],"li",{},[270,350,351],{},"Exemplo:"," Para ",[354,355,356],"em",{},"Efetuar Pagamento",", o sistema deve obrigatoriamente ",[354,359,360],{},"Validar Saldo",[266,362,363],{},[364,365],"img",{"alt":366,"src":367},"Inclusão: Realizar Depósito\u002FSaque incluem Registrar Movimento","\u002Fimg\u002Fengenharia-software\u002Fuc_inclusao_fig8_cap77.svg",[266,369,370],{},[364,371],{"alt":372,"src":373},"Inclusão: matrícula, pagamento e histórico escolar incluem Validar Matrícula","\u002Fimg\u002Fengenharia-software\u002Fuc_inclusao_fig9_cap77.svg",[330,375,377,378,277],{"id":376},"_2-extensão-extend","2. Extensão (",[274,379,284],{},[266,381,338,382,385],{},[270,383,384],{},"pode"," disparar outro em situações específicas. É opcional.",[344,387,388],{},[347,389,390,392,393,396,397,313],{},[270,391,351],{}," Ao ",[354,394,395],{},"Realizar Pedido",", o sistema pode (se o usuário quiser) ",[354,398,399],{},"Aplicar Cupom de Desconto",[266,401,402],{},[364,403],{"alt":404,"src":405},"Extensão: Emitir Extrato estende Verificar Situação da Conta","\u002Fimg\u002Fengenharia-software\u002Fuc_ext_fig10_cap78.svg",[266,407,408],{},[364,409],{"alt":410,"src":411},"Extensão: Realizar Cadastro estende Realizar Login","\u002Fimg\u002Fengenharia-software\u002Fuc_ext_fig11_cap78.svg",[266,413,414],{},[364,415],{"alt":416,"src":417},"Extensão: Calcular Desconto e Verificar Falha de Autorização estendem Efetuar Venda","\u002Fimg\u002Fengenharia-software\u002Fuc_ext_fig12_cap78.svg",[330,419,421],{"id":420},"_3-associação","3. Associação",[266,423,424,425,428,429,431,432,434],{},"É a linha mais simples de todas: só indica ",[270,426,427],{},"quem participa de quê",", sem implicar obrigatoriedade (como o ",[274,430,276],{},") ou opcionalidade (como o ",[274,433,284],{},") entre Casos de Uso.",[344,436,437],{},[347,438,439,441,442,445,446,449,450,445,453,313],{},[270,440,351],{}," O ",[354,443,444],{},"Cliente"," se associa a ",[354,447,448],{},"Calcular Empréstimo Pessoal","; o ",[354,451,452],{},"Submissor",[354,454,455],{},"Realizar Submissão",[266,457,458],{},[364,459],{"alt":460,"src":461},"Associação: Cliente e Calcular Empréstimo Pessoal","\u002Fimg\u002Fengenharia-software\u002Fuc_assoc_fig3_cap75.svg",[266,463,464],{},[364,465],{"alt":466,"src":467},"Associação: Submissor e Realizar Submissão","\u002Fimg\u002Fengenharia-software\u002Fuc_assoc_submissor_cap75.svg",[330,469,471],{"id":470},"_4-generalização-herança","4. Generalização (Herança)",[266,473,474],{},"Ocorre quando um Ator ou Caso de Uso mais específico herda o comportamento de um mais genérico — evita redesenhar o diagrama inteiro para cada variação.",[344,476,477,492],{},[347,478,479,482,483,288,486,489,490,313],{},[270,480,481],{},"Exemplo (Atores):"," ",[354,484,485],{},"Pessoa Física",[354,487,488],{},"Pessoa Jurídica"," são especializações do Ator genérico ",[354,491,444],{},[347,493,494,482,497,288,500,503,504,313],{},[270,495,496],{},"Exemplo (Casos de Uso):",[354,498,499],{},"Abrir Conta Especial",[354,501,502],{},"Abrir Conta Poupança"," são especializações de ",[354,505,506],{},"Abrir Conta Comum",[266,508,509],{},[364,510],{"alt":511,"src":512},"Generalização de Atores: Cliente, Pessoa Física e Pessoa Jurídica","\u002Fimg\u002Fengenharia-software\u002Fuc_gen_actor_fig7_cap76.svg",[266,514,515],{},[364,516],{"alt":517,"src":518},"Generalização de Casos de Uso: Abrir Conta Comum, Especial e Poupança","\u002Fimg\u002Fengenharia-software\u002Fuc_gen_uc_fig6_cap76.svg",[520,521,523],"h4",{"id":522},"visualização-de-fluxo-laboratorial","📊 Visualização de Fluxo Laboratorial",[525,526],"mermaid",{"code":527},"graph LR\n    subgraph \"Fronteira TecPro Health\"\n        UC1([\"Visualizar Exame\"])\n        UC4([\"Validar Laudo\"])\n        UC5([\"Gerar PDF do Prontuário\"])\n        UC7([\"Disparar Webhook Governamental\"])\n        UC8([\"Download Exame\"])\n    end\n\n    RE[\"Recepcionista\"] --- UC1\n    BI[\"Bioquímico Sênior\"] --- UC4\n    UC4 -. \"\u003C\u003C include >>\" .-> UC7\n    PA[\"Paciente\"] --- UC8\n    UC8 -. \"\u003C\u003C extend >>\" .-> UC5\n",[258,529],{},[261,531,533],{"id":532},"detalhamento-segurança-visual","🔍 Detalhamento: Segurança Visual",[266,535,536,537,540],{},"Note no diagrama acima como o ",[270,538,539],{},"Paciente"," nunca toca no endpoint de \"Validar Laudo\". Visualmente, o Arquiteto trancou a rota. Nenhum programador sênior esquecerá de colocar a trava de segurança no código Java após ver este fluxograma.",[542,543,546,482,549,552,553,555],"callout",{"color":544,"icon":545},"success","i-lucide-lightbulb",[270,547,548],{},"Dica:",[270,550,551],{},"Dica Sênior:","\nSe você tem uma ação que se repete em 10 Casos de Uso diferentes (ex: \"Fazer Login\"), use o ",[274,554,276],{}," para não precisar redesenhar a lógica em todos. Isso é o equivalente ao reuso de código na modelagem. 🚀",[258,557],{},[261,559,561],{"id":560},"checkpoint-de-lógica","💡 Checkpoint de Lógica",[542,563,566,482,569,572,573,575],{"color":564,"icon":565},"primary","i-lucide-megaphone",[270,567,568],{},"Importante:",[270,570,571],{},"Reflexão Profissional:","\nSe você modelar um ",[274,574,276],{}," para uma ação que na verdade é opcional, o que acontecerá com o sistema? (Resposta: O sistema ficará engessado. O usuário será obrigado a fazer algo que não queria, gerando uma péssima experiência de uso e um bug de regra de negócio). 🧠🛡️",{"title":577,"searchDepth":578,"depth":579,"links":580},"",2,3,[581,582,583,594,595],{"id":263,"depth":578,"text":264},{"id":297,"depth":578,"text":298},{"id":327,"depth":578,"text":328,"children":584},[585,587,589,590],{"id":332,"depth":579,"text":586},"1. Inclusão (\u003C\u003Cinclude>>)",{"id":376,"depth":579,"text":588},"2. Extensão (\u003C\u003Cextend>>)",{"id":420,"depth":579,"text":421},{"id":470,"depth":579,"text":471,"children":591},[592],{"id":522,"depth":593,"text":523},4,{"id":532,"depth":578,"text":533},{"id":560,"depth":578,"text":561},"Dominar os conceitos básicos é apenas o começo. Na engenharia profissional, precisamos modelar como as funcionalidades dependem umas das outras através de relacionamentos formais da UML. 🛡️🧩","md",null,{},true,{"title":57,"description":596},"1m4VSkSuykcEAORBzVr-vSlXWPCREsJJhLxLgxhM2zg",[604,606],{"title":53,"path":54,"stem":55,"description":605,"children":-1},"O Diagrama de Casos de Uso é a \"foto panorâmica\" do sistema sob a perspectiva do usuário final. Ele é o ponto de partida essencial para definir o escopo funcional e os limites do software. 🛡️🧩",{"title":61,"path":62,"stem":63,"description":607,"children":-1},"Chegamos ao núcleo da Engenharia de Sistemas modernos. Se os \"Casos de Uso\" explicavam o que o usuário vê, o Diagrama de Classes explica como o software organiza a Memória RAM e o Banco de Dados. 🛡️🧩",1788375142157]