Ir para o conteúdo

Processos de desenvolvimento de software

Histórico de Revisão

Data Versão Descrição Autores
25/09/2023 0.1 Adicionando os processos de desenvolvimento Júlia Yoshida
25/09/2023 0.2 Atualizando atividades de engenharia de requisitos Júlia Yoshida, Luana Ribeiro, Yasmim Oliveira e Yan Luca
25/09/2023 0.3 Detalhando o uso do Sommervile Júlia Yoshida
14/11/2023 0.4 Correção Scrum Luana Rbeiro

Metodologias

Abordagem Ciclo de vida Processo
Ágil Iterativo/Incremental Scrum/XP

No processo de desenvolvimento de uma aplicação, é importante ter em mente que o êxito do projeto não se restringe apenas à codificação. O sucesso depende igualmente da identificação das características da aplicação, para que a partir disso, possamos escolher as metodologias que melhor atendem às nossas necessidades.

A grande diferença entre uma abordagem dirigida à plano para uma ágil é a limitação que cada projeto possui, para o Matriculaí suas limitações estão no tempo e nos recursos financeiros o que direciona o projeto para uma abordagem ágil. Ao afunilar o universo de processo de desenvolvimento após a escolha da abordagem, o ciclo de vida se atém ao contato constante (ou não) com o cliente que, particularmente, se dispôs a ter um contato frequente com a equipe. O processo se deu ao utilizar o framework Sommerville que é um conjunto de perguntas de cárater técnico, organizacional e humano que nos proporcionou a segurança para eleger o Scrum/XP além de fatores como a familiaridade da equipe, o foco em feedback constante e entregas de valor.

Sommervile

A escolha da abordagem foi feita a partir dos critérios propostos pelo framework Sommervile. Para isso, respondemos às seguintes perguntas:

Perguntas técnicas

  1. Qual é o tamanho do sistema que está sendo desenvolvido? Pequeno.
  2. Que tipo de sistema está sendo desenvolvido? Solução Web.
  3. Qual é a vida útil prevista para o sistema? Indefinido.
  4. O sistema está sujeito a controle externo? Não.

Perguntas humanas

  1. Qual é o nível de competência dos projetistas e programadores do time de desenvolvimento? Júnior.
  2. Como está organizado o time de desenvolvimento? Scrum Master, Dev Back e Front, CI Tester (responsabilidade compartilhada).
  3. Quais são as tecnologias disponíveis para apoiar o desenvolvimento do sistema? ReactJs, GitHub, Notion, Google Meet, MySQL, NodeJs.

Perguntas organizacionas

  1. É importante ter uma especificação e um projeto (design) bem detalhados antes de passar para a implementação — talvez por motivos contratuais? Não.
  2. É realista uma estratégia de entrega incremental, na qual o software é entregue aos clientes ou outros stakeholders e um rápido feedback é obtido? Sim.
  3. Os representantes do cliente estarão disponíveis e dispostos a participar do time de desenvolvimento? Sim.
  4. Existem questões culturais que possam afetar o desenvolvimento do sistema? Não.

Atividades da engenharia de requisitos

Na tabela a seguir estão as atividades de engenharia de requisitos que serão realizadas durante o desenvolvimento do software:

Nome da atividade Método Momento na Sprint Ferramenta Entrega
Elicitação e Descoberta - Reuniões com o cliente - Sprint Review
- Sprint Planning
- Google Meet
- Notion
- Diagrama de Ishikawa
- Documentação da reunião com o cliente
Análise e Consenso - Estudo individual e reunião entre a equipe
- Reunião de confirmação com o stakeholder
- Sprint Planning
- Entre a Planning e a Review
- Sprint Review
- Google Meet
- Notion
- Backlog de requisitos
- Backlog da sprint
- Documentação da validação do cliente
Declaração - História de usuário - Sprint Planning
- Durante a sprint caso necessário
- Notion - Backlog de requisitos com histórias de usuário
Representação - Prototipação - Sprint Planning
- Sprint Review
- Figma - Protótipo
Verificação e Validação - Testes na aplicação e de validação do cliente
- Reunião com o cliente
- Testes durante a sprint
- Sprint Review
- Google forms
- Ferramentas de teste
- Documentação dos testes
- Documentação do feedback do cliente
Organização e Atualização Listagem dos requisitos
- Reuniões entre a equipe
- Reuniões com o stakeholder
- Sprint Planning
- Sprint Review
- Atividades durante a sprint
- Notion
- Discord
- Google Meet
- Documentação atualizada
- Aplicação atualizada

Configurações do processo de engenharia de requisitos: Participativo

Escolhemos o processo de engenharia de requisitos participativo, por estarmos trabalhando com uma metodologia ágil em um contexto em que temos um cliente específico e em que o foco é explorar os requisitos em uma série de iterações, tendo contato constante com o cliente.

Alvo Propósito Tempo
Cliente específico Exploratório Iterativo

SCRUM

Evento Descrição
Daily Scrum

Reunião diária com duração máxima de 15 minutos, na qual os membros da equipe devem discutir o progresso de trabalho da Sprint desde a última reunião diária. No caso deste projeto, serão realizadas trocas de mensagens diárias no grupo da equipe, para deixar todos a par das atividades semanais

Sprint Planning

Reunião realizada no inicio de cada sprint com o intuito de definir as entregas da sprint em questão.

Sprint Retrospective

Essa reunião ocorrerá ao fim de cada sprint e terá como objetivo analisar a dinâmica de trabalho da equipe e das ferramentas utilizadas, procurando melhorar se algo deixar a desejar.

Sprint Review

Durante a Sprint Review, faremos a revisão dos resultados da Sprint, a validação do que foi implementado, o alinhamento de expectativas e atualização do Product Backlog com a presença do cliente.

Product Backlog

Lista priorizada dos requisitos do produto que precisam ser desenvolvidos para atender aos objetivos do projeto.

Estratégias eXtremme Programming

Estratégia Descrição
Propriedade Coletiva

Qualquer membro da equipe pode alterar qualquer parte do código da aplicação a qualquer momento.

Ritmo Sustentável

Evita a sobrecarga de trabalho e o esgotamento dos membros da equipe.

Metáfora

Explicar o projeto de forma simples auxilia o time e o cliente a entender os elementos do sistema.

Refatoração

Melhorar o código existente sem alterar sua funcionalidade.

Programação em Pares

É uma abordagem colaborativa em que dois desenvolvedores trabalham juntos em um único código, compartilhando conhecimentos e habilidades para melhorar a qualidade e eficiência do desenvolvimento de software.

Jogo de Planejamento

Será utilizado no início de cada Sprint da metodologia SCRUM para priorizar as funcionalidades e definir as tarefas que serão realizadas.

Toda a Equipe

Fomenta a colaboração entre todos os membros da equipe para resolver problemas e atingir os objetivos do projeto, o que resulta em maior produtividade e na redução de conflitos entre os membros.

Pequenas Versões

Tornam o acompanhamento do progresso do projeto mais claro e objetivo, facilitando a identificação mais rápida de problemas tanto para a equipe quanto para o cliente.

Padrões de codificação

Uma codificação padronizada facilita a comunicação, encoraja a posse coletiva e evita problemas na programação.

Representação Scrum/XP

Image