O que é Agile?
Ágil tem sido a palavra da moda em gerenciamento de projetos por cerca de uma década, e com bons motivos. Ágil é, na verdade, um termo abrangente para várias abordagens de gerenciamento de projetos que são caracterizadas por sua capacidade de permitir que as equipes de projeto respondam às mudanças de requisitos e prioridades usando pacotes de trabalho incrementais. Embora todos os métodos ágeis tenham características comuns, cada método ágil possui processos exclusivos que os diferenciam. Vejamos como cada método é usado com a equipe de Charlie, que está desenvolvendo um novo software de jogo.
Scrum e Lean
Scrum é uma estrutura para desenvolver e sustentar produtos complexos. Vejamos o scrum em ação. A equipe de Charlie está iniciando um ciclo iterativo, denominado sprint, então Charlie analisa o backlog do produto com o cliente. O backlog do produto é essencialmente uma lista de desejos prioritários criada pelo cliente dos recursos de que o novo jogo precisa. Charlie seleciona as principais tarefas para trabalhar naquele sprint, dentro de um prazo de duas a quatro semanas. Essa lista de tarefas é chamada de sprint backlog.
Todos os dias durante o sprint, a equipe de Charlie realiza uma reunião rápida chamada reunião diária para definir o trabalho daquele dia e resolver quaisquer interrupções ou bloqueios de estrada. Quando o trabalho é concluído, Charlie se reúne com o cliente para entregar o produto, revisar a lista de pendências do produto e priorizar os requisitos. A equipe de Charlie continua trabalhando em sprints até que todo o jogo seja construído.
Agora, vamos olhar para o lean. O Lean começou no movimento de manufatura enxuta da Toyota. Agora adaptado ao gerenciamento de projetos, o lean foca na eliminação de desperdícios e na entrega de valor ao cliente. Vejamos como a equipe de Charlie usaria o lean para desenvolver um novo jogo de software.
Primeiro, a equipe de Charlie divide o projeto geral em iterações que entregarão partes funcionais do jogo. Para cada iteração, a equipe de Charlie mapeia o processo que usará. A equipe examina o processo e elimina desperdícios, removendo etapas desnecessárias e reduzindo atrasos.
A equipe usa o processo aprimorado para concluir a iteração. No final de cada iteração, a equipe verifica se o processo de projeto aprimorado funcionou melhor e inicia a próxima iteração usando as mudanças bem-sucedidas. Este ciclo de planejar-fazer-verificar-agir continua, aumentando a eficiência do projeto até que o jogo final seja entregue.
Extreme Programming (XP) e Crystal
Extreme Programming , ou XP , é uma abordagem específica para o desenvolvimento de software que aumenta a velocidade de lançamento do produto a cada uma ou três semanas. O XP é único entre outros métodos de desenvolvimento de software porque especifica práticas de engenharia. Vamos ver como a equipe de Charlie pode usar o XP para desenvolver o novo jogo.
A equipe de Charlie começa a reunir requisitos para o novo jogo fazendo com que o cliente descreva os recursos em pequenas histórias de usuário. Charlie combina todas as histórias de usuários para desenvolver um plano de lançamento para o jogo inteiro.
Para entregar iterações de trabalho do software, Charlie desenvolve um plano de iteração. Ele divide o plano de liberação em objetivos que podem ser concluídos em uma a três semanas. Os desenvolvedores de software escrevem o plano de teste para cada iteração como uma atividade de planejamento final.
A equipe começa a codificar o software, usando pares de desenvolvedores em um único computador para trabalhar juntos. O velho ditado ‘duas cabeças pensam melhor do que uma’ é verdadeiro aqui. Dois programadores trabalhando juntos produzem um software de qualidade superior da primeira vez. O código é enviado para teste de unidade, novamente usando programação emparelhada. Durante a iteração, a equipe realiza uma reunião diária para garantir que não haja obstáculos para a conclusão das tarefas do dia.
Depois que o código é escrito e testado, o software é liberado para o cliente para teste de aceitação. As histórias do usuário são revisadas e priorizadas, e a equipe do projeto começa o próximo plano de iteração. A equipe continua trabalhando em todas as iterações até que o software final seja entregue.
Agora, vamos aprender sobre o cristal. O Crystal não é um método único, mas uma família de metodologias que se concentra na entrega frequente. No entanto, o Crystal evita processos sempre que possível e depende de contribuições individuais para garantir o sucesso do projeto. Vamos dar uma olhada em como o cristal pode ser usado com o mesmo projeto de software de jogo.
A empresa de Charlie tem processos extensos e ele acha que eles estão atrapalhando o sucesso do projeto. Ele decide tentar uma nova abordagem. Ao desenvolver o jogo, Charlie usará apenas processos que agreguem valor ao projeto.
Roubando uma página do scrum, Charlie realiza uma reunião diária em vez de uma reunião semanal típica de sua empresa. Na reunião diária, Charlie garante que a equipe esteja ciente das mudanças no projeto e resolva obstáculos para concluir as tarefas. Na metade do projeto, a equipe descobre que as reuniões diárias são muito frequentes, então Charlie reduz a frequência das reuniões.
Método de Desenvolvimento de Sistemas Dinâmicos
O método de desenvolvimento de sistemas dinâmicos (DSDM) usa uma abordagem em fases para dividir um projeto em partes menores que podem ser entregues em ciclos iterativos. Vamos dar uma olhada no DSDM com o novo projeto de software de jogo.
Charlie está envolvido neste esforço desde a fase de pré-projeto. Ele ajudou a empresa a identificar o projeto, obter financiamento e garantir o comprometimento da liderança.
Durante as próximas duas fases, o estudo de viabilidade e o estudo de negócios, a equipe de Charlie determina se o projeto pode ser executado e reúne os requisitos das partes interessadas, do departamento de desenvolvimento e de uma amostra dos jogadores.
As próximas três fases são a execução do projeto, que é feita em iterações para desenvolver peças de trabalho do jogo. A equipe constrói vários modelos funcionais que atendem a diferentes requisitos e, em seguida, os integra a um design de jogo funcional e começa a implementação. A equipe continua trabalhando em iterações até que o jogo esteja totalmente construído.
A fase final do projeto é a fase de pós-projeto. A equipe garante que o jogo funciona corretamente, corrige quaisquer bugs de software e obtém a aceitação final.
Desenvolvimento Orientado a Recursos (FDD)
O desenvolvimento orientado a recursos (FDD) é outro método ágil de desenvolvimento de software de abordagem em fases. O FDD usa uma abordagem mais tradicional no início do projeto, em seguida, uma abordagem iterativa para desenvolver os requisitos, chamados recursos. Vamos ver o FDD em ação com a equipe de Charlie.
Charlie começa desenvolvendo um modelo geral para estabelecer o escopo. Em seguida, a equipe constrói uma lista de recursos, uma lista extensa de todos os recursos que o jogo terá. Finalmente, a equipe de Charlie cria um plano de desenvolvimento que estabelece os recursos do pedido que serão desenvolvidos e testados.
A próxima fase de um projeto FDD é o design, construção e teste iterativos dos recursos em prazos de duas semanas. A iteração é fornecida ao cliente, que fornece feedback que é adicionado à lista de recursos. Este ciclo iterativo é repetido até que todo o jogo seja desenvolvido.
Resumo da lição
Agile é um termo abrangente para várias abordagens de gerenciamento de projetos caracterizadas pelo uso de pacotes de trabalho incrementais. O Agile inclui scrum, lean, extreme programming (XP), cristal, método de desenvolvimento de sistemas dinâmicos (DSDM) e desenvolvimento orientado a recursos.