Desenvolvimento Ágil de Software (Método ágil) é uma disciplina que estuda um conjunto de comportamentos, processos, práticas e ferramentas utilizados para a criação de produtos (geralmente softwares).
A maioria dos métodos ágeis tenta minimizar o risco do desenvolvimento do software em curtos períodos, chamados de iteração, os quais gastam entre uma a quatro semanas e produzem pouca documentação em relação a outros métodos, assim reduzindo o tempo de produção de documentação mais útil.
Métodos ágeis enfatizam comunicações em tempo real, preferencialmente cara a cara, a documentos escritos. A maioria dos componentes de um grupo ágil deve estar agrupada em uma sala. Isso inclui todas as pessoas necessárias para terminar o software: no mínimo, os programadores e seus clientes (clientes são as pessoas que definem o produto, eles podem ser os gerentes, analistas de negócio, ou realmente os clientes), além dos testadores, projetistas de iteração, redatores técnicos e gerentes.
Métodos ágeis são adequados para projetos com pequenos times, entre 20 a 30 pessoas.
Valores ágeis de desenvolvimento de software [1]
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.
Princípios ágeis de desenvolvimento de software [2]
Garantir a satisfação do consumidor entregando rapidamente e continuamente softwares funcionais;
Mudanças tardias de escopo no projeto são bem-vindas para garantir a vantagem competitiva do cliente;
Software funcionais são entregues semanalmente;
Cooperação diária entre pessoas que entendem do "negócio" e desenvolvedores;
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;
Design do software deve prezar pela excelência técnica;
Simplicidade é essencial;
Em intervalos regulares, a equipe reflete sobre como tornar-se mais eficaz, então sintoniza e ajusta seu comportamento apropriadamente.
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.
Aplicabilidade dos métodos ágeis
Quando a empresa de software está desenvolvendo um produto pequeno ou médio para venda.
Desenvolvimento de sistema personalizado dentro de uma organização.
Quando existe um interesse do cliente em se envolver no processo de desenvolvimento.
Quando não existem muitas regras e regulamentos que afetem diretamente o software.
Desenvolvimento iterativo e incremental
Métodos ágeis são tanto iterativos, quanto incrementais. São iterativos por que o trabalho realizado é sempre melhorado em ciclos subsequentes e são incrementais, por que o trabalho planejado é entregue em partes que são adicionadas ao todo do projeto.
O processo iterativo é aquele desenvolvido através de tentativas sucessivas de refinamento. Por exemplo, uma equipe de desenvolvimento faz sua primeira tentativa para construção de um software, porém, existem pontos de informação falhos ou incompletos. A equipe de forma iterativa refina essas partes até que o produto atinja um ponto satisfatório. Assim, a cada iteração, o software é melhorado através da adição de mais detalhes.
O processo incremental é aquele em que o software/produto é construído e entregue por partes. Cada parte ou incremento representa um subconjunto de funcionalidades completas. O incremento pode ser pequeno ou grande, por exemplo, ele pode variar apenas de uma tela de relatórios simples, para um conjunto altamente flexível de telas de gerenciamento de dados. Cada incremento é totalmente codificado e testado.
Problemas com métodos ágeis
Dificuldades na escalabilidade de métodos ágeis em sistemas grandes.
Manter o interesse constante do cliente envolvido no processo.
Membros da equipe podem não ser adequados ao envolvimento intenso que caracteriza os métodos ágeis. Como por exemplo, desenvolvedores júnior ou em treinamento e estagiários.
Dificuldade em manter a simplicidade.
Conflitos entre múltiplos stakeholders[3].
Contratos que não abordam o desenvolvimento iterativo e incremental.
Pouca documentação.
[1]Valores são o conjunto de características de uma determinada pessoa ou organização, que determinam a forma como estas se comportam e interagem com outros indivíduos e com o meio ambiente.
[2]Princípios são um conjunto de normas ou padrões de conduta a serem seguidos por uma pessoa ou instituição.
[3]Do inglês, stake (interesse, participação, risco) e holder (aquele que possui). Pessoa(s) ou grupo(s) que possuem interesse em uma empresa ou negócio.
Referências
"A Nova Metodologia". https://medium.com/desenvolvimento-%C3%A1gil/a-nova-metodologia-69b8f8a379c7 Consultado em novembro de 2019.
"Iterativo e incremental: Suas definições". https://www.culturaagil.com.br/iterativo-e-incremental-suas-definicoes/ Consultado em novembro de 2019.
"Introdução ao Desenvolvimento Ágil". https://www.devmedia.com.br/introducao-ao-desenvolvimento-agil/5916 Consultado em novembro de 2019.
"Manifesto for Agile Software Development". https://agilemanifesto.org/ Consultado em novembro de 2019.
"Agile Alliance Brazil" https://www.agilealliance.org/agilealliancebrazil/ Consultado em novembro de 2019.