Manifesto do Desenvolvimento de Software Ágil

  • Indivíduos e interação acima de processos e ferramentas;
  • Software em funcionamento acima de documentação abrangente;
  • Colaboração com o cliente acima de negociação de contratos;
  • Responder a mudanças acima de seguir um plano.

Agile é rápido nas mudanças e eficaz na comunicação com os envolvidos, faz entregas incrementais.
Segundo o gráfico, com agilidade a curva do custo a mudança é diminuido.

Princípios da Agilidade

  1. A maior prioridade é satisfazer o cliente por meio de entregas continuas;
  2. Acolha bem os pedidos de alterações no software;
  3. Entregue software em funcionamento frequentemente;
  4. Comercial e desenvolvedor trabalham juntos;
  5. Trabalhe em trono de indivíduos motivados;
  6. O método mais eficiente de transmitir informações para equipe é uma conversa aberta;
  7. O software em funcionamento é a principal medida de progresso;
  8. Os processos ágeis promovem desenvolvimento sustentável;
  9. Atenção contínua com a excelência técnica;
  10. Simplicidade;
  11. Os melhores projetos emergem de equipes auto-organizaveis;
  12. Regularmente a equipe faz uma auto-avaliação para ver como se tornar mais eficiente.

Fatores Humanos

  • Competência
  • Foco comum
  • Colaboração
  • Habilidade na tomada de decisão
  • Habilidade de solução de problemas confusos
  • Confiança mútua e respeito
  • Auto-organização

Extreme Programming (XP) (Kent Beck)

Valores Básicos

  • Comunicação (tanto com o cliente quanto o time)
  • Simplicidade (fazer somente o necessário)
  • Feedback (deve ser constante)
  • Coragem (ou disciplina)
  • Respeito (pelo software e pela equipe)

Processo Ágil: XP

  • Planejamento

  • Começa com a criação das histórias dos usuários

  • Equipe avalia e estima o custo das histórias
  • Histórias são agrupadas em um incremento de software
  • Define-se uma data de entrega do incremento
  • O primeiro é referência para acelerar os demais incrementos

  • Desenho (Design)

  • Princípio KISS

  • Uso de cartões CRC
  • Grandes problemas são resolvidos com prototipação
  • Encoraja a refatoração
  • Recomenda os testes unitários antes de codificar
  • Encoraja a programação em par

  • Teste

  • Todos os testes unitários são executados diariamente

  • Testes de avaliação são definidos pelo cliente

Processo Ágil: Desenvolvimento de software adaptativo

  • Planejamento dirigindo a missão
  • Foco no desenvolvimento baseado em componentes
  • Uso de time-boxing (só trata um certo número de requisitos por vez)
  • Consideração explicita de riscos
  • Ênfase na colaboração para entendimento dos requisitos
  • Ênfase na “aprendizagem” durante o processo

Processo Ágil: Método Dinâmico de Desenvolvimento de Sistemas (DSDM)

  • Promovido pelo consórcio DSDM
  • Similar ao XP e ASD em muitos aspectos

Processo Ágil: SCRUM

  • O trabalho do desenvolvimento é dividido em pacotes;
  • Testes e documentação são realizados e construídos a medida que o produto é construído
  • O trabalho ocorre em “sprints” derivados de um “backlog” de requisitos
  • As reuniões são curtas
  • “Demos” são entregues ao cliente no “time-box” alocado

Processo Ágil: Modelagem Ágil

  • Modelagem com um propósito
  • Uso de múltiplos modelos
  • Facilidade de manutenção dos modelos
  • Conteúdo é mais importante que a representação
  • Conhecimento de modelos e ferramentas para criá-los
  • Adaptações da abordagem de modelagem às características da equipe

Processo Ágil: Crystal

  • Permite adaptabilidade baseada nas características do problema
  • Ênfase na comunicação face a face
  • Sugere-se o uso de workshops de reflexão para revisão da forma de trabalho da equipe

Processo Ágil: Feature Driven Development (FDD)

  • Ênfase na definição de características (feauture)

  • Uma feature é uma “função” valorizada pelo cliente que pode ser implementada em duas semanas ou menos

  • Usa um template para criar uma lista de features e então, iniciar o planejamento

  • O design é a construção do FDD

Processo Ágil: Agile Unified Process (AUP)

  • Adota uma filosofia:

  • Serial para o que é amplo

  • Iterativa para o que é particular

  • Atividades

  • Modelagem

  • Implementação
  • Teste
  • Aplicação
  • Configuração e genreciamento de projeto
  • Gerenciamento do ambiente