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
- A maior prioridade é satisfazer o cliente por meio de entregas continuas;
- Acolha bem os pedidos de alterações no software;
- Entregue software em funcionamento frequentemente;
- Comercial e desenvolvedor trabalham juntos;
- Trabalhe em trono de indivíduos motivados;
- O método mais eficiente de transmitir informações para equipe é uma conversa aberta;
- O software em funcionamento é a principal medida de progresso;
- Os processos ágeis promovem desenvolvimento sustentável;
- Atenção contínua com a excelência técnica;
- Simplicidade;
- Os melhores projetos emergem de equipes auto-organizaveis;
- 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