Home | Escopo e Cronograma | Processos | Design | Configuração | Arquitetura | Código | Banco de Dados | Qualidade | Gestão |
---|
Arquitetura do Sistema
Descrição
Esta seção irá abordar a arquitetura selecionada para o Backend e Frontend, além dos dados relativos ao deploy.
Sumário
Tecnologias
Na decisão sobre as tecnologias a serem utilizadas no desenvolvimento da aplicação, a equipe promoveu um debate e um formulário para mapear os conhecimentos de cada integrante. Sendo assim, para a decisão final, foi considerando o tempo de entrega do projeto, os conhecimentos já existentes na equipe, bem como aqueles que poderiam ser adquiridos durante o desenvolvimento.
Flutter
O Flutter foi criado pela Google, sendo um framework mais voltado para desenvolvimento de aplicativos móveis. Ele permite a criação de aplicativos compilados nativamente para iOS, Android, Windows, Mac, Linux e Web. Utilizando a linguagem de programação Dart, o flutter se diferencia de outros fameworks por utilizar uma abordagem de desenvolvimento baseada em Widgets, que são elementos gráficos reutilizáveis e personalizáveis.
Firebase
O Firebase é uma plataforma de desenvolvimento de aplicativos móveis e web da Google, que fornece diversos recursos para ajudar os desenvolvedores a criar aplicações de forma efetiva, rápida e simples. Ele inclui diversas funcionalidades, incluindo armazenamento de dados em tempo real, autenticação de usuários, hospedagem, mensagens e notificações, análise de dados, entre outros.
Integração
Arquitetura Geral da Aplicação
Abaixo está representado graficamente como funciona a comunicação do Front-end(Flutter) com o Back-end(Firebase e API Externa do chatGPT).
Front-end
Para o projeto em questão, optamos por adotar a arquitetura MVC para o desenvolvimento do aplicativo utilizando Flutter. Para o Back-end, decidimos utilizar somente as chamadas ao Firebase.
Módulos do sistema Front-end
A arquitetura MVC para Front-end é usada para separar as responsabilidades de interface do usuário, manipulação de dados e a parte lógica. Essas responsábilidades são representadas por três camadas, elas são:
Model é a camada de manipulação de dados. Ele é responsável pela leitura e escrita de dados, e também de suas validações. Sendo assim, ela acaba sendo completamente independente das outras duas camadas.
View é a camada de interação com o usuário. Ela representa a parte visual da aplicação, e só é alimentada pela camada Controller quando necessário.
Controller é a camada responsável por receber todas as requisições do usuário. Seus métodos são responsáveis por uma página, controlando qual model usar e qual view será mostrado pelo usuário.
Diagrama do Sistema
Aqui podemos ver visualmente através de um diagrama como ficou a implementação do padrão arquitetural do Flutter:
Diagrama de Deploy
Foi utilizado uma plataforma de cloud computing da Amazon chamado EC2, para alocar os runners do GitLab e manter a pipeline do projeto executando. Abaixo está está o diagrama da infraestrutura.