Ir para o conteúdo

Processo de Desenvolvimento

Processo: SCRUM/XP

Tendo em vista que nosso projeto tem um conjunto de requisitos desconhecido, escolhemos uma abordagem ágil, e o processo escolhido é um misto de XP e SCRUM. A metodologia XP (Extreme Programming) é uma metodologia de desenvolvimento de software que se concentra na criação de software de alta qualidade, de maneira rápida e eficaz. Valoriza a simplicidade no design e na implementação, priorizando soluções simples e diretas. O XP é uma solução para projetos de software que tem requisitos voláteis, por conta de sua abordagem flexível, que permite a adaptação do desenvolvimento às mudanças. O framework de desenvolvimento de projetos SCRUM é uma forma de organizar o projeto em si e o trabalho em equipe, de forma que eles combinam. Detalharemos o raciocínio para a escolha nos tópicos mais abaixo.

Atividade Método(s) Ferramenta(s) Entrega
Elicitação e Descoberta Brainstorming;
Análise de personas;
Entrevistas;
Histórias e cenários;
Discord;
Microsoft Teams;
Lista de Requisitos Funcionais (RFs) e Requisitos Não-Funcionais (RNFs);
Lista de Personas;
Análise e consenso Prototipação, negociação, brainstorming Miro, Discord, Microsoft Teams Lista refinada dos RFs e RNFs
Declaração e representação Divisão de requisitos em temas, épicos e user stories;
Issues do Github;
Especificação de Requisitos com temas, épicos e histórias de usuário;
Verificação e Validação Checklist de verificação e validação;
Obtenção de feedback do(s) cliente(s);
Obtenção de feedback da equipe;
Backlog DEEP;
DoR e DoD;
Issues do Github;
Discord;
Microsoft Teams;
DoR e DoD de cada requisito da sprint;
Backlog do Produto no padrão DEEP;
Organização e atualização Priorização utilizando a técnica MoSCoW;
Issues do Github;
Backlog do produto priorizado;

Explicação detalhada da escolha do processo

Abordagem de Desenvolvimento: Ágil

Com base na série de questionamentos propostos por Sommerville (2019), a escolha da abordagem ágil é fundamentada nas características iniciais do projeto. Conforme vistas abaixo:

  • Requisitos não conhecidos na sua totalidade.
  • Prazo de entrega já definido.
  • Falta de verba inicial.
  • Entrega incremental de funcionalidades em prazos mais curtos.

Ciclo de vida: Iterativo e Incremental

Como os requisitos são incertos, provavelmente teremos que voltar em alguns durante o projeto, para assegurar a confiança e segurança para o cliente final. Ademais, não são conhecidas todas as exigências do cliente, portanto é importante a proximidade para consultas e mudanças mais rápidas. A escolha de um ciclo de vida iterativo e incremental proporciona uma maior flexibilidade no desenvolvimento baseado no surgimento ou alteração de requisitos, além do envolvimento com o cliente buscando feedback contínuo.

Abordagem de Desenvolvimento do Software: framework Sommerville

De base com a abordagem do framework Sommerville, optamos responder as perguntas classificadas em 3 temas.

Questões técnicas conectadas ao sistema que será desenvolvido. Questões humanas conectadas à equipe que cuidará do desenvolvimento Questões de organização conectadas às condições do ambiente que será desenvolvido a aplicação.

Questões técnicas:

Qual o tamanho do software que será desenvolvido?

  • Um sistema de pequeno porte.

Qual modelo de software será desenvolvido?

  • Uma aplicação web, de média complexidade e com requisitos pouco conhecidos.

Qual a vida útil prevista para o software?

  • Por hora, vida útil, médio a longo período

O sistema está sujeito a controle externo?

  • Sim, sujeito ao controle dos corretores e o acompanhamento dos clientes dos seguros

Questões Humanas:

Qual o nível técnico da equipe responsável pelo desenvolvimento?

  • A equipe possui conhecimentos em desenvolvimento web front-end, desenvolvimento de APIs e gerenciamento e modelagem de bancos de dados.

Como está organizado o time de desenvolvimento?

  • A equipe foi dividida em front-end e back-end.

Quais são as tecnologias disponíveis para apoiar o desenvolvimento do sistema?

  • Frameworks de desenvolvimento front-end (no caso, React) e back-end (Java, com o framework Spring).

Questões organizacionais:

É importante ter uma especificação e um projeto (design) bem detalhados antes de passar para a implementação — talvez por motivos contratuais?

  • Não, algumas partes da aplicação podem ser concluídas sem especificações de design.

É realista uma estratégia de entrega incremental, na qual o software é entregue aos clientes ou outros stakeholders e um rápido feedback é obtido?

  • Sim. Este método permite resolver problemas locais que podem afetar todo o produto antes da implementação completa do projeto.

Os representantes do cliente estarão disponíveis e dispostos a participar do time de desenvolvimento?

  • Não, os representantes, estarão apenas disponíveis para dar feedbacks, durante o processo, mas não participando do desenvolvimento em si.

Existem questões culturais que possam afetar o desenvolvimento do sistema?

  • Não, como o time está iniciando, não está vinculada a uma metodologia específica de desenvolvimento.