Ir para o conteúdo

Processo de Desenvolvimento de Software

A equipe adotou a metodologia ágil SCRUM, com adaptações específicas para incluir reuniões semanais com o cliente e a equipe. Essa abordagem tem como objetivo promover entregas incrementais de valor e alinhar as expectativas de todas as partes envolvidas.

A imagem abaixo mostra de maneira ilustrativa, como funciona a metodologia Scrum que será aplicada no projeto, mencionada no texto anterior.

Scrum

Imagem 2: Metodologia Scrum - Fonte: Benner - Tecnologia: Scrum

O desenvolvimento será conduzido em Sprints semanais, permitindo entregas frequentes e um fluxo contínuo de feedback do cliente.

Abaixo, a imagem resume como funciona uma sprint, aplicada ao desenvolvimento do nosso projeto. Sprint

Imagem 2: Resumo de como uma sprint funciona - Fonte: Artia - Sprint

Reuniões Semanais

Reunião com o Cliente

Realizada semanalmente com o objetivo de:

  • Alinhar expectativas;
  • Apresentar o progresso realizado na Sprint anterior;
  • Discutir alterações ou novas demandas;
  • Revisar as prioridades do projeto.

Reunião com a Equipe

Realizada semanalmente, antes da reunião com o cliente, com o objetivo de:

  • Planejar as tarefas da Sprint atual;
  • Organizar os próximos passos;
  • Preparar os itens a serem apresentados ao cliente.

Execução das Tarefas

As tarefas da Sprint serão realizadas em pares, seguindo o princípio de trabalho colaborativo. Essa abordagem promove:

  • Revisão contínua do trabalho realizado;
  • Compartilhamento de conhecimento entre os membros da equipe;
  • Maior qualidade nas entregas.

Ferramentas Utilizadas

Para o desenvolvimento do aplicativo de detecção de doenças em plantas, serão utilizadas as seguintes ferramentas:

Frontend:

  • React Native: Para desenvolvimento da interface do usuário, garantindo alta performance e compatibilidade com dispositivos móveis.
  • Expo: Framework que simplifica o desenvolvimento, construção e deploy de aplicativos móveis.

Backend:

  • NestJS: Framework robusto para desenvolvimento do backend, baseado em Node.js, com foco em modularidade e escalabilidade.
  • PostgreSQL: Banco de dados relacional, escolhido por sua confiabilidade, desempenho e suporte a grandes volumes de dados.

Organização com Notion e GitHub A equipe utiliza duas ferramentas principais para organização e documentação:

Notion - Utilizado para organizar e centralizar atividades operacionais, como:

  • Planejamento de Sprints: Metas, tarefas e cronograma de cada Sprint;
  • Organização de Reuniões: Agendas, pautas e decisões das reuniões semanais;
  • Pesquisas sobre Plantas: Informações técnicas e científicas para embasar as funcionalidades do aplicativo;
  • Histórias de Usuário: Detalhamento das necessidades e expectativas dos usuários;
  • Padrões de Desenvolvimento: Definição de boas práticas e convenções de código;
  • Organização da Equipe: Responsabilidades, horários e alocação de tarefas.

GitHub - Utilizado como o repositório central para toda a documentação do projeto, incluindo:

  • Atas de Reunião: Registro detalhado das reuniões semanais com o cliente e a equipe;
  • Documento de Arquitetura: Detalhes técnicos sobre a estrutura e os componentes do aplicativo;
  • Plano de Testes: Estratégias, casos de teste e resultados para garantir a qualidade das entregas;
  • Documento de Requisitos: Descrição detalhada das funcionalidades e necessidades do sistema;
  • Documento de Visão: Declaração dos objetivos e escopo do projeto, alinhando expectativas entre a equipe e o cliente;
  • Histórico de Versões: Controle de mudanças nos documentos e no código-fonte.

Incrementos de Software

Ao final de cada Sprint, serão entregues funcionalidades incrementais que serão testadas e validadas antes da apresentação ao cliente e também atenderão às prioridades e expectativas definidas durante as reuniões.

Papeis e Responsabilidades

Scrum Master

  • Responsável por facilitar o processo de desenvolvimento, garantindo que a equipe siga as práticas do SCRUM. Ele também atua removendo impedimentos que possam afetar o progresso do time.

Equipe de Desenvolvimento

  • Responsável por planejar e executar as tarefas, identificar e resolver impedimentos, e garantir que as funcionalidades atendam às expectativas do cliente.

Cliente

  • Participa ativamente no processo, fornecendo feedback contínuo e ajudando na priorização das entregas.