Skip to content

Felipewiiu/POSTEC_RESTAURANTMANAGEMENT

Repository files navigation

TRABALHO DE CONCLUSÃO - FASE 3 # - DEPLOY, ARQUITETURA E QUALIDADE DE SOFTWARE

API de Gerenciamento de Restaurantes


Esta API permite a interação com um sistema de gerenciamento de restaurantes, fornecendo funcionalidades para criar, atualizar, consultar informações relacionadas a restaurantes, reservas e avaliações. A API foi projetada para atender tanto clientes quanto administradores.

Funcionalidades Principais:

  • Cadastro de Restaurantes:
    • O sistema permite cadastrar restaurantes, fornecendo informações como nome, localização, tipo de cozinha, horários de funcionamento e capacidade.
    • O sistema permite: buscar restaurantes por nome, cozinha e por CEP
    • Não é permitido criar restaurante com capacidade menor que 20 mesas
  • Reserva de Mesas:
    • O sistema permite criar reservas para datas e horários específicos.
    • Não é possível criar reserva para um número de pessoa menor que 1
    • Administradores podem gerenciar reservas e visualizar as informações de disponibilidade.
    • Não é possível a criação de reservas fora do horário de funcionamento dos restaurantes
    • Não é possível criar uma reserva se a quantidade de mesas requeridas seja maior que a capacidade do restaurante
  • Avaliações e Comentários:
    • Os clientes podem adicionar avaliações dos restaurantes.
    • Avaliações incluem classificações de estrelas e comentários detalhados.
    • O sistema só permite avaliar o restaurante se o usuário fizer uma reserva e ter o status FINESHED, garantindo que ele frequentou o restaurante
  • Clientes:
    • É possível criar um cliente contendo: Nome, email e telefone
    • É possível buscar um cliente pelo seu ID

Links úteis


Para executar o projeto , siga os passos abaixo:

  1. Download do projeto no GitHub: Primeiro, faça o download do projeto a partir do repositório no GitHub. Você pode clonar o repositório usando o seguinte comando:

    $ git clone https://github.com/Kleuber7/RestaurantManagement.git
  2. Pré-requisitos: Antes de executar o projeto, certifique-se de ter instalado os seguintes componentes:

    -   Maven (versão 3.x)
    -   Java 17
    -   PostgreSQL (versão 16.x)
  3. No diretório do projeto: Navegue até o diretório onde você clonou o projeto:

    cd RestaurantManagement
  4. Compilando e empacotando com o Maven: Execute o seguinte comando para compilar o projeto e gerar o arquivo JAR:

    mvn clean package
  5. Executando a aplicação: Agora, inicie a aplicação com o seguinte comando:

    java -jar target/RestaurantManagement-1.0-SNAPSHOT.jar
  6. Docker: para subir os container Dokers basta seguir os comandos:

  • Para buildar a imagem
make docker-build
  • Para subir os containers
make docker-start
  • Para encerrar os containers
make docker-stop

Design Arquitetônico:

O projeto foi desenvolvido tendo como base os princípio de Clean architecture, visando fundamento da inverção de dependências, que garante o desacloplamento dos framworks do mercado

clear architecture

Diagrama de pacotes

Assim estão distribuidos os pacotes da aplicação:

diagramaDePacotes.png

Diagrama de arquitetura aplicada ao projeto

Diagrama de arquitetura


Qualidade de Software:


Testes Unitários:

Testes Unitários: Os testes unitários são responsáveis por validar o comportamento isolado de cada unidade do sistema, garantindo que cada componente funcione conforme o esperado.

Para executar os testes unitários do projeto, siga os passos abaixo:

Compilar o projeto: Antes de rodar os testes, certifique-se de compilar o projeto com o comando:

mvn compile

Testes Unitários: Os testes unitários garantem que cada unidade do código funcione corretamente de forma isolada.

  • Para rodar os testes unitários, execute o comando:
make unit-test

Testes Integrados e Inspeção de Código:

Testes de Integração: Os testes de integração verificam a interação entre diferentes componentes do sistema.

  • Para executar os testes de integração, utilize o comando:
make integration-test

Testes de Integração no Controller, CI e BDD:

Testes de Sistema: Esses testes garantem que o sistema como um todo esteja funcionando de maneira correta em um ambiente que simule o de produção. O cucumber com bdd estao testando o fluxo d ponta a ponta.

  • Para executar os testes de sistema, utilize o seguinte comando:
  • OBS: Para executar os testes de sistemas é preciso que a API esteja rodando
make system-test

Cucumber

Github actions

Realizamos também uma esteira de testes automatizados com o Github actions criando pipeline de CI/CD.

Cucumber

Testes Não Funcionais:

  1. Testes de Performance: Os testes de performance avaliam o comportamento da aplicação sob diferentes níveis de carga.
  • Para executar os testes de performance usando Gatling, utilize o comando:
make performance-test

Gatllin

Executando todos os testes

  • Se você deseja executar todas as categorias de testes (unitários, de integração e de sistema), pode utilizar o seguinte comando:
make test 

Gerar relatórios de testes com Allure

Gerar relatório de testes.

  • Para visualizar o resultado dos testes com o Allure, execute o comando abaixo. Isso gerará um gráfico e relatórios detalhados dos testes executados:
  • OBS: É necessário ter o node instalado em seu host e depois instalar o pacote Allure com npm i allure
allure serve target/allure-results

Allure

Estrutura do relatório: O relatório gerado pelo Allure fornece uma visão geral dos testes executados, incluindo métricas como:

  • Número de testes executados
  • Testes aprovados, reprovados e com erro
  • Tempo de execução de cada teste
  • Gráfico de cobertura de testes
  • Manutenção dos testes: Para garantir a qualidade contínua do código, é importante que os testes unitários sejam sempre executados após qualquer modificação no código.

Cobertura de testes:

Aqui uma demostrção da cobertura de testes unitários e integração da aplicação:

Cobertura de testes

Deploy:

O sistema foi hospedado na nuvem da Railway

nuvem

C) Participantes

  • RM353873 - Kleuber Costa
  • RM354111 - Felipe Oliveira
  • RM354482 - Letícia Oliveira
  • RM354525 - Marcello Caseiro
  • RM355621 - Paulo Bof

About

Projeto do meu curso de pós-graduação em arquitetura de software

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages