Tutorial SCRUM – Parte 1

Scrum

Agile tornou-se uma das grandes palavras de ordem na indústria de desenvolvimento de software. Mas o que exatamente é um desenvolvimento ágil? Em poucas palavras, o desenvolvimento ágil é uma maneira diferente e rápida de executar equipes e projetos de desenvolvimento de software.

Para explicar mais claramente, vamos começar falando dos métodos tradicionais.

Modelo em Cascata

O modelo de desenvolvimento de software mais comumente usado com essa característica é o Modelo Cascata, conforme visto no diagrama a seguir. No entanto, na maioria dos casos, novas funcionalidades são adicionadas e também os requisitos anteriores podem ser alterados. O modelo cascata (Waterfall) 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 Cascata

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 vão desde os requisitos até o desenvolvimento do código é chamado de iteração. Com base na funcionalidade do incremento e em algum ou todos os novos requisitos pendentes modificados, o próximo lote de requisitos é fornecido à iteração subsequente. O resultado da iteração subseqüente é um incremento de trabalho aprimorado do produto. Isso é repetido até que o produto atinja as funcionalidades necessárias.

Fluxo Incremental

O usuário geralmente não está envolvido no trabalho de desenvolvimento e pode causar falhas na comunicação, resultando em funcionalidades incorretas. O envolvimento é positivo para a equipe de desenvolvimento, mas é exigente quanto ao tempo da equipe e pode adicionar atrasos. Além disso, qualquer alteração informal de requisitos durante uma iteração pode causar confusão e também criar criações de escopo. Esta é uma das premissas do desenvolvimento ágil.

Desenvolvimento Ágil

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

Implementações iniciais de métodos ágeis incluem Rational Unified Process (1994), Scrum (1995), Crystal Clear, Extreme Programming (1996), Adaptive Software Development, Feature Driven Development (1997), and Dynamic Systems Development Method (DSDM) (1995). Todas passaram a ser classificadas como metodologias ágeis, após o Manifesto Ágil ter sido 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 requisitos variáveis e envolvimento do cliente.

Resumindo, o Manifesto Ágil é descrito na seguinte frase:

“Estamos descobrindo maneiras melhores de desenvolver software fazendo isso e ajudando outros a fazer o mesmo. Através deste trabalho, passamos a valorizar:
– Indivíduos e interações sobre processos e ferramentas;
– Software que trabalha sobre uma documentação completa;
– Colaboração do cliente sobre negociação de contrato;
– Respondendo para mudar depois de um plano.
Ou seja, enquanto houver valor nos itens à direita, valorizamos mais os itens à esquerda.”

…Manifesto for Agile Software Development, Authors: Beck, Kent, et al. (2001)

Detalhamento do Manifesto Ágil

Indivíduos e Interações

Importância deve ser dada a:

  • auto-organização e auto-motivação dos membros da equipe
  • interação contínua para o trabalho, esclarecimentos, informações entre os membros da equipe

Working Software

A entrega de Working Software em intervalos de curta duração ajuda a obter a confiança e a segurança do cliente na equipe.

Colaboração Com o Cliente

O envolvimento constante do cliente com a equipe de desenvolvimento garante a comunicação das modificações necessárias.

Resposta a Mudança

Concentre-se na resposta rápida às mudanças propostas, o que é possível com iterações de curta duração.

O elemento chave do Manifesto Ágil é que devemos confiar nas pessoas e em sua capacidade de colaborar. Por esse motivo, as metodologias ágeis específicas desenvolvidas exploram 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-chaves do Agile

O Manifesto Ágil baseia-se nos seguintes princípios:

Satisfação e Entrega

Satisfação do cliente através de um software de trabalho inicial e contínuo.

Acolhendo a Mudança

Receptivo aos requisitos de mudanças, mesmo em fases posteriores de desenvolvimento.

Entregar com Frequência

Entregue Working Software com frequência (semanal em vez de mensal).

A comunicação é a Chave

Garanta uma associação próxima de desenvolvedores com pessoas de negócios diariamente.

Meio 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

Encoraje conversas face-a-face para garantir uma comunicação eficiente e eficaz.

Software Como Medida de Progresso

O software de trabalho é 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)

É uma estrutura ágil para projetos de software. Foi usado para ajustar as abordagens tradicionais. A versão mais recente do DSDM é chamada de DSDM Atern. O nome Atern é uma abreviatura de Arctic Tern – uma ave marinha que pode percorrer grandes distâncias, representando muitas das características do método, que são formas naturais de trabalho, como a priorização e a colaboração.

Scrum

É o framework ágil mais popular, que se concentra particularmente em como gerenciar tarefas dentro de um ambiente de desenvolvimento baseado em equipe. O Scrum usa o modelo de desenvolvimento iterativo e incremental, com duração mais curta de iterações. O Scrum é relativamente simples de implementar e se concentra em entregas rápidas e frequentes.

Programação Extrema (XP)

É um tipo de desenvolvimento de software ágil. Ele defende lançamentos freqüentes em ciclos de desenvolvimento curtos, que se destinam a 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 as pessoas para produzir software de alta qualidade de forma mais produtiva.) O XP aborda as fases de análise, desenvolvimento e teste com abordagens inovadoras que fazem uma diferença substancial na qualidade do produto final.

Desenvolvimento Orientado a Testes (TDD)

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

Lean

É uma prática de produção que considera o gasto de recursos para qualquer objetivo que não seja a criação de valor para o cliente final como um desperdício e, portanto, um alvo para a eliminação. 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. O lean está centrado na preservação de valor com menos trabalho.

Kanban

É um sistema para melhorar e manter um alto nível de produção. Kanban é um método através do qual Just-In-Time (JIT), a estratégia que as organizações empregam para controlar as despesas de inventário, é alcançada. O Kanban tornou-se uma ferramenta eficaz de suporte ao funcionamento de um sistema de produção como um todo e provou ser uma excelente maneira de promover melhorias.

Conclusão

Nos últimos 10 anos, houve um incremento substancial de cases 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 vários setores, incluindo mídia e tecnologia, grandes corporações e até mesmo governos.

O Agile Framework ajuda as equipes a se beneficiarem de:

  • Tempo mais rápido para entregar / comercializar
  • Reduzir Incerteza e Risco
  • Aumentar o retorno do investimento (ROI), concentrando-se no valor do cliente

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

Nos próximos posts detalharemos o framework Scrum.

*** A OctalMind é uma empresa especializada no desenvolvimento de sistemas de alta tecnologia.