Scrum - Visão Geral

Agile se tornou uma das grandes palavras da moda na indústria de desenvolvimento de software. Mas o que exatamente é desenvolvimento ágil? Simplificando, o desenvolvimento ágil é uma maneira diferente de executar equipes e projetos de desenvolvimento de software.

Para entender o que há de novo, vamos recapitular os métodos tradicionais. No desenvolvimento de software convencional, os requisitos do produto são finalizados antes de prosseguir com o desenvolvimento.

Modelo de Cachoeira

O modelo de desenvolvimento de software mais comumente usado com essa característica é o modelo em cascata, conforme ilustrado no diagrama a seguir. No entanto, na maioria dos casos, novas funcionalidades são adicionadas e também os requisitos anteriores podem mudar. O modelo em cascata não está estruturado para acomodar essas mudanças contínuas nos requisitos. Além disso, o usuário não terá clareza sobre a funcionalidade do produto até que o produto esteja disponível em sua totalidade.

Modelo Incremental Iterativo

No modelo incremental iterativo, o desenvolvimento começa com um número limitado de requisitos finalizados e priorizados. A entrega é um incremento de trabalho do produto. Um conjunto de atividades que variam de requisitos a desenvolvimento de código é chamado de iteração. Com base na funcionalidade do incremento e qualquer um ou todos os novos requisitos modificados e pendentes, o próximo lote de requisitos é fornecido para a iteração subsequente. O resultado da iteração subsequente é um incremento de trabalho aprimorado do produto. Isso é repetido até que o produto atenda às funcionalidades exigidas.

O usuário normalmente não está envolvido no trabalho de desenvolvimento e isso pode causar falhas de comunicação resultando em funcionalidades incorretas. O envolvimento é positivo para a equipe de desenvolvimento, mas exige muito tempo da equipe e pode gerar atrasos. Além disso, quaisquer mudanças informais de requisitos durante uma iteração podem levar à confusão e também criar variações de escopo. Com essa premissa, o desenvolvimento Agile passou a existir.

Desenvolvimento ágil

O desenvolvimento ágil é baseado no desenvolvimento incremental iterativo, no qual os requisitos e soluções evoluem por meio da colaboração da equipe. Ele recomenda uma abordagem iterativa com limite de tempo e incentiva uma resposta rápida e flexível às mudanças. É uma estrutura teórica e não especifica nenhuma prática particular que uma equipe de desenvolvimento deva seguir. Scrum é um framework de processo ágil específico que define as práticas necessárias a serem seguidas.

As primeiras implementações de métodos ágeis incluem Rational Unified Process (1994), Scrum (1995), Crystal Clear, Extreme Programming (1996), Adaptive Software Development, Feature Driven Development (1997) e Dynamic Systems Development Method (DSDM) (1995). Esses agora são chamados coletivamente deagile methodologies, depois que o Manifesto Ágil foi publicado em 2001.

Manifesto Ágil

O Manifesto Ágil foi publicado por uma equipe de desenvolvedores de software em 2001, destacando a importância que deve ser dada à equipe de desenvolvimento, acomodando mudanças de requisitos, envolvimento do cliente.

O Manifesto Ágil é o seguinte:

“Estamos descobrindo melhores maneiras de desenvolver software fazendo isso e ajudando outros a fazerem. Por meio deste trabalho, chegamos a valorizar:

  • Indivíduos e interações sobre processos e ferramentas
  • Software que trabalha sobre uma documentação completa
  • Colaboração do cliente na negociação do contrato
  • Respondendo à mudança seguindo um plano

Ou seja, embora haja valor nos itens da direita, valorizamos mais os itens da esquerda. "

… Manifesto para Desenvolvimento Ágil de Software, Autores: Beck, Kent, et al. (2001)

Definição de itens do Manifesto Agile

Os itens do manifesto à esquerda podem ser descritos da seguinte forma:

Item Manifesto Descrição
Indivíduos e interações É necessário dar importância a:
  • auto-organização e automotivação dos membros da equipe
  • interação contínua para trabalho, esclarecimentos, informações entre os membros da equipe
Software de Trabalho A entrega de software funcional em intervalos de curta duração ajuda a ganhar a confiança do cliente e segurança na equipe.
Colaboração do cliente O envolvimento constante do cliente com a equipe de desenvolvimento garante a comunicação das modificações necessárias.
Respondendo à mudança Foco na resposta rápida às mudanças propostas, o que é possível com iterações de curta duração.

O principal elemento do Manifesto Agile é que devemos confiar nas pessoas e em sua capacidade de colaboração. Por esse motivo, as metodologias ágeis específicas desenvolvidas aproveitam as habilidades dos membros da equipe, enfatizando o trabalho em equipe e a colaboração ao longo do ciclo de vida do projeto.

