Pular para conteúdo

Diagrama de Atividades

O Diagrama de Atividades modela o funcionamento de uma corrida do Micromouse, desde o acionamento pelo operador até a exibição do resultado final no painel de monitoramento. Sua finalidade é explicitar a ordem das atividades, as condições de decisão e a interação entre os componentes do sistema, viabilizando uma compreensão integrada do comportamento dinâmico da solução.

A notação UML de Diagrama de Atividades foi adotada por ser adequada à representação de processos que envolvem múltiplos atores com atividades simultâneas: o operador, o firmware embarcado no ESP32, o backend FastAPI e o frontend. Essa notação permite expressar com clareza as raias responsáveis por cada ator, os pontos de decisão, as sincronizações e os fluxos de controle. A Figura 1 apresenta o diagrama, destacando a raia do firmware (responsável pela navegação autônoma), a raia do backend (responsável pela validação dos pacotes e pela persistência no SQLite), bem como os pontos de decisão "objetivo atingido?" e "pacote válido?", que regem a continuidade da execução. Esses atores e atividades constituem a base para o Diagrama de Casos de Uso, detalhado em documento próprio.

Atores e raias

Cada raia (swimlane) do diagrama corresponde a um ator e consolida o conjunto de atividades sob sua responsabilidade.

Ator (raia) Responsabilidade
Operador Configura o labirinto, posiciona o robô e aciona a corrida
Micromouse / Firmware (ESP32) Executa a navegação autônoma e transmite a telemetria ao backend
Backend (FastAPI) Recebe e valida os pacotes, notifica o frontend e persiste o resultado
Frontend Exibe os dados em tempo real e apresenta o resultado final da corrida

O SQLite é representado no diagrama como armazenamento de dados (data store), acessado pelo backend ao término da corrida.

Atividades por raia

Operador

O operador inicia o fluxo selecionando o tipo de labirinto, posicionando o robô na célula de partida e acionando o início da corrida.

Firmware (ESP32)

Ao receber o sinal de início, o firmware inicializa sensores, motores e a estrutura interna do mapa. A partir desse ponto, executa um ciclo autônomo:

ler sensores → atualizar mapa → calcular rota com Flood Fill → executar movimento → verificar objetivo

Enquanto o objetivo não é atingido, o ciclo se repete. Ao alcançá-lo, o firmware emite um sinal de conclusão ao backend. Em paralelo ao ciclo de navegação, o firmware monta e transmite pacotes de telemetria ao backend, comportamento representado por uma barra de bifurcação (fork) e sincronizado posteriormente por uma barra de junção (join).

Backend (FastAPI)

O backend recebe os pacotes de telemetria e valida cada um deles: os pacotes inválidos são rejeitados sem comprometer a operação do servidor, ao passo que os pacotes válidos são retransmitidos ao frontend. Ao receber o sinal de conclusão, o backend notifica o frontend, consolida o resumo final e persiste os dados no SQLite.

Frontend

O frontend exibe os dados recebidos em tempo real e atualiza o painel de monitoramento. Ao detectar a finalização da corrida, apresenta a tela com o resultado consolidado, encerrando o fluxo.

Insumos e saídas

As entradas e saídas de cada atividade explicitam as dependências de dados entre as raias, conforme consolidado a seguir.

Atividade Insumos (entradas) Saídas (resultados)
Configurar corrida Tipo de labirinto, posição inicial Configuração da corrida
Ciclo autônomo de navegação Leituras dos sensores, mapa atual Mapa atualizado, próximo movimento
Envio de telemetria Estado interno do firmware Mensagens de telemetria via WebSocket
Validação de pacotes Pacote recebido Pacote válido encaminhado ou descarte
Geração do resumo final Pacotes da corrida Resumo persistido no SQLite
Exibição em tempo real Dados retransmitidos pelo backend Painel atualizado e tela de resultado final

Pontos de decisão, paralelismo e sincronização

Os elementos de controle de fluxo asseguram a representação adequada do paralelismo e das ramificações condicionais que caracterizam a execução do sistema.

Elemento Notação UML Função
Navegação e telemetria Bifurcação e sincronização (fork/join) Permite que o firmware navegue e transmita dados simultaneamente
Objetivo atingido? Nó de decisão Determina se o firmware reinicia o ciclo ou emite o sinal de conclusão
Pacote válido? Nó de decisão Determina se o backend retransmite ou descarta o pacote recebido
Finalizado? Nó de decisão Determina se o frontend mantém o monitoramento ou exibe o resultado final

Mensagens entre raias

As trocas de mensagens entre raias estruturam a comunicação assíncrona entre os componentes, sintetizadas a seguir.

Operador  → ESP32:    sinal de início
ESP32     → FastAPI:  pacotes de telemetria
ESP32     → FastAPI:  sinal de conclusão
FastAPI   → Frontend: dados em tempo real
FastAPI   → Frontend: notificação de conclusão
FastAPI   → SQLite:   resumo final

Notações empregadas

O diagrama aplica as seguintes notações UML: estados inicial e final delimitam a corrida; as atividades representam as ações executadas em cada raia; nós de decisão e junção controlam os caminhos alternativos; barras de bifurcação e sincronização (fork/join) representam o paralelismo entre navegação e telemetria; as raias (swimlanes) segregam as responsabilidades dos atores; e os fluxos de controle conectam atividades, decisões e mensagens entre as raias.

Histórico de versões

Versão Data Descrição Autor(es) Revisor(es) Descrição da Revisão
1.0 27/04/2026 Criação do documento de descrição textual do Diagrama BPMN Arthur Moreira Eduardo Ferreira
1.1 29/04/2026 Melhoria da estrutura do documento Arthur Moreira Eduardo Ferreira
1.2 29/04/2026 Reorganização da descrição textual do BPMN Arthur Moreira Eduardo Ferreira
1.3 07/05/2026 Elaboração e Adição do Diagrama BPMN Eduardo Ferreira Pendente
1.4 08/05/2026 Simplificação do texto Arthur Moreira Pendente
1.5 08/05/2026 Reenquadramento como Diagrama de Atividades Arthur Moreira Pendente