🚀 Engenharia de Software

Diagrama de Sequência e Foco de Controle

(Injetando a variável Tempo. O Filme Computacional em Roteiro)

👨‍🏫 Professor: Ricardo Pires
📚 Unidade IV


🎬 O Frame-by-Frame no Espaço-Tempo UML

O Diagrama de Classes que acabamos de estudar é uma radiografia estática de ossos brancos e mortos. Ele está em estado vegetativo “aguardando a ordem”. O Diagrama de Sequência abre as portas e grita “AÇÃO”. Mostra o comportamento vivo.

  • Finalidade Extrema: Ele pega 1 Único “Botão Pressionado” do caso de uso e disseca metodicamente os nanosegundos subsequentes que trafegam entre as camadas mundiais até o servidor retornar o “OK”.
  • Foca em “Quem Mensageou de quem”, e o atraso natural de “Espera da Ordem”.

🧩 Os Elencos Primários do Diagrama Linear

Esse diagrama ocorre visualmente espalhado usando a variável gravitacional do TEMPO escorrendo (de Cima para Baixo):

  1. 👤 Ator da Borda Externa: A criatura que chuta a pedra (Em cima esq.)
  2. 📦 Os Balizadores de Vida (Objetos Existentes): São as caixas no topo organizadas lateralmente. (Ex: App de Celular Load Balancer AWS Cloud Oracle DB).
  3. 🕰️ Lifeline Trilhada: Uma longa linha microscópica vertical tracejada conectada sob as Caixas. Representa a Ampulheta inerte. A “existência temporal” do equipamento aguardando.

⚡ Barras de Vida: Foco de Ativação / Controle CPU

A “Linha Tracejada” significa descanso ou estado dormente daquele software. Quando você repara de repente na planta um retângulo fino opaco bloqueando a descida do tempo, testemunha o glorioso Foco de Ativação.

[ Tela App ]          [ API Server Backend ]
     │                         │ 
     │ (Seta Mensagem de Rota) │ 
     ├─────────────────────────►█ [ Foco de Controle do Java ! ]
     │                         █  < O Servidor Acordou e a CPU está 
     │                         █    Fritando processando a tarefa 
     │ <─ ─ ─ ─ (FIM TAREFA)─ ─ █   enquanto vc trava tela .
     │                         │ 

Quando o Java Finaliza a conta dos saldos, o Retângulo desliga, cessa e a linha tracejada ociosa retorna a reinar na vertical.


✉️ As Setas e a Guerra dos Sockets de Rede (Mensagens)

A Engenharia da lentidão mora aqui. Trocar a seta destrói arquiteturas.

  1. Síncrona Violenta (Seta Contínua Fechada e Preta ): A ordem engessada de Paralelo. Meu “App Celular” envia ordem pro “DB”. ELE TRAVA sua mão lá (você não faz nada). Ele EXIGE atritosamente aguardar a morte do trabalho oposto (Retorno tracejado <--), caso contrário a aplicação trava no Loading eterno do Spinner.
  2. Assíncrona Paralela (Seta Contínua Aberta ): A Ordem Desapegada (“Fire-and-Forget”). O meu objeto grita a ordem pesada e solta do cordão instantaneamente! Vai fazer outro trabalho em casa liberando RAM. Deixa a bucha lenta para segundo plano. (A Mágica dos Filas assíncronas RabbitMQ e Apache Kafka modernos).

🧱 Estereótipos Padrões de MVC (Engenharia Oculta)

Sistemas amadores injetam Lógica de Banco dentro do código de Desenho do Botão. Sistemas Maduros fracionam o diagrama usando Model-View-Controller, trocando a Caixa quadrada chata no topo por 3 avatares modernos especiais da UML:

  • 🖼️ Muro Oco (Boundary / View): Um Circulo atolado numa Parede de Giz |O. Representa TELA, IPhone Visor. Fronteira Intocável Estética.
  • ⚙️ Miolo Cognitivo (Control): Círculo com Seta em Giro O🡢. Uma central telefônica Pura sem cara e sem corpo, as regras Python de negócio validando.
  • 💾 O Porão das Rochas (Entity / Model): Círculo com traço horizontal embaixo O_. O peso do Banco de Dados inquebrável, as massas de Registro. (Ao separar isso no fluxograma, a inteligência da empresa blinda a base).

