Objetivo | Relatórios | Backlog | Tecnologias | Commits | Branches | Equipe
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.
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 |
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.
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
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
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