Arquitetura
Introdução
Este documento apresenta as principais características da arquitetura do software da armadilha inteligente DengBuster, destacando seus componentes e as interações entre eles.
Arquitetura de Software
A figura 1 evidencia a arquitetura do software em questão:
Figura 1 – Arquitetura do Produto de Software. Fonte: Autor.
Na imagem, fica evidente o uso das seguintes tecnologias:
-
Flask: O Flask é um framework WSGI leve para aplicações web[^1]. Ele é conhecido por sua simplicidade e facilidade de uso, sendo uma ótima opção para desenvolvedores que desejam criar aplicativos da web pequenos a médios de forma eficiente[^2]. A aplicação web construída com Flask segue uma arquitetura inspirada no modelo MVC, facilitando a separação entre lógica de apresentação (dashboard), controle e acesso aos dados da armadilha.
-
Raspberry Pi: Raspberry Pi é o nome de uma linha de placas de computador de baixo custo voltada para projetos de sistemas embarcados. Essas placas funcionam como um computador, podendo ser ligadas a monitor, teclado e mouse, e ter um sistema operacional com interface gráfica, funcionando como um computador pessoal[^3]. Seu foco é realizar o processamento dos sinais recebidos através dos sensores.
-
MySql: MySql é uma linguagem responsável pela administração de um sistema de banco de dados.
-
Python: Python é uma linguagem de programação de fácil uso, multiparadigmas que atualmente está na versão 3.13[^5], utilizada para programar a solução.
Metas e Restrições Arquiteturais
Este tópico elenca as metas arquiteturais com a finalidade de atender aos requisitos exigidos, além disso, descreve as restrições para a escolha do design.
Metas
As metas definem os princípios que guiam as escolhas do projeto. Dentre elas, pode-se citar:
- Usabilidade: Deve garantir com que o usuário possa, de maneira rápida, compreender os dados encontrados;
- Velocidade: O algoritmo embarcado deve realizar suas atividades em um período menor que 2 segundos;
- Paralelismo: O dashboard deve atualizar seus dados em tempo real;
- Precisão: O algoritmo de detecção deve ter uma precisão maior que 90%;
- Evitar perda de dados: A integração deve ocorrer de tal maneira que reduza ou elimine a perda de dados.
Restrições
As restrições delimitam as escolhas de software e estabelecem limites a serem seguidos. Pode-se citar:
- Baixo Custo: Deve-se buscar um menor custo possível, gastando apenas com componentes extremamente necessários;
- Limitações de Hardware: O software embarcado deve realizar suas operações dentro das restrições do hardware;
- Integração Simples: O dashboard precisa se integrar facilmente com o software embarcado.
Casos de Uso
Os casos de uso evidenciam como o sistema atende às interações entre os atores e suas funcionalidades. Desta maneira, as tabelas a seguir descrevem cada caso de uso do sistema:
Caso de Uso: Cadastro de Localização para uma armadilha cadastrada
Campo | Descrição |
---|---|
Ator Primário | Usuário |
Descrição | Permite ao usuário cadastrar uma nova localização para uma armadilha no sistema, capturando informações como localização. |
Pré-condições | Usuário com computador, armadilha funcionando e conexão com a internet. |
Fluxo Principal | 1. O usuário adiciona uma localização para a máquina no mapa. 2. O usuário acessa a localização. |
Fluxo Alternativo | Se falhar na coleta de informações (ex.: sem internet), exibe erro ao usuário. |
Pós-condições | Armadilha cadastrada e visível no dashboard. |
Requisitos Especiais | Informações claras do local, funcionamento da armadilha. |
Tabela 1: Caso de uso de registro de armadilha
Fonte: Autor
Caso de Uso: Registro de Captura
Campo | Descrição |
---|---|
Ator Primário | Sistema |
Descrição | Sistema detecta captura de mosquito e notifica o dashboard do usuário. |
Pré-condições | Armadilha funcionando e comunicação com o dashboard ativa. |
Fluxo Principal | 1. Sistema detecta captura. 2. Envia notificação via MQTT. 3. Dashboard exibe o evento. |
Fluxo Alternativo | Se falhar o envio, armazena o evento em uma fila para retransmissão futura. |
Pós-condições | Usuário notificado sobre a captura. |
Requisitos Especiais | Persistência da informação em caso de falha de comunicação. |
Tabela 2: Caso de uso de envio de informação
Fonte: Autor
Diagrama de Sequência
O diagrama de sequência ilustrado na figura 2, representa a ordem e o fluxo das interações entre os sistemas ao longo do tempo, destacando como a comunicação e a transferência de dados ocorrem de maneira organizada. No contexto do DengBuster, o diagrama descreve a relação entre o Usuário, que realiza ações através do Dashboard, a Armadilha, que coleta os dados do ambiente, e a Base de Dados, que armazena e disponibiliza essas informações.
Figura 2: Diagrama de sequência.
Referências bibliográficas
[^1]: FLASK. Bem-vindo ao Flask — Documentação do Flask (3.1.x). Disponível em: https://flask.palletsprojects.com/en/stable/. Acesso em: 24 abr 2025.
[^2]: HABBEMA, Hugo. Brincando com o Flask - Hugo Habbema. Medium, 28 Nov 2024. Disponível em: https://medium.com/@habbema/brincando-com-o-flask-e0c1a0562726. Acesso em: 24 abr 2025.
[^3]: ASSUNCAO, Arthur. Quer brincar com a Raspberry? Aprenda os primeiros passos com a Raspberry Pi 3. Medium, 2 Mar 2020. Disponível em: https://arthurnassuncao.medium.com/quer-brincar-com-a-raspberry-aprenda-os-primeiros-passos-com-a-raspberry-pi-3-614b5d8956f3. Acesso em: 24 abr 2025.
[^4]: ONLYOFFICE. O que é um arquivo CSV e como abri-lo? Disponível em: https://www.onlyoffice.com/blog/pt-br/2023/11/csv. Acesso em: 24 abr 2025.
[^5]: PYTHON. What’s New In Python 3.13. Disponível em: https://docs.python.org/3/whatsnew/3.13.html. Acesso em: 25 abr 2025.
Histórico de Versão
Versão | Descrição | Data | Responsável |
---|---|---|---|
1.0 | Criação do documento | 24/04/2025 | Arthur Trindade |
1.1 | Adição do diagrama de sequência | 26/04/2025 | Christian Hirsch |
1.2 | Adição da Arquitetura de Software | 27/04/2025 | Kauã Vinícius |
1.3 | Correção dos paths das imagens | 01/05/2025 | Christian Hirsch |
1.4 | Ajuste do histórico e mkdocs | 01/05/2025 | Christian Hirsch |
1.5 | Padronização | 02/05/2025 | Miguel Moreira |
2.0 | Ajustes documentação | 17/07/2025 | Breno Lucena e Breno Cordeiro |
--- |