/API-6ADS

Aplicação web para monitoramento de red zones desenvolvida com Python, Java (Spring) e Vue.js na disciplina de Aprendizagem por Projetos Integrados do sexto semestre do curso de Análise e Desenvolvimento de Sistemas

OtherNOASSERTION


Objetivo | Relatórios | Backlog | Tecnologias | Commits | Branches | Equipe

🎯 Objetivo

Na indústria petrolífera e em embarcações de exploração de petróleo existem locais de acesso restrito denominados Red Zone. Por segurança, nestas Red Zones deve haver o monitoramento da quantidade de acessos, que é feito atualmente por meio de câmeras nos locais. Essas imagens são monitoradas por guardas e todos os registros de entrada e saída desses locais são lançados manualmente em planilhas.

Por ser um trabalho manual, como dito anteriormente, as anotações estão suscetíveis a falha humana e a geração de relatórios acaba sendo trabalhosa. Por esse motivo, a Altave Intelligent Monitoring, empresa parceira, propôs o desenvolvimento de um sistema automático para contabilização do número de pessoas que entram e saem de cada Red Zone. Importante lembrar ainda que a câmera utilizada para o monitoramento desses locais cobre todos os pontos de entrada e saída, mas pode não alcançar toda a área da Red Zone.

Diante desse contexto, o sistema deverá fornecer uma interface que possibilite ao usuário visualizar a quantidade pessoas em tempo real no local, bem como consultar a movimentação naquela região em determinado período de tempo a ser selecionado pelo usuário. Além disso, o sistema poderá monitorar diversas Red Zones em cada departamento, portanto, será necessário que o acesso seja restrito a cada guarda de cada departamento, de modo que apenas o gerente de segurança terá acesso aos dados de todos os locais.

📋 Relatórios

Na tabela abaixo é possível visualizar os resultados de cada Sprint clicando em "Ver relatório".

Sprint Entrega Status Relatório
01 14/04/2024 Ver relatório
02 05/05/2024 Ver relatório
03 26/05/2024 Ver relatório
04 16/06/2024 Ver relatório

Voltar ao topo

📌 Backlog do Produto




Foram definidos os seguintes requisitos funcionais para o sistema:

  • Requisito Funcional #1 (RF1): Desenvolver uma interface web intuitiva para visualização dos registros em forma de relatórios;
  • Requisito Funcional #2 (RF2): Permitir exportação de relatórios contendo os registros do monitoramento realizado;
  • Requisito Funcional #3 (RF3): Implementar modelo de machine learning para automatizar o monitoramento das red zones;
  • Requisito Funcional #4 (RF4): Implementar método de autenticação de usuários;
  • Requisito Funcional #5 (RF5): Criar seção para gestão de usuários;
  • Requisito Funcional #6 (RF6): Permitir a inclusão e exclusão de usuários no sistema;
  • Requisito Funcional #7 (RF7): Criar seção para gestão de red zones, permitindo a inclusão e exclusão de red zones do sistema;
  • Requisito Funcional #8 (RF8): Desenvolver um dashboard com indicadores por períodos;
  • Requisito Funcional #9 (RF9): Permitir que o usuário aplique filtros por períodos para análise dos dados.

Seguem os requisitos não funcionais definidos para este projeto:

  • Requisito Não Funcional #1 (RNF1): Manual do usuário;
  • Requisito Não Funcional #2 (RNF2): Documentação do sistema;
  • Requisito Não Funcional #3 (RNF3): Guia de instalação;
  • Requisito Não Funcional #4 (RNF4): Acesso às ferramentas de desenvolvimento.

Voltar ao topo

🛠️ Tecnologias

