O manifesto estabelece um conjunto de valores que são adotados nos projetos ágeis:
Indivíduos e interações ao invés de processos e ferramentas
Software funcionando ao invés de documentação abrangente
Colaboração com o cliente ao invés de negociação de contratos
Responder a mudanças ao invés de seguir um plano
Iterativo e Incremental
Visão geral quanto ao tempo
Releases
Levam meses, são compostas de iterações
Iterações
São periodos de poucas semanas(tipicamente, de 1 a 4 semanas), são compostas de tarefas
Tarefas
São atividades basicas, devem durar idealmente 1 dia de trabalho, mas normalmente duram mais
Visão geral quanto ao tempo
Releases
Releases
Refletir sobre o problemas, identificar e/ou propor soluções
Cliente e equipe se reúnem para definir os temas
Cliente controla o escopo, decidindo o que fazer ou adiar
Normalmente, 3 meses
Iterações
Incremento projetado, programado, testado e entregue
Ponto de avaliação, re-avaliação, feedback, interação com a satisfação do cliente e mudanças
Esse codigo vai ser aprimorado nas proximas iterações, mas é codigo funcional
No inicio, Jogo do planejamento
No final, o cliente tem a oportunidade de utilizar e avaliar o que foi produzido
Normalmente, 1 semana
Final da Iteração
Testes de aceitação
Entrega de software para o cliente
Cliente tem oportunidade de testar e avaliar
Com base nos resultados, reúne-se novamente com a equipe e estabelece novas prioridades de acordo com o que acabou de aprender com o software e com aquilo que já imaginava ser necessário produzir ao longo do restante do projeto
Tarefas
Compomente basico
É a implementação de uma User story pelo par de programadores
Testes!
Executada de acordo com os valores e Práticas do XP
Exemplo de ciclo
Valores
São o conjunto de valores que a equipe deve seguir, praticar e se comportar em grupo para usar o XP
Comunicação
Simplicidade
Feedback
Coragem
Respeito
Comunicação
Simplicidade
Tanto os clientes e desenvolvedores não sabem sobre as funcionalidades futuras
Concentrar-se em fazer bem feito as funcionalidades prioritarias da iteração atual
Desenvolvimento é uma tarefa complexa, melhor seguir um metodo menos complexo que a tarefa
Feedback
Coragem
Respeito
Práticas do XP
Cliente Presente
Jogo do Planejamento
Stand Up Meeting
Programação em Pares
Código Coletivo
Código Padronizado
Design Simples
Desenvolvimento Orientado a Testes
Refatoração
Releases Curtos
Metáfora
Ritmo Sustentável
Cliente Presente
Parte da equipe
Controla as tarefas de cada release baseadas no valor de negócio
Feedback imediato
Jogo do Planejamento
Mais importante primeiro
Necessidades concretas
Software funcionando em primeiro lugar
Jogo do Planejamento
O Cliente
Define as histórias(User Story)
Decide qual o valor de negócio de cada história
Decide que histórias serão construídas no release
Os Programadores
Estimam quanto tempo será necessário para construir cada história, com base em experiencias passadas
Advertem o cliente sobre riscos técnicos significativos
Medem o progresso da equipe para fornecer um orçamento geral para o cliente
Standup Meeting
Resumir o que todos fizeram
Definir a atividade do dia
Programação em Par
Menos erros
Força o uso dos padrões
Melhores soluções
Evita "ilhas de conhecimento"
Código Coletivo
Todos têm acesso a tudo
Ninguém é "dono do código"
Revezamento de pares
Código Padronizado
Fácil de entender
Fácil de modificar
Pressão do par
Design Simples
Desejos do usuário:
Fazer a coisa certa
Funcionar
Fácil de usar
Possa ser modificado
Revisão durante as iterações
Não tenta prever o futuro
Menos complexidade
Desenvolvimento Orientado a Testes
Defeitos custam caro
Testes são feitos antes da imprelentação
Testes são rodados sempre que o código é modificado
Quanto mais cedo um erro é identificado, melhor
Precisa sempre passar no teste de aceitação
Resolver, depois limpar
Refatoração
Mudanças deterioram o projeto
Evitar código duplicado
Objetivo:
Simplicidade
Clareza
Adequação ao objetivo
Ausência de repetição
Ausência de funcionalidades extras (ex: que foram removidas)
Releases Curtos
Maior retorno do investimento no início
Bom para o cliente (melhores tomadas de decisões)
Bom para os desenvolvedores (verificam se o desejo do cliente realmente é atendido)