Metodologia
1. Introdução
Este documento tem como objetivo explanar os métodos utilizados pela equipe durante o desenvolvimento do projeto e documentar informações e decisões relevantes à metodologia ao longo de seu desenvolvimento.
2. Métodos ágeis
Os métodos ágeis são projetados para produzir software útil rapidamente. Eles são baseados no desenvolvimento incremental. Os incrementos são pequenos e uma nova versão do sistema geralmente é criada e fornecida aos clientes a cada duas ou três semanas, para que seja possível obter um feedback rapidamente sobre as mudanças nos requisitos. Além disso, esses métodos minimizam a documentação usando comunicação informal no lugar de reuniões formais com documentos escritos.
Os métodos ágeis consideram o design e a implementação como atividades centrais no processo de software. Eles incorporam outras tarefas a essas atividades, como a elicitação dos requisitos e os testes. Apesar de existirem diversos processos ágeis, todos compartilham um conjunto de princípios com base no manifesto ágil e foi descrito por Sommerville, Ian (2019, p. 61) [1]:
Princípio | Descrição |
---|---|
Envolvimento do Cliente | Os clientes devem ser envolvidos em todo o processo de desenvolvimento. Seu papel é fornecer e priorizar novos requisitos de sistema e avaliar as iterações do sistema. |
Acolher as mudanças | Tenha em mente que os requisitos do sistema mudam e, portanto, deve-se projetar o sistema para acomodar essas mudanças. |
Entrega incremental | O software é desenvolvido em incrementos e o cliente especifica os requisitos incluídos em cada um deles. |
Manter a simplicidade | Deve-se ter como foco a simplicidade, tanto do software que está sendo desenvolvido quanto do processo de desenvolvimento. Sempre que possível, trabalhe ativamente para eliminar a complexidade do sistema. |
Pessoas, não processos | As habilidades do time de desenvolvimento devem ser reconhecidas e aproveitadas da melhor maneira possível. Seus membros devem ter liberdade para desenvolver seu modo próprio de trabalhar sem se prender a processos determinados. |
3. Extreme Programming (XP)
Extreme Programming, mais conhecido como XP, é uma metodologia ágil de desenvolvimento de software que tem como objetivo produzir software de alta qualidade e, também, melhor qualidade de vida para a equipe de desenvolvimento. A metodologia XP capacita seus desenvolvedores a lidarem com confiança às mudanças nos requisitos do cliente, mesmo no final do ciclo de vida. Além disso, Don Wells (1999) [3] diz que a XP é configurada para pequenos grupos de programadores. A equipe XP inclui não apenas os desenvolvedores, mas também os gerentes e clientes, todos trabalhando juntos.
Os requisitos se baseiam em histórias simples dos clientes (histórias de usuário) e são utilizados como base para decidir qual funcionalidade deve ser incluída em um determinado incremento. Os programadores trabalham em pares (pair programming) e desenvolvem testes para cada tarefa antes de escreverem o código. Todos os testes devem ser executados com sucesso quando o novo código é integrado ao sistema, já que há um curto intervalo de tempo entre as releases do sistema.
No decorrer do projeto, o time utilizará algumas práticas do Extreme Programming (XP). Duas dessas práticas serão a Programação em Pares e a utilização de Histórias de Usuário.
Além disso, também adotaremos os valores de Feedback e Comunicação.
Através do princípio da Comunicação, todos os membros da equipe serão considerados parte integrante do time e deverão manter uma comunicação frequente. Trabalharemos juntos em todas as etapas do projeto, desde a definição dos requisitos até a codificação, buscando encontrar a melhor solução para o problema. O Feedback contínuo será valorizado, permitindo que a equipe mantenha o foco e o desenvolvimento siga na direção correta.
Durante o desenvolvimento do projeto, adaptaremos as práticas e valores do Extreme Programming conforme as necessidades identificadas.
4. Scrum
Scrum é um método ágil, iterativo e incremental para gerenciamento de projetos, que não necessariamente precisam ser projetos de desenvolvimento de software. Dentre os métodos ágeis, Scrum é o mais conhecido e usado. Por meio da organização das tarefas e prioridades que o Scrum estabelece, passa a ser possível garantir o cumprimento de prazos e um maior foco nas diretrizes estabelecidas pelo planejamento. Sabendo quais são as atividades que possuem mais importância, as equipes consegue organizar melhor o fluxo de uma para a outra.
O Scrum utiliza o product backlog que é um registro que contém as áreas do produto que devem ser desenvolvidas. De acordo com a prioridade de cada produto, cria-se uma lista de tarefas de liberação a partir da lista de tarefas de produtos, que é o ponto de conexão para que as necessidades da lista de tarefas de produtos sejam processadas. Publicar uma tarefa é um ponto na criação de uma tarefa do sprint e representa o período de tempo para a conclusão de uma tarefa (chamada de história de usuário).
4.1 Sprint
A sprint é a unidade fundamental de desenvolvimento Scrum. Ela consiste em um período de tempo fixo e curto, no qual um incremento do produto é entregue. Após a conclusão de uma sprint, a próxima deve começar imediatamente.
Durante uma sprint, nenhuma alteração deve ser feita que comprometa as metas estabelecidas. A qualidade do produto não deve ser prejudicada, e o backlog do produto pode ser refinado conforme necessário. Além disso, o escopo pode ser esclarecido e renegociado à medida que a equipe aprende mais ao longo da sprint.
Dentro de uma sprint, a equipe realizá eventos importantes, como o Sprint Planning, o Daily Scrum e o Sprint Review.
O Sprint Planning é o evento que inicia e estabelece o trabalho a ser realizado durante a sprint. A equipe Scrum colaborativamente cria um plano de trabalho para a sprint.
O Daily Scrum tem como objetivo inspecionar o progresso da sprint e adaptar o backlog da sprint conforme necessário. É uma reunião diária em que a equipe discute o trabalho realizado, os desafios encontrados e planeja as próximas atividades.
O Sprint Review é o evento em que a equipe inspeciona os resultados da sprint e determina adaptações futuras. Nesse evento, o Scrum Team apresenta o trabalho concluído aos stakeholders e discute o progresso em relação à meta do produto.
Ao longo do desenvolvimento do projeto, a equipe adotará os conceitos e componentes do Scrum de acordo com as necessidades identificadas, buscando aproveitar os benefícios desse metodologia ágil.
5. Lean Inception
A Lean Inception, desenvolvida por Paulo Caroli, é uma técnica utilizada para alinhar a equipe em relação à construção de um MVP (Minimum Viable Product - Produto Mínimo Viável). Essa técnica envolve a realização de um workshop composto por 9 etapas que facilitam o entendimento das necessidades de um produto bem-sucedido.
No contexto deste projeto, a Lean Inception foi aplicada com o objetivo de alinhar rapidamente os membros da equipe em relação ao produto em desenvolvimento.
A aplicação detalhada da Lean Inception encontra-se no Documento de Visão do Produto.
6. Referência
[1] Sommerville, Ian. Engenharia de software. 10. ed. São Paulo: Pearson Addison Wesley, 2019.
[2] Foggetti, Cristiano. Gestão ágil de projetos. São Paulo: Education do Brasil, 2014.
[3] Wells, Don. Extreme Programming: A gentle introduction. Extreme Programming, 1999. Disponível em: http://www.extremeprogramming.org/
[4] Metodologias ágeis: o que é Pair Programming?. Programadores Brasil, 2020. Disponível em: https://programadoresbrasil.com.br/2020/04/o-que-e-pair-programming/
[5] Metodologia Ágil: O que é Kanban. Programadores Brasil, 2020. Disponível em: https://programadoresbrasil.com.br/2020/02/o-que-e-scrum-metodologia-agil/
[6] Extreme Programming. Agile Alliance. Disponível em: https://programadoresbrasil.com.br/2020/02/o-que-e-scrum-metodologia-agil/
[7] Metodologia Ágil: O que é Scrum. Programadores Brasil, 2020. Disponível em: https://programadoresbrasil.com.br/2020/02/o-que-e-scrum-metodologia-agil/
[8] Ken, SCHWABER; SUTHERLAND, Jeff. The Scrum Guide. Scrum Guides. Disponível em: https://scrumguides.org/docs/scrumguide/v2020/2020-Scrum-Guide-US.pdf#zoom=100
[9] The Rules of Extreme Programming. Extreme Programming. Disponível em: http://www.extremeprogramming.org/rules.html.
7. Histórico de Revisão
Data | Versão | Modificação | Autor |
---|---|---|---|
27/05/2023 | 0.1 | Abertura do documento. | Juliana Valle |