030 – Desenvolvimento ÁGIL de Software
Playlist do Curso de Padrão de Projeto de Software (Design Patterns)
Desenvolvimento Ágil de Software (em inglês: Agile software development) ou Método ágil é uma expressão que define um conjunto de metodologias utilizadas no desenvolvimento de software. As metodologias que fazem parte do conceito de desenvolvimento ágil, tal como qualquer metodologia de software, providencia uma estrutura conceitual para conduzir projetos de engenharia de software.
Existem inúmeros frameworks de processos para desenvolvimento de software. A maioria dos métodos ágeis tenta minimizar o risco pelo desenvolvimento do software em curtos períodos, chamados de iteração, os quais gastam tipicamente menos de uma semana a até quatro. Cada iteração é como um projeto de software em miniatura de seu próprio, e inclui todas as tarefas necessárias para implantar o mini-incremento da nova funcionalidade: planejamento, análise de requisitos, projeto, codificação, teste e documentação. Enquanto em um processo convencional, cada iteração não está necessariamente focada em adicionar um novo conjunto significativo de funcionalidades, um projeto de software ágil busca a capacidade de implantar uma nova versão do software ao fim de cada iteração, etapa a qual a equipe responsável reavalia as prioridades do projeto.
Métodos ágeis enfatizam comunicações em tempo real, preferencialmente cara a cara, a documentos escritos.
Métodos ágeis também enfatizam o software funcional como uma medida primária de progresso. Combinado com a comunicação cara-a-cara, métodos ágeis produzem pouca documentação em relação a outros métodos, sendo este um dos pontos que podem ser considerados negativos, mas reduzindo o tempo de produção de documentação mais útil.
Os métodos ágeis iniciais—criado a priore em 2000— incluíam Scrum (1986), Crystal Clear, Programação extrema (1996), Adaptive Software Development, Feature Driven Development, and Dynamic Systems Development Method (1995).
O Manifesto para o Desenvolvimento Ágil do Software
Valores ágeis de desenvolvimento de software
Segundo a página Agile Manifest – Manifesto ágil os valores relacionados ao Desenvolvimento ágil de software são:
Indivíduos e iterações mais que processos e ferramentas;
Software funcional mais que documentação abrangente;
Colaboração do cliente mais que negociação de contratos;
Responder a mudanças mais que seguir um plano
Ou seja, o item à esquerda sempre tem maior importância do que o item à direita
Princípios ágeis de desenvolvimento de software
Os princípios do desenvolvimento ágil[2] valorizam
Garantir a satisfação do consumidor entregando rapidamente e continuamente software funcionais;
Até mesmo mudanças tardias de escopo no projeto são bem-vindas para garantir a vantagem competitiva do cliente;
Software funcionais são entregues frequentemente (semanas, ao invés de meses);
Cooperação diária entre pessoas que entendem do ‘negócio’ e desenvolvedores;
Projetos surgem através de indivíduos motivados, entre os quais existe relação de confiança.
A maneira mais eficiente e efetiva de transmitir informações é conversar cara a cara;
Software funcionais são a principal medida de progresso do projeto;
Processos ágeis promovem desenvolvimento sustentável. Os patrocinadores, desenvolvedores e usuários devem ser capazes para manter um ritmo constante indefinidamente.
Design do software deve prezar pela excelência técnica;
Simplicidade é essencial;
As melhores arquiteturas, requisitos e projetos emergem de equipes auto-organizadas;
Em intervalos regulares, a equipe reflete sobre como para tornar-se mais eficaz, então sintoniza e ajusta seu comportamento apropriadamente.
Comparações com outros métodos
Métodos Ágeis são algumas vezes caracterizados como o oposto de metodologias guiadas pelo planejamento ou disciplinadas. Uma distinção mais acurada é dizer que os métodos existem em um contínuo do adaptativo até o preditivo.[3] Métodos ágeis existem do lado adaptativo deste contínuo.
Ambiente ideal para o desenvolvimento ágil:
Baixa criticidade
Desenvolvedores sênior
Mudanças frequente de requisitos
Pequeno número de desenvolvedores
Cultura que tem sucesso no caos.
Ambiente ideal para o desenvolvimento direcionado ao planejamento:
Alta criticidade
Desenvolvedores Junior
Baixa mudança nos requisitos
Grande número de desenvolvedores
Cultura que procura a ordem.
Adaptabilidade dos métodos ágeis
Um método deve ser bastante flexível para permitir ajustes durante a execução do projeto. Há três problemas chaves relacionados ao tópico de adaptação dos métodos ágeis: a aplicabilidade dos métodos ágeis (no geral e no particular), e finalmente, o suporte ao gerenciamento de projeto.
Na Agile Culture, o profissional tem mais liberdade. Ele recebe um conjunto de métricas, objetivos e orientações para planejar o seu trabalho da melhor forma possível, agregando valor ao negócio e dando mais flexibilidade interna.