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:
|
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.