Programação extrema vs SCRUM | XP vs SCRUM
Ao longo dos anos, houve várias metodologias diferentes de desenvolvimento de software usadas na indústria de software, como o método de desenvolvimento Waterfall, V-Model, RUP e alguns outros métodos lineares, iterativos e linear-iterativos combinados. O modelo ágil (ou, mais corretamente, um grupo de metodologias) é um modelo de desenvolvimento de software mais recente introduzido pelo manifesto Agile para solucionar as deficiências encontradas nessas metodologias tradicionais de desenvolvimento de software.
Os métodos ágeis são baseados no desenvolvimento iterativo e usam o feedback dos usuários como o principal mecanismo de controle. O Agile pode ser chamado de abordagem centrada nas pessoas do que os métodos tradicionais. O modelo Agile entrega uma versão de trabalho do produto muito cedo, dividindo o sistema em sub-partes muito pequenas e gerenciáveis, para que o cliente possa obter alguns dos benefícios logo no início. O tempo do ciclo de teste do Agile é relativamente curto comparado aos métodos tradicionais, porque o teste é feito paralelamente ao desenvolvimento. Devido a todas essas vantagens, os métodos ágeis são preferidos às metodologias tradicionais no momento. A programação Scrum e Extreme são duas das variações mais populares dos métodos Agile.
O que é SCRUM?
Como mencionado acima, o SCRUM é um processo de gerenciamento de projetos incremental e iterativo, que pertence à família de métodos Agile. O SCRUM baseia-se em dar alta prioridade à participação do cliente no início do ciclo de desenvolvimento. Ele recomenda incorporar os testes pelo cliente o mais cedo e com maior frequência possível. O teste é realizado em cada momento em que uma versão estável se torna disponível. A base do SCRUM baseia-se no início dos testes desde o início do projeto e na continuidade até o final do projeto..
O principal valor do SCRUM é “a qualidade é responsabilidade da equipe”, que enfatiza que a qualidade do software é de responsabilidade de toda a equipe (não apenas da equipe de teste). Um outro aspecto importante do SCRUM é decompor o software em partes menores gerenciáveis e entregá-las ao cliente muito rapidamente. Entregar um produto de trabalho é de extrema importância. Em seguida, a equipe continua aprimorando o software e fornecendo continuamente a cada passo principal. Isso é obtido com ciclos de liberação muito curtos (chamados de sprints) e obtendo feedback para melhorias no final de cada ciclo.
O SCRUM define várias funções importantes para o bom funcionamento de uma equipe de desenvolvimento. Eles são o proprietário do produto (que representa o cliente e mantém o backlog do produto), o Scrum master (que atua como organizador e coordenador da equipe, conduzindo reuniões do scrum, mantendo o backlog do sprint e queimando gráficos) e outros membros da equipe. Uma equipe pode consistir em funções tradicionais, mas principalmente são equipes de autogerenciamento. Os principais artefatos do Scrum são backlog do produto / backlog de liberação (lista de desejos), backlogs da Sprint / backlogs de defeitos (tarefas em cada iteração), gráficos de queima (trabalho restante versus data). As principais cerimônias do SCRUM são: reunião de backlog do produto, reunião da Sprint e reunião do Retrospect.
O que é programação extrema?
Extreme Programming (XP abreviado) é uma metodologia de desenvolvimento de software que pertence ao modelo Agile. A programação extrema realiza fases em etapas contínuas muito pequenas (comparadas aos métodos tradicionais). O primeiro passe, que leva apenas um dia ou uma semana, é intencionalmente incompleto. Para fornecer objetivos concretos para o desenvolvimento do software, testes automatizados são escritos no início. Em seguida, os desenvolvedores fazem a codificação. O foco está em fazer a programação em pares. Depois que todos os testes passam, a codificação é considerada completa. A próxima fase é design e arquitetura, que trata da refatoração do código pelo mesmo conjunto de programadores. No final desta fase, um produto incompleto (mas funcional) é apresentado às partes interessadas. Logo depois disso, a próxima fase (que se concentra no próximo conjunto de recursos mais importantes) começa.
Qual é a diferença entre Extreme Programming e SCRUM?
Programação Extrema e SCRUM são metodologias compreensivelmente muito semelhantes e alinhadas. No entanto, existem diferenças sutis, mas importantes, entre esses dois métodos. Os sprints do SCRUM duram de 2 a 4 semanas, enquanto as iterações típicas do XP são mais curtas (últimas 1-2 semanas). Geralmente, as equipes do SCRUM não permitem alterações nos sprints, mas as equipes do XP são um pouco mais flexíveis às alterações nas iterações. Por exemplo, após o planejamento do sprint, o conjunto de itens desse sprint permanece inalterado, mas um recurso que ainda não começou a trabalhar pode ser trocado a qualquer momento por outro recurso no XP. Outra diferença entre o XP e o SCRUM é que, a ordem dos recursos desenvolvidos no XP é estritamente priorizada pelo cliente, enquanto a equipe do SCRUM decide a ordem dos itens (depois que o backlog do produto é priorizado pelo proprietário do produto do SCRUM).
Ao contrário do XP, o SCRUM não estabelece práticas de engenharia. Por exemplo, o XP é orientado por práticas como desenvolvimento orientado a teste (TDD), programação em pares, refatoração, etc. No entanto, alguns acreditam que exigir um conjunto de práticas para equipes auto-organizadas pode ter um impacto negativo, e isso pode ser considerado uma falha do XP. Outra falha da programação Extreme é que equipes inexperientes tendem a se refatorar sem testes automatizados ou TDD (ou simplesmente hacking). Portanto, alguns sugerem que o SCRUM é melhor para começar (pois traz grandes melhorias simplesmente por meio de iterações focadas em timebox) e o XP é adequado para equipes um pouco maduras que descobriram o valor das práticas mencionadas acima (em vez de usá-las porque foram solicitadas) para fazer isso).