Software funcionando é a medida primária de progresso.
3
1.2. Métodos Ágeis
Casa do Código
Os processos ágeis promovem desenvolvimento sustentável. Os patrocinado-
res, desenvolvedores e usuários devem ser capazes de manter um ritmo cons-
tante indefinidamente.
Contínua atenção à excelência técnica e bom design aumenta a agilidade.
Simplicidade - a arte de maximizar a quantidade de trabalho não realizado - é
essencial.
As melhores arquiteturas, requisitos e designs emergem de equipes auto-
organizáveis.
Em intervalos regulares, a equipe reflete sobre como se tornar mais eficaz e
então refina e ajusta seu comportamento de acordo.
Os profissionais que deram origem ao manifesto ágil foram Kent Beck, Mike Be-
edle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler,
James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Ma-
rick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland e Dave Thomas.
Ao longo desse livro nós estudaremos como esses valores e princípio são coloca-
dos em prática nas atividades e no dia-a-dia das equipes ágeis.
1.2
Métodos Ágeis
O Manifesto ágil é o embasamento filosófico de todos os métodos ágeis e diversos
métodos de desenvolvimento de software estão alinhados a ele. A maioria deles se
utiliza de ciclos curtos, que são chamados de iterações e normalmente têm duração
de poucas semanas, dessa forma garantindo
feedback frequente e respostas rápidas
às mudanças.
Cada iteração contém todas as etapas necessárias para que se realize um incre-
mento no produto, ou seja, no software: planejamento, análise, design, codificação,
testes e documentação. Em métodos não ágeis, também conhecidos como métodos
tradicionais, geralmente se encontra um processo em cascata em que todas as eta-
pas citadas são executadas uma única vez e em sequência (ainda que idealmente,
prevendo-se revisões incrementais de cada etapa, se necessário).
Scrum, Extreme Programming (XP), Crystal Clear e Feature Driven Develop-
ment são exemplos de métodos ágeis. Cada um deles traz uma abordagem diferente
que inclui diversos valores, práticas e reuniões. O Scrum, por exemplo, traz uma
4
Casa do Código
Capítulo 1. Introdução à Métodos Ágeis
abordagem mais voltada para a gestão, com maior foco nas reuniões, no planeja-
mento e na melhoria contínua. Já o XP, trazem maior enfoque nas práticas técnicas.
Ao decorrer do livro estudaremos melhor esses métodos e exploraremos algumas
práticas ágeis.
A Cascata dos Métodos Tradicionais
Não é o mais forte que sobrevive, nem o mais inteligente, mas o que melhor se
adapta às mudanças.
Charles Darwin
Em contra partida, os processos tradicionais ou em cascata (figura 1.1), que eram
amplamente utilizados do mercado antes dos métodos ágeis, assumem que o desen-
volvimento de software pode ser realizado através de uma sequência de atividades
facilmente identificadas, previsíveis e repetíveis, mas diferente de outras engenha-
rias, desenvolvimento de software requer criatividade, e geralmente envolve um alto
nível de riscos e incertezas [38].
O processo cascata costuma ser realizado através de fases de análise de requisitos,
projeto (design), implementação, testes, integração e manutenção, de forma que uma
fase é iniciada somente quando a anterior termina. O termo foi originado em um
artigo publicado em 1970 por W. W. Royce [52]. O próprio autor descreveu o método
como arriscado e propenso a falhas.
5
1.2. Métodos Ágeis
Casa do Código
Figura 1.1: Processo em Cascata (Waterfall)
É claro que desenvolvimento ágil não é a única forma de se encarar o desenvol-
vimento de software, nem é a única maneira eficiente; como disse, Frederick Brooks
em 1986, nenhuma tecnologia ou técnica de gestão resolve todos os problemas de
todos os contextos. Ele resumiu essa ideia dizendo que não há prata de bala [15].
Métodos ágeis assumem imprevisibilidade natural do desenvolvimento de soft-
ware, por isso, considera-se que o cliente também está aprendendo sobre o que
precisa e, que a cada feedback pode mudar de ideia e alterar o escopo do projeto.
Assume-se também que estimativas de esforço e tempo de desenvolvimento são, de
fato, estimativas, e não devem ser tratadas como algo certo e sem margem de erro.
Por assumir a imprevisibilidade envolvida no desenvolvimento de software, mé-
todos ágeis se baseiam nos ciclos de feedback constante permitindo que o cliente e a equipe de desenvolvimento possam adaptar-se às mudanças, aumentando assim as
chances de sucesso do projeto.
Um fato interessante, que muitas vezes é deixado de lado nas discussões sobre
métodos ágeis, é que o manifesto ágil não foi uma reação apenas aos métodos tradi-
cionais e burocráticos, mas também foi uma reação aos métodos caóticos que resul-
6
Casa do Código
Capítulo 1. Introdução à Métodos Ágeis
tavam em produtos de baixa qualidade. Os métodos ágeis representam, justamente,
um meio termo entre métodos estruturados demais e métodos sem estrutura, são o