Ir para o conteúdo

METODOLOGIA

Histórico de Revisão

Data Versão Descrição Autor(es)
01/09/19 0.1 Criação do documento, indicação de tópicos e referências Lieverton Silva e Welison Regis
01/09/19 0.2 Adiciona scrum Lieverton Silva e Welison Regis
01/09/19 0.3 Adiciona kanban Lieverton Silva e Welison Regis
01/09/19 0.4 Adiciona burndown e velocity Lieverton Silva e Welison Regis
01/09/19 0.5 Adiciona quadro de conhecimento e metodologia montada Lieverton Silva e Welison Regis
05/09/19 0.6 Adiciona BPMN de sprint Lieverton Silva e Welison Regis
05/09/19 0.7 Adiciona quadro de conhecimento e arruma referências Welison Regis
05/09/19 1.0 Gera primeira versão do documento Lieverton Silva e Welison Regis

Introdução

O presente documento busca definir e formalizar as metodologias de trabalho a ser aplicadas no desenvolvimento do projeto. Nesse sentido, estabelece-se abaixo as metodologias pertinentes ao escopo de elaboração da aplicação, como pode-se citar o scrum, kanban, extreme programming e, também, as metodologias de gerência, como, por exemplo, reuniões, quadro de conhecimento e avaliações de desempenho com burndown, velocity.

Metodologias de desenvolvimento

Scrum

Scrum é uma metodologia ágil voltada para gestão e planejamento de projetos de software.

No Scrum, os projetos são dividos em ciclos (tipicamente mensais), conhecidos como sprints. O Sprint representa um espaço de tempo dentro do qual um conjunto de atividades devem ser executadas. Metodologias ágeis de desenvolvimento de software são iterativas, ou seja, o trabalho é dividido em iterações, que são chamadas de Sprints no caso do Scrum.1

A metodologia scrum define a utilização de um product backlog, o qual contém as funcionalidades a serem implementadas no projeto. No início de cada Sprint, faz-se um Sprint Planning Meeting, ou seja, uma reunião de planejamento na qual o Product Owner prioriza os itens do Product Backlog e a equipe seleciona as tarefas que ela será capaz de implementar durante o Sprint que se inicia. As tarefas alocadas em um Sprint são transferidas do Product Backlog para o Sprint Backlog.

Durante os dias de uma sprint, a equipe faz uma breve reunião (normalmente de manhã), chamada Daily Scrum. O objetivo é propagar o conhecimento sobre o que foi feito no dia anterior, identificar impedimentos e priorizar o trabalho do dia que se inicia.

Ao final de um Sprint, a equipe apresenta as funcionalidades implementadas em uma Sprint Review Meeting. Finalmente, faz-se uma Sprint Retrospective e a equipe parte para o planejamento do próximo Sprint. Assim reinicia-se o ciclo.

Scrum

Kanban

Kanban é uma metodologia que se utiliza de cartões (post-it e outros) para indicar o andamento dos fluxos de produção.

Nesses cartões são colocadas indicações sobre uma determinada tarefa, por exemplo, “para executar”, “em andamento” ou “finalizado”.

A utilização de um sistema Kanban permite um controle detalhado de produção com informações sobre quando, quanto e o que produzir.

Kanban

Extreme Programming (XP)

A Extreme Programming (XP) é uma Metodologia Ágil para equipes pequenas e médias que desenvolvem software baseado em requisitos vagos e que se modificam rapidamente. Entre as principais diferenças da XP em relação às Metodologias Clássicas estão o feedback constante, a abordagem incremental e o encorajamento da comunicação entre as pessoas.

Entre as principais práticas do XP, pode-se citar: planejamento, entregas frequentes, metáfora, projeto simples, testes, programação em pares, refatoração, propriedade coletiva, integração contínua, cliente presente e padronização do código.

As práticas são conduzidas respeitando alguns princípios: princípio da comunicação, princípio da simplicidade, princípio do feedback e o princípio da coragem.

Metodologias de gerência

Burndown

Um gráfico de burndown é uma representação gráfica do trabalho a ser feito versus tempo. O trabalho restante (ou backlog) é geralmente no eixo vertical, com o tempo no eixo horizontal. É útil para prever quando todo o trabalho será concluído, frequentemente usado em metodologias ágeis de desenvolvimento de software, como o Scrum.

Burndown

Velocity

