A metodologia aplicada netes projeto será uma metodologia híbrida baseada nos frameworks Scrum, Extreme Programming e Kanban. Abaixo segue a descrição de quais técnicas serão aplicadas e como cada uma deve ser seguida.
Papéis
Scrum Master
São responsabilidades deste papel:
- Garantir a dissiminação do conteúdo por meio da aplicação de técnicas que constam nesse plano de metodologia. Ex.: Pareamento;
- Remover obstáculos do desenvolvimento e minimizar os riscos do projeto;
- Definir, monitoriar e melhorar a produtividade por meio de métricas coletadas sobre o projeto;
- Garantir a execução da metodologia conforme está definido neste plano.
Product Owner
São responsabilidades deste papel:
- Levantar os pontos importantes que mais agregam valor ao produto do ponto de vista dos stakeholders;
- Definir os critérios de aceitação para uma issue;
- Garantir a boa usuabilidade do que está sendo implementado.
DevOps
São responsabilidades deste papel:
- Verificar e aceitar os pull requests de acordo com os critérios definidos pelo Scrum Master e o PO;
- Garantir o disponibilidade dos ambientes de desenvolvimento, homologação e produção;
- Configurar integração e deploy contínuo;
- Registrar o gitflow.
Arquiteto
São responsabilidades deste papel:
- Organizar e modelar a arquitetura do sistema;
- Acompanhar o processo de desenvolvimento para garantir que a arquitetura está sendo seguida.
Desenvolvedor
São responsabilidades deste papel:
- Desenvolver a história;
- Testar sempre as soluções. visando mantes no mínimo 90% da corbetura do código;
- Seguir os padrões e técnicas de programação adotados pelo Scrum Master.
Rituais
Sprints
- Duração de 7 dias
- Todas as sprints se iniciaram na quarta-feria e terão seu término na terça-feira da semana seguinte.
- Sprints que antencedem as releases poderão ser: encurtadas para sprints de 4 dias ou emendadas com a sprint anterior, gerando sprints de 11 dias. Será responsabilidade do Scrum Master, avaliar previamente, conforme andamento da equipe, qual a melhor opção será aplicada.
Daily Meeting
- Duração Máxima: 15 minutos
- Realizadas diariamente às 15:45h
- A ausência destas reuniões deverá ser previamente comunicada pelo membro da equipe e justificada. Sendo obrigação do mesmo informar o andamento das duas atividades neste dia pelos meios de comunicações definidos pela equipe.
Sprint Review
- Duração Máxima: 1,5 horas
- Ocorrerão toda terça-feira, tendo início as 18h
Sprint Restropective
- Duração Máxima: 30 minutos
- Ocorrerão toda terça-feira, tendo início as 19h
Sprint Planning
- Duração Máxima: 2 horas
- Ocorrerão toda quarta-feira, tendo início as 16hh
Técnicas de Planejamento
Issues
- As issues serão aplicadas para representar os mais diversos tipos de tarefas que o projeto demandar.
-
Devem ser classificadas por meio das labels. Seguindo o seguinte padrão:
- Responsável
- Labels identificadas pelo número 0.
- Possíveis valores:
- Arquiteto
- Time de Desenvolvimento
- Scrum Master
- Product Owner
- Devops
- Integra App.
- Tipo de atividade
- Labels identificadas pelo número 1.
- Possíveis valores:
- API
- Frontend
- Feedback
- Documentação
- Infraestrutura
- Integração (Integração entre frontend, backend e outros serviços)
- Product Backlog
- Protótipo
- Tarefa
- Treinamento
- Especificação da atividade
- Labels identificadas pelo número 2.
- Possíveis valores:
- Comunidade de Software
- Deploy Contínuo
- Integração contínua
- Desing
- Marketing
- Métricas e Indicadores
- Funcionalidade
- Abertura do Projeto
- Especificação do Projeto
- História Técnica
- Viabilidade técnica
- Status da issue na sprint
- Labels identificadas pelo número 3.
- Possíveis valores:
- Adicionada
- Planejada
- Débito
- Análise sobre a issue
- Labels identificadas pelo número 4.
- Possíveis valores:
- Duplicada
- Invalida
- Removida
- Dúvida
- Não será resolvida
Outras labels podem ser adicionadas ao projeto conforme a necessidade que for surgindo;
- Responsável
- Para termos de organização, as issues serão classificadas como planejadas ou adicionadas em cada sprint:
- Issues planejadas: são aquelas previstas no durante o Sprint Planning para desenvolver durante aquela sprint;
- Issues adicionadas: são aquelas que não foram previstas no Sprint Planning, mas foram desenvolvidas naquela sprint devido a alguma justificativa identificada pelo Scrum Master.
Milestones
- As milestones serão aplicadas para identificar cada sprint. Entende-se que cada sprint representa uma entrega significativa de novas funcionalidades, caracterizando-se assim como macros do projeto.
- Toda issue planejada ou adicionada para ser executada durante aquela sprint deve ser mapeada com a milestone referente.
Épicos
- Issues referentes a um mesmo módulo dentro do projeto devem estar associadas a épicos, como forma de mapear melhor o desenvolvimento daquele épico em específico.
- Épicos também podem ser usados para representar issues muito grandes, com alto grau de dificuldade. Assim, quebra-se essas issues complexas em issues menores facilitando o desenvolvimento.
User Stories
- Serão aplicadas na estimativa de tempo para planejamento da sprint;
-
Deverão seguir o seguinte template:
Eu como [usuário do sistema] desejo [ação a ser executada] para [justificativa para a ação].
- Este template deve estar mapeado em uma Issue Template;
- Cada user story deve possuir um conjunto de critérios de aceitação definidos pelo PO, os quais deverão ser verificados antes de afirmar a tarefa como concluída.
Technical Stories
- Techinical Stories devem ser aplicadas quando surgir alguma demanda não funcional durante o andamento do projeto.
- Deverão seguir o mesmo templete definido para as user stories.
Planning Poker
- Deverá ser aplicado para estimar a dificuldade de trabalho do projeto e auxiliar no planejamento das sprints, conforme nota-se a capacidade de produção da equipe;
- Os pontos estimados para uma issue devem estar registrados na mesma por meio do ZenHub;
- Os valores considerados deverão ser: 0, 1, 2, 3, 5, 8, 13 e 21.
- Issues com mais de 13 pontos devem ser transformadas em Épicos e quebradas em issues menores, para facilitar o desenvolvimento do projeto.
MosCow
O backlog deve ser priorizado utilizando o método MosCow, o qual está disposto abaixo:
Must have | Tem que ter |
---|---|
Should have | Deveria ter |
Could have | Pode ter |
Would have | Seria bom ter |
Kanban
O Kanban será aplicado visando monitorar o fluxo de trabalho da equipe.
- O Kanban deverá contar com os quadros Product Backlog, Icebox, Sprint Backlog, Em progresso, Revisão e Terminados;
- É de responsabilidade de cada membro da equipe atualizar o Kanban diariamente com o status de cada atividade;
- O Kanban estará disponível por meio da ferramenta ZenHub.
- Acessar o Kanban.
Técnicas de Gerenciamento
Velocity
- O velocity deve ser medido ao final de cada sprint e utilizado no planejamento da próxima sprint como parâmetro para avaliar a capacidade da equipe de desenvolvimento.
Burndown
- O burndown deve ser aplicado sobre cada sprint com o intuito de monitorar a entrega das atividades planejadas.
- É responsabilidade do Scrum Master acompanhar o gráfico durante a sprint e tomar ações para garantir as entregas ao final da sprint.
- O gráfico de burndown será gerado automaticamente pela ferramenta ZenHub a medida que o KanBan é atualizado pela equipe.
Técnicas de Codificação
Programação em Pares
- Os pares da sprint deverão ser definidos durante o Sprint Planning;
- O Scrum Master é responsável por formar os pares;
- O quadro de conhecimentos deve ser o indicador de maior peso na formação dos pares, sendo que desenvolvedores com mais experiência em determinada área deve parear com quem possui menos conhecimento na mesma.
Integração Contínua
- As branchs
master
edevel
estarão submetidas ao processo de integração contínua, devendo respeitar o mínimo de 90% da cobertura de testes; - Todo pull request realizado para branch
devel
estará sujeito ao processo de integração contínua.
Padrões de Codificação
- O código deve ser formato seguindo os padrões de estilo e técnicas de programação adotadas pela equipe, visando assim garantir a qualidade do código gerado.
Técnicas de Design
Simplicidade
- Ao manusear o código a equipe deve priorizar sempre a solução mais simples que atenda as necessidades do problema.
Refatoração
- Ao manusear o código, sempre que houver dificuldade para compreensão do mesmo a equipe deve se organizar para refatorá-lo.
- A refatoração deve ser realizada antes de fazer qualquer alteração na funcionalidade, visando garantir a integridade do código.