Princípios Chave do Agile

O Manifesto Ágil é baseado nos seguintes princípios:

Princípio Descrição
Satisfação e Entrega Satisfação do cliente através de software de trabalho inicial e contínuo.
Acolhendo a mudança Aceite as mudanças de requisitos, mesmo em estágios posteriores de desenvolvimento.
Entregar com frequência Entregue software funcional com freqüência (semanalmente em vez de mensal).
A comunicação é a chave Assegure a associação próxima dos desenvolvedores com os empresários diariamente.
Ambiente e confiança Construa projetos em torno de indivíduos motivados. Dê-lhes o apoio necessário e confie neles.
Comunicação cara a cara Incentive a conversa face a face para garantir uma comunicação eficiente e eficaz.
Software como medida de progresso O software funcional é a principal medida de progresso.
Desenvolvimento sustentável Promover o desenvolvimento sustentável com a capacidade de manter um ritmo constante ao longo do desenvolvimento.
Atenção aos detalhes Atenção contínua à excelência técnica e bom design.
O poder de menos Simplicidade é essencial.
Equipes auto-organizadas Atenção regular da equipe em se tornar eficaz em circunstâncias variáveis.

Metodologias ágeis

Metodologia de Desenvolvimento de Sistema Dinâmico (DSDM)

É um framework ágil para projetos de software. Ele foi usado para ajustar as abordagens tradicionais. A versão mais recente do DSDM é chamada DSDM Atern. O nome Atern é uma abreviação de Arctic Tern - uma ave marinha que pode viajar grandes distâncias e que representa muitas características do método que são formas naturais de trabalho, como priorização e colaboração.

Scrum

É a estrutura ágil mais popular, que se concentra principalmente em como gerenciar tarefas em um ambiente de desenvolvimento baseado em equipe. Scrum usa modelo de desenvolvimento iterativo e incremental, com menor duração das iterações. Scrum é relativamente simples de implementar e foca em entregas rápidas e frequentes.

Programação Extrema (XP)

É um tipo de desenvolvimento ágil de software. Ele defende lançamentos frequentes em ciclos de desenvolvimento curtos, com o objetivo de melhorar a produtividade e introduzir pontos de verificação onde novos requisitos do cliente podem ser adotados. A metodologia leva o nome da ideia de que os elementos benéficos das práticas tradicionais de engenharia de software são levados a níveis extremos. (Extreme Programming é uma disciplina de desenvolvimento de software que organiza pessoas para produzir software de alta qualidade de forma mais produtiva.) O XP aborda as fases de análise, desenvolvimento e teste com novas abordagens que fazem uma diferença substancial na qualidade do produto final.

Desenvolvimento orientado a testes (TDD)

É um processo de desenvolvimento de software que se baseia na repetição de um ciclo de desenvolvimento muito curto: primeiro o desenvolvedor escreve um caso de teste automatizado que define uma melhoria desejada ou uma nova função, em seguida, produz a menor quantidade de código para passar no teste, e finalmente traz o novo código para padrões aceitáveis.

Lean

É uma prática de produção que considera o dispêndio de recursos para qualquer objetivo que não seja a criação de valor para o cliente final um desperdício e, portanto, um objetivo a ser eliminado. Trabalhando da perspectiva do cliente que consome um produto ou serviço, o termo valor é definido como qualquer ação ou processo pelo qual um cliente estaria disposto a pagar. Lean é centrado em preservar valor com menos trabalho.

Kanban

É um sistema para melhorar e manter um alto nível de produção. Kanban é um método pelo qual o Just-In-Time (JIT), a estratégia que as organizações empregam para controlar as despesas de estoque, é alcançado. Kanban se tornou uma ferramenta eficaz de suporte à execução de um sistema de produção como um todo e provou ser uma excelente forma de promover melhorias.

Conclusão

Nos últimos 10 anos, há um volume cada vez maior de histórias de sucesso, em que as empresas melhoraram drasticamente o sucesso e o desempenho de suas equipes e projetos de desenvolvimento de TI com práticas ágeis. Isso fez com que o Agile fosse amplamente adotado em uma variedade de setores, incluindo mídia e tecnologia, grandes corporações e até mesmo governo.

O Agile Framework ajuda as equipes a se beneficiarem de:

  • Tempo mais rápido de entrega / mercado
  • Reduza a incerteza e o risco
  • Aumente o retorno sobre o investimento (ROI) focando no valor do cliente

Dentre essas diferentes metodologias ágeis, Scrum provou ser extremamente bem sucedido em todo o mundo nos últimos 20 anos.