Foram usadas as seguintes ferramentas, linguagens e tecnologias para a execução do projeto:

  • Git: Versionamento de código
  • GitHub: Armazenamento de código
  • Teams: Comunicação interna do grupo
  • Slack: Comunicação com o cliente
  • DevOps: Planejamento e gestão do projeto
  • Docker: Integração entre Front-End e Back-End
  • PostgreSQL: Banco de dados SQL
  • MongoDB: Banco de dados NoSQL
  • Python: Automação com inteligência artificial
  • Java: Aplicação de lógica de programação no back-end
  • Spring: Framework de desenvolvimento de aplicações Java
  • Vue: Framework para a construção de interfaces web
  • Typescript: Linguagem de programação aplicada para front-end

Voltar ao topo

🗂️ Padronização de Commits

No início da primeira sprint, foi estabelecido um padrão para as mensagens de commit, o qual segue a seguinte estrutura:

  • <Ação>: Representa a ação realizada, como "Add" para adições de novos recursos, "Fix" para correções de bugs, "Update" para atualizações de funcionalidades existentes, etc.
  • <Descrição>: Fornece uma breve descrição do que foi alterado ou adicionado.

Exemplos de mensagens de commit seguindo este padrão:

  • adding images and technologies: Adição de imagens e tecnologias.
  • removed unused imports: Remoção de importações não utilizadas.
  • fixed some error with mongoDB: Correção de erro relacionado ao MongoDB.

Ao final da sprint, foi convencionado que seria adotada outra forma de padronização, já amplamente utilizada na área de desenvolvimento de software, o conventional commit. Esta nova abordagem foi implementada para organizar o repositório em que o projeto foi armazenado, tornando-o mais acessível. O conventional commits padroniza todas as alterações realizadas, permitindo que qualquer pessoa que consulte o histórico de commits deste projeto seja capaz de identificar facilmente o tipo de alteração feita no código da aplicação em cada commit.

Esse tipo de convenção divide a mensagem de commit em duas partes fundamentais: o tipo de commit e a descrição do que foi incluído, alterado ou excluído. Por tipo de commit é possível entender se foi feita a correção de um bug (fix), se foi excluída ou implementada uma nova feature (feat), se foi adicionada alguma documentação (docs), entre outros. Por fim, a descrição contém um breve resumo sobre o que foi modificado.

Seguem alguns exemplos da padronização adotada:

feat: add user management section

chore: modify .gitignore

docs: update sprint backlog


Repositório de referência: Conventional Commits


Voltar ao topo

⚙️ Estratégia de Branches

Para a primeira sprint, seguimos uma estratégia de nomenclatura de branches baseada em tarefas ou funcionalidades. Isso significa que cada branch é nomeada de forma descritiva para indicar a tarefa ou funcionalidade em que está trabalhando.

Exemplos da estratégia adotada:

Repositório IA

  • dataset: Esta branch está focada na organização do dataset utilizado no desenvolvimento da IA.
  • ia: Esta branch está dedicada ao treinamento do modelo de IA.
  • camera: Esta branch se concentra no desenvolvimento da funcionalidade de identificação de pessoas por meio de câmeras

Repositório Vue

  • Ligacao: Esta branch está relacionada à implementação da funcionalidade de ligação, entre o back-end com o front-end, dentro do componente Vue.
  • relatorio: Esta branch está sendo usada para implementar a tela de relatório na aplicação Vue.

A partir da segunda sprint, decidimos alinhar a estratégia de nomenclatura das branches com o padrão de commits adotado. Portanto, as novas branches seguirão o mesmo padrão de mensagens de commit.

Exemplos:

feature/branch-name

bugfix/branch-name

test/branch-name

Voltar ao topo

👥 Equipe

Função Nome GitHub LinkedIn
Scrum Master Ana Carolina das Neves
Product Owner Larissa Aparecida Diniz Silva
Developer Diego Batista da Silva
Developer Jeniffer Cristina Freitas Ramos
Developer Mateus Henrique Lima da Silva
Developer Wallace Marinho de Souza Silva

Voltar ao topo

Aprendizagem por Projetos Integrados - Faculdade de Tecnologia de São José dos Campos - Prof. Jessen Vidal