Javali

Alt text Trabalho de API do 2º semestre da FATEC.

Desafio

Ter um bom entendimento do clima de uma região é imprescindível para o planejamento de atividades em várias áreas. Por exemplo, conhecer a temperatura e umidade média em determinados períodos do ano pode influenciar na escolha do que plantar em uma fazenda. Atualmente, existem diversas bases de dados públicas que fornecem essas informações na forma de arquivos CSV. Entretanto, existem diversos arquivos para uma mesma cidade (um para cada estação de monitoramento) que, dependendo do tipo da estação, podem apresentara diferentes formatos. Com base no exposto, gostaríamos de um Sistema de Banco de Dados capaz de receber esses arquivos, validar seu conteúdo e prover relatórios.

Objetivos

🤖 Competências

  • Projetar Banco de Dados relacional com múltiplas entidades e relacionamentos;
  • Organizar Equipes por Competências;
  • Levantar e Registrar Requisitos Funcionais e Não Funcionais usando técnicas de Métodos Ágeis e Tradicionais;
  • Projetar Arquitetura Lógica do Sistema;
  • Implementar Aplicação (com persistência) usando Linguagem de Programação Java Desktop.

🤖 Tecnologias

  • Linguagem Java Desktop e conexão com Banco de Dados usando JDBC;
  • Banco de Dados modelo Relacional;
  • Git.

🤖 Requisitos Funcionais

  • Relatório de valor médio das variáveis climáticas por cidade. Deve ser possível escolher uma cidade e um período de tempo. O relatório deve ter periodicidade horária (um registro a cada hora);
  • Relatório de situação, apresentando os valores médios das últimas medidas para cada cidade;
  • Gerenciamento de estações, cidades e unidades de medida. Deve ser possível visualizar e alterar informações sobre esses elementos do sistema. Cada estação está localizada em uma cidade do estado de SP. Cada variável climática medida possui uma unidade de medida;
  • Carregamento e validação de arquivos CSV contendo variáveis climáticas. Registros suspeitos (exemplo: registro com temperatura acima de 60 graus Celsius ou inferior a -20 graus Celsius) devem ser armazenados a parte para revisão manual. Cada arquivo possui registros de apenas uma estação (referenciada no nome do arquivo). Cada registro apresenta valores para todas as variáveis, mas elas devem ser armazenadas separadamente (um registro para temperatura, outro para umidade, etc, em vez de um único registro contendo temperatura, umidade, etc);
  • Tratamento de registros suspeitos, que permita exclusão ou revisão. Deve ser possível alterar os valores e passá-los à base de dados principal ou excluí-los.

🤖 Requisitos Não Funcionais

  • Linguagem Java;
  • Banco de Dados Relacional;
  • Documentação: manual de usuário, diagrama entidade-relacionamento e instruções de instalação.

🤖 Prazos

Sprints Início Fim
1ª sprint 25/03 14/04
2ª sprint 15/04 05/05
3ª sprint 06/05 26/05
4ª sprint 27/05 16/06
Feira de Soluções 27/06 27/06

Sprint 1:

  • Interpretar um documento CSV que contém dados metereólogicos

Sprint 2:

  • Gerar relatórios de valor médio das variáveis climáticas por cidade
  • Gerar relatório de situação

Sprint 3:

  • Gerar relatório para se plotar um gráfico boxplot
  • Gerenciar valores limites a serem utilizados como parametro para definir valores de risco nas medições

Sprint 4:

  • Alterar valores de risco nas medições
  • Gerir as unidades de medida usadas no sistema.
  • Gerir as cidades e as estações, tal como a relações entre estação e cidade

🤖 Priorização das Sprints

Board Kanbam com a priorização

Ao abrir os cards do kanbam será possível ver a priorização no lado direito como um dos atributos dos cards.

Produto

Backlog

Como Eu quero Valor Prioridade Sprint Status
Pesquisador Interpretar um documento CSV que contem dados metereólogicos Facilitar a leitura dos documentos das estações Alta 1 Finalizado
Pesquisador Gerar relatórios de valor médio das variáveis climáticas por cidade Agilidade na leitura e na interpretação de dados uteis envolvendo uma analise da cidade Alta 2 Finalizado
Pesquisador Gerar relatório de situação Agilidade em obter os dados relacionados relacionados a situação atual Alta 2 Finalizado
Pesquisador Gerar relatório para se plotar um gráfico boxplot Agilidade em obter os dados para plottar um gráfico util para analise de dados Alta 3 Finalizado
Pesquisador Gerenciar valores limites a serem utilizados como parametro para definir valores de risco nas medições Ter valores possivelmente suspeitos de acordo com a nescessidade Média 3 Finalizado
Pesquisador Alterar valores de risco nas medições Manter dados com melhor verificação em todos os relatórios Média 4 Finalizado
Pesquisador Gerir as cidades e as estações, tal como a relações entre estação e cidade Informações mais completas e personalizadas sobre as estações e cidades Baixa 4 Finalizado
Pesquisador Gerir as unidades de medida usadas no sistema. Informações mais completas referente as unidades usadas no relatóro Baixa 4 Finalizado

Descrição das user stories feitas por sprint

User Stories

Burndown do projeto

Burndown

Tecnologias e Ferramentas Utilizadas

Alt text

Modelo Entidade relação

Wireframe

Modelo Lógico do Banco de Dados

alt text

Como configurar e rodar o projeto localmente

🪑🎲 Passo-a-passo para criar seu banco de dados local com PostgreSQL

🐘 PostgreSQL Local

db.url = "jdbc:postgresql://localhost:5432/"
db.name = "db_javalee"
db.user = "postgres"
db.password = "javalee"

🐘 PostgreSQL Docker

O trabalho conta com docker compose para facilitar a execução do banco de dados. Para isso, é necessário ter o docker e docker compose instalados em sua máquina.

Roda o comando na raiz do projeto via terminal

docker compose up -d

DBeaver é excelente para visualizar o banco de dados, conectar com docker e manipular os dados. Download

No Dbeaver, é possível realizar a conexão com as credenciais via URL

jdbc:postgresql://localhost:5432/db_javalee
  • Abra um editor SQL e execute o script de criação do banco de dados db_javalee.sql Como você já vai ter criado o banco via Dbeaver com nome DB_javalee. Não é necessário rodar a primeira linha do script de criação do banco.

-> ❌ CREATE DATABASE db_javale

🚀 Rodando o projeto

Rode o projeto via app.java na pasta javalee

Ou

Faça o dowload da release mais recente!

Wireframe do Produto

Wireframe

Equipe

Integrante LinkedIn
Vinícius Augusto da Silva Monteiro Static Badge LinkedIn
Ricardo Campos Static Badge Static Badge LinkedIn
Elbert Jean Static Badge LinkedIn
Isaque Souza Static Badge LinkedIn
Maria Clara Static Badge LinkedIn
Marília Borgo Static Badge Static Badge LinkedIn
Paloma Soares Static Badge LinkedIn