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 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
Nível 2: Diagrama de contêineres
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á receberGET
,POST
,PUT
ouDELETE
. -
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
Frontend
Definições de Tecnologias
TBD
Módulos do Sistema
TBD
Diagramas de Componentes
TBD
Diagrama do Sistema
TBD