Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • M Meu Mundo Azul Wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Meu Mundo Azul
  • Meu Mundo Azul Wiki
  • Wiki
  • arquitetura

Last edited by leonardo.pasqualotto Sep 29, 2022
Page history

arquitetura

Home Escopo e Cronograma Processo Design/Mockups Configuração Arquitetura Código BD Qualidade Utilizaçã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

  • Arquitetura do Sistema
    • Descrição
    • Sumário
    • Arquitetura Geral da Aplicação
    • Deploy
      • Recipes API
      • Diagrama de Deploy
    • Backend
      • Definições de Tecnologias
      • Módulos do Sistema
      • Diagrama de Fluxo
    • Frontend
      • Definições de Tecnologias
      • Módulos do Sistema
      • Diagramas de Componentes
      • Diagrama do Sistema

Arquitetura Geral da Aplicação

A modelagem da arquitetura geral da aplicação foi pensada no C4 model.

Nível 1: Diagrama de contexto do sistema

c4model-level1

Nível 2: Diagrama de contêineres

c4model-level2

Deploy

Recipes API

TBD

Diagrama de Deploy

TBD

Backend

Definições de Tecnologias

  • Linguagem: Java
  • Framework: Spring Boot

Na sprint 0, foi feito um questionário com o time para quantificar o conhecimento dos alunos em linguagem, frameworks e bancos de dados para determinar quais as tecnologias que seriam utilizadas de acordo com o conhecimento geral do time. Com base no questionário e em discussões com o time, foi definido utilizar o spring boot para o desenvolvimento do backend da aplicação.

É uma API RESTful construída utilizando Spring Boot. Para a documentação e teste dos endpoints da aplicação, foi utilizado o Swagger. Para a estruturação da aplicação, utilizamos o Layers Pattern (padrão camadas). Contendo três camadas:

  • Presentation layer: fornece os endpoints da aplicação. Possui o controller, Data Transfer Objects (DTOs) e entidades.

  • Business logic layer: possui toda a lógica da aplicação, como cálculos, transformações de dados e processamento de dados. Está presente no pacote service.

  • Data access layer: fornece toda a comunicação com o banco de dados, criando, buscando, atualizando e deletando dados do banco. Na nossa aplicação esta camada está presente no pacote repository.

Módulos do Sistema

  • config: contém as configurações de cors e do Swagger.

  • controller: é o ponto de entrada do backend, onde ficam definidos os endpoints da aplicação, ou seja, os caminhos após o endereço do servidor como /user e qual o tipo de chamada o endereço irá receber GET, POST, PUT ou DELETE.

  • dto: possui os objetos utilizados para transportar dados entre as camadas.

  • entity: possui os mapeamentos para a tabela do banco de dados.

  • enums : possui as enumerações utilizadas nas DTOS ou entidades.

  • message: centraliza todas as mensagens que são enviadas ao frontend.

  • repository: centraliza toda a comunicação com o banco de dados, passando os parâmetros adequados para as funções desejadas.

  • security: define configurações de acesso aos endpoints e a autenticação de usuários cadastrados.

  • service: centraliza todas as nossas regras de negócio, utilizando o repository para fornecer os dados do banco e realizar as validações.

  • util: possui classes que tem métodos que são utilizados em diversos services, como por exemplo, o Validations.java, que contém validações de campos de um objeto. Nessa camada também ficam as exceptions personalizadas e os handlers dessas exceptions.

Diagrama de Fluxo

As camadas da aplicação se comunicam da seguinte maneira, um fluxo de dados inicia com a requisição do usuário na camada Controller, que encaminha os dados para o Service onde são chamados os métodos do Repository, nele ocorre as ações com o banco como SELECT, INSERT, UPDATE e DELETE.

ArquiteturaBackend.drawio

Frontend

Definições de Tecnologias

  • Linguagem: Typescript

  • Framework: React Native

  • Ferramentas: Expo

Utilizamos o Framework React Native que aborda a interface como uma função, e representa o estado atual da aplicação, apresentando componentes visuais escritos em Typescript que podem ser reutilizados em diferentes telas. O Expo permite criar aplicações nativas tanto para Android quanto para iOS.

Módulos do Sistema

  • Assets: Pasta com as mídias (imagens, logos, etc...) que são utilizadas na aplicação e no build

  • Components: Onde estarão localizados os componentes visuais encontrados em diferentes páginas da aplicação. Os componentes em sua maioria são genéricos e podem ser personalizados dependendo da sua utilização em cada Screen

  • Screen: Telas da aplicação. Cada tela é composta de diversos componentes que quando juntos apresentam funcionalidades da aplicação.

  • Routes: Rotas da aplicação. Determinam quais telas utilizam as diferentes formas de navegação: StackNavigator (navegação em telas empilhadas) e TabNavigator (navegação por abas inferiores)

  • Services: Interface do usuário na aplicação. Permite guardar as informações em memória para serem usadas pelo backend como dados e API

  • Utils: Funções que são chamadas em diferentes componentes, como validações de inputs

Diagramas de Componentes

Clone repository
  • Gerência
  • Instalação
  • Retro
  • Utilizando a wiki
    • adicionando imagens
    • escrevendo em markdown
    • wiki no editor de texto
  • arquitetura
  • banco_dados
  • configuracao
  • design_mockups
  • escopo
  • estudos
  • gerencia
  • Home
  • instrucoes
View All Pages