Metodologia
Introdução
Este documento procura descrever a metodologia utilizada no processo de desenvolvimento desse projeto. O grupo decidiu não focar em apenas um tipo de metodologia, adotando uma metodologia híbrida que inclui os aspectos de diversas metodologias que mais se adequam ao contexto da equipe e do projeto. A seguir serão descritos as metodologias que influenciaram o grupo e quais métodos foram adotados para o nosso contexto. Devido a pandemia, as práticas que viriam a ser realizadas de forma presencial serão feitas de forma remota, utilizando ferramentas que atendem a necessidade do grupo e do projeto.
Metodologias Ágeis
As metodologias utilizadas para o desenvolvimento do projeto estão ligadas ao desenvolvimento ágil de software. Analisando as necessidades do projeto e as metodologias disponíveis no mercado, o grupo decidiu adotar as que possuem grande aceitação na comunidade e estão consolidadas no mercado, como SCRUM, Kanban e XP.
Scrum
O Scrum é uma metodologia usada para uma gestão dinâmica de projetos, conectando as turmas de MDS e EPS que precisam trabalhar juntas para chegar a entrega do produto ao cliente. Foi utilizado para o acompanhamento das atividades referentes ao desenvolvimento do projeto, definindo as atividades que devem ocorrer durante o processo de desenvolvimento do produto.
As seguintes práticas e artefatos da metodologia ágil SCRUM foram adotados:
Práticas:
Sprints: O projeto será dividido em ciclos de uma semana, onde um conjunto determinado de atividades deverão ser realizadas. Dessa forma, o projeto será desenvolvido de forma interativa, com pequenas entregas que agregam valor sendo feitas ao longo do tempo.
A equipe escolheu adotar Sprints de uma semana, mas podendo variar de acordo com a necessidade do grupo.
-
Sprint Planning: É uma reunião que ocorre no início de cada Sprint, planejando a organização da equipe, a duração da Sprint e os entregáveis.
-
Sprint Review: Esse evento acontece ao final de cada Sprint, com o objetivo de verificar quais foram as entregas daquela Sprint.
-
Sprint Retrospective: A Sprint Retrospective é realizada após a reunião de Review. Essa prática tem o intuito de avaliar o que funcionou bem naquela Sprint e o que pode ser melhorado, além das dificuldades encontradas. Planos de ações serão definidos durante a Retrospective, visando mitigar ou até mesmo eliminar as dificuldades relatadas pelos membros da equipe.
Artefatos:
-
Procuct Backlog: É uma artefato que consiste em uma lista, que contém o que precisa ser feito. Nosso backlog do produto é composto por épicos, histórias de usuário, issues e critérios de aceitação.
-
Sprint Backlog: É um artefato que será utilizado para manter a lista de tarefas da Sprint que está sendo realizada.
XP
A metodologia eXtreme Programming(XP) tem como foco a agilidade de equipes e qualidade de projetos, apoiada em valores como simplicidade, comunicabilidade e feedback.
Os seguintes princípios e práticas da metodologia XP foram adotados:
Princípios:
Comunicação: A comunicação tanto entre o time quanto com os steakholders do projeto é algo fundamental no desenvolvimento do projeto. Esse princípio visa a integração e a participação ativa dos membros da equipe e dos demais envolvidos.
Práticas:
-
Pareamento: é uma técnica que consiste em duas pessoas desenvolvendo uma mesma funcionalidade de forma conjunta. Enquanto um escreve o código, a outra pessoa auxilia dando sugestões. Os papéis se invertem periodicamente. Essa prática será adotada pois estimula a comunicação e cria um ambiente para a troca de conhecimento e maior aprendizagem entre a equipe.
-
Equipe Integral: é uma prática que visa a inserção e integração de todos os membros envolvidos no projeto. Permitindo que todos sejam ouvidos e o projeto seja bem sucedido.
-
Baby Steps: As mudanças no código serão feitas de forma incremental. O foco estará apenas no que é necessário ser entregue naquela etapa de desenvolvimento, e o software evolui a cada incremento até chegar no produto final.
-
Integração Contínua: Essa é uma prática utilizada para construir ou integrar as etapas de desenvolvimento de uma software. O versionamento do projeto sera realizado no GitHub, construindo novas releases ou integrando novas funcionalidades.
-
KANBAN: O Kanban é um quadro que auxilia a manter o gerenciamento do fluxo de trabalho da equipe. Cada cartão presente no quadro representa uma atividade, sendo controlado os fluxos no qual cada cartão se encontra. Comumente são utilizado três fluxos principais: To Do, Doing, Done.
-
To Do: É a lista que contém as tarefas a serem realizadas para a conclusão do projeto.
Doing: Contém as atividades que estão em andamento. No nosso contexto, são as issues que estão abertas.
Done: As atividades que foram revisadas e finalizadas encontram-se nessa lista. As issues são enviadas para essa coluna após seus pull request ser aceito pelos revisores.
Ferramentas
GitHub: Ferramenta de versionamento e hospedagem de código-fonte e arquivos com controle de versão usando o Git.
Telegram: Aplicativo utilizado para troca de mensagens entre a equipe de forma informal.
Discord: Aplicativo de troca de mensagens por voz e texto, utilizado como principal meio de comunicação da matéria de MDS/EPS.
Zenhub: Utilizado para aplicar as técnicas do Kanban. Facilita na visualização do status do projeto.
Visão de Produto
A visão de produto trata do entendimento geral do que é e como será o produto no futuro. Essa etapa é de suma importância nas fases iniciais do processo de desenvolvimento de software, onde há uma discussão entre os usuários e desenvolvedores, com o objetivo de garantir que todos os envolvidos no projeto entendam qual é o objetivo do software e como ele deve alcançar esse objetivo.
Existem vários métodos que estabelecem um processo com o objetivo de consolidar a visão do produto com os envolvidos. Para o desenvolvimento do SiGeD durante o semestre de 2021.2, foi escolhido o método Lean Inception.
Lean Inception
O Lean Inception é o nome dado ao workshop colaborativo utilizado para alinhar o grupo e os stakeholders acerca do Produto Mínimo Viável (MVP) a ser desenvolvido. O Lean Inception tem uma sequência de etapas para alcançar esse objetivo, sendo elas:
- Visão do Produto;
- O Produto É - NÃO É - FAZ - NÃO FAZ
- Objetivos do Produto
- Personas
- Jornada de Usuário
- Brainstorming de Funcionalidades
- Revisão Técnica, de Negócio e de UX
- Sequenciador
- Canvas MVP
O Mural do Lean Inception pode ser acessado através do seguinte link: MURAL - Lean Inception.
Referências
Agile - Agile 101 Disponível em: https://www.agilealliance.org/agile101/. Acesso em: 15 mar. 2022.
XP - eXtreme Programming. Disponível em: http://www.extremeprogramming.org/. Acesso em: 15 mar. 2022.
Kanban. Disponível em: https://artia.com/kanban/. Acesso em: 15 mar. 2022.
SCRUM. Disponível em: https://www.desenvolvimentoagil.com.br/scrum/. Acesso em: 15 mar. 2022.
Histórico
Versão | Data | Modificação | Autor(es) |
---|---|---|---|
0.1 | 14/03/2022 | Criação do documento | Rafael Ribeiro |
0.2 | 15/03/2022 | Desenvolvimento do documento | Murilo, Gabriel e Rafael |
1.0 | 16/03/2022 | Finalização da primeira versão e revisão | Murilo, Gabriel e Rafael |