🗣️ QUIZ VERBAL: A Mensagem Fantasma Síncrona vs Assíncrona

Missão Diagnóstica Rápida: Você está navegando desesperadamente no site da Americanas. Clica furioso e realiza no PIX uma compra da “TV de 65 polegadas” sonhada na Sexta-feira. Na mesma e exata hora a Tela cospe uma luz verde de Confirmação "Recebemos seu pagto, em até 48 horas mandaremos um longo E-mail complexo com o Histórico Fiscal pesado para as Leis Federais". Você suspira aliviado e já abre velozmente o Menu de TV-Boxes do E-Commerce sorridente.

Para proteger seu estresse visual impedindo uma tela congelada, que tipo fenomenal geométrico de Mensagem de Comando de E-mail (Seta no desenho UML de arquitetura) o engenheiro Frontend programou sorrateiro por debaixo do tapete do seu navegador?


✅ RESPOSTA DO QUIZ

Assíncrona Total de Fila de Trabalhadores! (Seta Geométrica Aberta >)! ✉️🚀

Fundamentação Lógica Prática: Como a geração burocrática massiva de PDFs de Históricos Fiscais sobrecarrega os Entities (Bancos e Servidores Receita PDF) e pode falhar 20 vezes antes de enviar, demorando até “48 horas” num colapso contínuo; o Boundary UI FrontEnd Web assassina arquiteturalmente e recusa liminarmente o Uso da Setinha Síncrona Fechada (▶) que travaria a tela da sua sala por todo o Fim de Semana num giro de “Aguarde”! A emissão ocorre paralelamente, liberando a Linha de Vida inerte do cliente!


📐 Matemática de Sequência: Latência Acumulada Síncrona

Cada mensagem síncrona (seta fechada ) adiciona latência ao tempo total de resposta da aplicação:

Onde é a latência de cada chamada síncrona em sequência.

Exemplo real (Check-out E-commerce): | Step | Chamada | Latência | ||---------|| | 1 | Valida sessão JWT | 5ms | | 2 | Consulta estoque DB | 80ms | | 3 | Gera NF-e Receita | 320ms | | 4 | Envia e-mail SMTP | 210ms |

Tornando as chamadas 3 e 4 assíncronas, o usuário sente apenas ! O resto ocorre em background.


🗣️ QUIZ VERBAL: MVC no Diagrama de Sequência

Cenário: Um usuário clica em “Fazer Login” no app. O fluxo é:

  1. A tela envia usuário e senha para um componente de regras.
  2. O componente de regras consulta o banco de dados para buscar o usuário.
  3. O banco retorna os dados. O componente valida a senha (bcrypt).
  4. O componente retorna um token JWT para a tela.

Mapeie cada passo para o estereótipo MVC correto: Boundary (View), Control ou Entity (Model). Qual tipo de seta (síncrona ou assíncrona) liga cada interação?


✅ RESPOSTA DO QUIZ FINAL

Tela=Boundary | Regras=Control | Banco=Entity | Todas síncronas (►) 🔐

[Boundary: Tela Login] --▶-- [Control: AuthService] --▶-- [Entity: UserDB]
     ▲                            │ (valida bcrypt)         ▼
     └──── JWT Token ─────────────┘ ◄─── User data ─────────┘

Explicação:

  • Todas as setas são síncronas pois o usuário precisa aguardar o token antes de prosseguir.
  • O Control é o único estereótipo com “inteligência” — ele não armazena nem exibe: apenas orquestra e decide.
  • O Boundary jamais fala diretamente com o Entity — isso romperia a separação de camadas MVC.

🎯 Por Que Estudar Coreografia Cega?

Sem Diagrama de Sequência os Desenvolvedores:

  1. Jogam queries de banco SQL caríssimas, engessadas Síncronas do lado de fora do Boundary sem perceber, gargalando e derrubando servidores com “Request Timeout” e Timeout de tela.
  2. Eles não sabem por onde começar o Flow! Esse quadro ensina se ele deve criar Banco antes de Tela ou Lógica Intermediária Controladora de MVC primeiro.
  3. Se um Ator não for achado na teia de sequência, o Caso de Uso que vocês assinaram semestre que vem era fraude ou invenção mirabolante do analista e não funciona perante o relógio.