O velocity é uma medida que evidência a velocidade do time para um projeto Scrum. Esse número é calculado e atualizado após a entrega de cada sprint e baseia-se na média dos pontos entregues das sprints concluídas. O time usa essa informação para saber até quantos pontos de história eles conseguem produzir por sprint.

Velocity

Quadro de Conhecimento

O quadro de conhecimento guarda informações referentes ao conhecimento técnico de cada membro em relação às tecnologias envolvidas no projeto. Este quadro permite acompanhar a evolução de cada membro nas respectivas tecnologias, assim como acompanhar a circulação do conhecimento ao longo das sprints.

Quadro de conhecimento

Metologia Montada

Visando uma boa organização e um bom controle do processo de produção, a equipe decidiu montar uma metodologia híbrida baseada nas metodologias ágeis: Scrum, XP e Kanban.

A adaptação foi realizada para suprir as necessidades do projeto, que devido estar em contexto acadêmico, muitas práticas não se encaixão ou por outro lado, nas metodologias puristas, há a falta de algumas rotinas.

O grupo também decidiu utilizar o plug-in ZenHub. Essa ferramenta facilita a visualização do progresso das tarefas e é falcilmente integrada ao backlog por meio das issues criadas ao longo do projeto. Com ela também podemos gerar os gráficos Burndown e Velocity, para auxilar na tomada de decisão e análise de cada issue e projeto como um todo.

Também é utilizado o quadro de conhecimento para planejar a sprint e manter a equipe engajada.

Scrum no Projeto

Foram adotados os seguintes aspectos do scrum:

  • Sprints: foi definido a duração de duas semanas para cada ciclo, sendo este iniciado em uma segunda e finalizado em um domingo;

  • Product Backlog: é uma lista contendo todas as funcionalidades desejadas para um produto;

  • Sprint Backlog: é uma lista de tarefas que o que a equipe se compromete a fazer em uma Sprint;

  • Sprint Planning/Retrospective/Review: reunião no início de uma sprint com o objetivo de organizar o que será feito na sprint e analisar o que foi alcançado na sprint anterior.

Kanban no projeto

O grupo definiu o seguinte pipeline (colunas):

  • News issues: corresponde ao backlog do produto;
  • Backlog: contém as issues da sprint;
  • In Progress: os membros responsáveis estão trabalhando no artefato;
  • Review: o artefato está pronto, porém aguardando a aprovação da equipe;
  • Done: o artefato foi revisado e aceito.

XP no projeto

As seguinte práticas do XP foram adotadas pela equipe:

  • Projeto simplificado: quanto mais simples for o projeto, mais rápido é seu desenvolvimento;

  • Programação em pares: o desenvolvimento é guiado pela programação em par, ou seja, todo o sistema é implementado por dois programadores em uma única máquina;

  • Refatoração: reestruturar o sistema, sem alterar o seu comportamento, removendo sempre que possível a duplicidade, melhorando e simplificando o que já existe e tornando-o mais flexível;

  • Propriedade coletiva: os códigos não têm um dono, qualque membro pode melhorar ou corrigir o código;

  • Integração contínua: integre e atualize as versões do sistema a cada vez que uma nova tarefa for concluída;

  • Padrões de codificação: os programadores devem escrever seus códigos respeitando o padrão.

Comunicação da Equipe

São utilizadas as seguintes ferramentas para comunicação:

  • Telegram: para realizar contato rápido;
  • Discord: para pareamentos ou reuniões com aúdio, texto, vídeo e transmissões de telas;
  • Visual Studio Live Share: para facilitar o pareamento, permitindo que o par possa trabalhar sob um mesmo ambiente (o que auxilia muito em escrever textos em markdown);
  • Google Drive: para rastrear e guardar artefatos;
  • Issues no github: como forma de organização;
  • bot no discord: para informar o andamento das issues do repositório.

Diagramação BPMN da sprint

De acordo com as metodologias definidas e os papéis desempenhados, pode-se desenhar em diagramação BPMN como será o fluxo das atividades do projeto no contexto das sprints, conforme abaixo:

BPMN de Sprint

Referências


  1. DESENVOLVIMENTO ÁGIL. Scrum. [S. l.], 2014. Disponível aqui. Acesso em: 4 set. 2019. 

  2. SCRUM.ORG. What is Scrum?: A Better Way Of Building Products. [S. l.]: Scrum.org, 2019. Disponível aqui. Acesso em: 3 set. 2019.