Desenvolvimento ágil
Introdução
Segundo a Standish Group, até o ano de 2009 apenas 32% dos projetos tinham sucesso, sendo 44% com atraso ou defeito e 24% são falhos. Surgiu então os métodos ágeis, para suprir a necessidade de melhorias na forma como se desenvolver um software, afim de satisfazer o cliente, elevar o índice de sucesso e já inicializar um novo projeto.
Durante o desenvolvimento de um projeto, novas tecnologias e técnicas são descobertas, novos requisitos são exigidos pelo mercado, desta forma, os métodos "rígidos" de desenvolvimento acabam impedindo alterações no projeto durante a sua construção, o que pode resultar em projetos obsoletos ou que não atendem as novas necessidades do mercado.
Conceito
Desenvolvimento Ágil é uma forma de gestão e desenvolvimento de Software que usa uma forma de planejar e executar iterativa e incremental, voltado para processos empíricos, ou seja, complexos, caóticos ou com incerteza e até mesmo confusos, com mudanças ao longo do processo de desenvolvimento, não são repetitivos e são imprevisíveis.
Essa forma de gestão e desenvolvimento divide o problema (software) em produtos menores, para ao final entregá-lo funcionando regularmente. Esta técnica aproxima a equipe, proporcionando maior colaboração entre os desenvolvedores e os experts de negócios, comunicação face a face, reduz os riscos dos projetos, reage as mudanças de forma mais rápida e natural e a satisfação final dos clientes através da adoção de práticas de gestão e de engenharia de software baseadas nos valores e princípios do Lean e do agile. Desta forma, o principal objetivo é a entrega do um produto que realmente atenda o cliente e que será útil e de qualidade.
Segundo Hishsmith, 2004, agilidade em TI é “a habilidade de criar e responder a mudanças, buscando a obtenção de lucro em um ambiente de negócio turbulento” ou seja, o equilíbrio entre flexibilidade e estabilidade.
O desenvolvimento ágil defende que a melhor maneira de atender às necessidades dos clientes é através do trabalho em equipe, de um grupo comprometido, que foca nos resultados com rapidez e o menor desgaste possível.
A confiança nas pessoas e na sua capacidade de colaboração é fundamental ao desenvolvimento ágil. Não há desenvolvimento ou sucesso sem as pessoas. Deve-se criar um processo ágil baseado nas habilidades dos membros da equipe, e não depender tanto de uma estrutura de processo para atingir o seu sucesso.
Essa metodologia possibilita que a equipe trabalhe mais sua criatividade. Não há tanta pressão de uma gerência pesada e rígida, que impõe os afazeres. Todos são incentivados a estudar e aprender ao longo do projeto e tem liberdade para tomar decisões que melhor representem o consenso da equipe.
Dessa forma, o processo ágil não tem mais aquela antiga hierarquia, ou uma estrutura tradicional de comando e controle e sim uma relação de confiança e colaboração acima de tudo.
Vantagens ao cliente
Dentre os benefícios do desenvolvimento ágil para os clientes, podemos destacar o foco no valor do negócio e no retorno do investimento, na entrega mais rápida e regular do projeto, foco no que é prioritário e que traz mais retorno/lucro, transparência e visibilidade do desenvolvimento, flexibilidade para mudanças de requisitos e mais agilidade nas tomadas de decisões, melhoria na qualidade final do produto, maior produtividade e redução dos riscos.
Vantagens para os desenvolvedores
O desenvolvimento ágil também é vantajoso para os desenvolvedores. Dentre as vantagens, é possível enfatizar a criação de escopos claros, maximizar o comprometimento, estabelecer equipes com maior autonomia, disciplina e regularidade com mais comunicação entre si e com o cliente, busca de melhorias, redução de desperdícios, antecipação de problemas e agilidade na tomada de decisões.
História e filosofia
Desenvolvimento ágil não é algo novo, existe desde 2001, ganhando destaque através do movimento denominado Manifesto ágil, o qual reuniu 17 pessoas para formar uma aliança durante um workshop realizado em Snowbird, Utah, EUA., que assinaram e estipularam as seguintes filosofias/diretrizes a serem seguidas no desenvolvimento de projetos:
- · Indivíduos e interações mais que processos e ferramentas;
- · Software em funcionamento mais que documentação abrangente;
- · Colaboração com o cliente mais que negociação de contratos;
- · Responder a mudanças mais que seguir um plano;
- · Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda."
Princípios
O desenvolvimento ágil funciona baseado em 12 princípios, citados a seguir:
1. Nossa maior prioridade é satisfazer o cliente através da entrega contínua e adiantada de software com valor agregado.
2. Mudanças nos requisitos são bem-vindas, mesmo tardiamente no desenvolvimento. Processos ágeis tiram vantagem das mudanças visando vantagem competitiva para o cliente.
3. Entregar frequentemente software funcionando, de poucas semanas a poucos meses, com preferência à menor escala de tempo.
4. Pessoas de negócio e desenvolvedores devem trabalhar diariamente em conjunto por todo o projeto.
5. Construa projetos em torno de indivíduos motivados. Dê a eles o ambiente e o suporte necessário e confie neles para fazer o trabalho.
6. O método mais eficiente e eficaz de transmitir informações para e entre uma equipe de desenvolvimento é através de conversa face a face.
7. Software funcionando é a medida primária de progresso.
8. Os processos ágeis promovem desenvolvimento sustentável. Os patrocinadores, desenvolvedores e usuários devem ser capazes de manter um ritmo constante indefinidamente.
9. Contínua atenção à excelência técnica e bom design aumenta a agilidade.
10. Simplicidade--a arte de maximizar a quantidade de trabalho não realizado--é essencial.
11. As melhores arquiteturas, requisitos e designs emergem de equipes auto-organizáveis.
12. Em intervalos regulares, a equipe reflete sobre como se tornar mais eficaz e então refina e ajusta seu comportamento de acordo.
Metodologias
O termo “Desenvolvimento ágil" é usado por diversas metodologias e frameworks que desenvolvem software de forma iterativa e incremental. Mas o mais adequado é dizer que existem várias metodologias ágeis, ou seja, existem vários métodos de desenvolvimento que aplicam a filosofia, os princípios e as técnicas do desenvolvimento ágil.
Metodologias ágeis de desenvolvimento de software são iterativas, ou seja, o trabalho é dividido em iterações e as mais conhecidas são: Extreme Programming (XP), Scrum, Lean Development, Feature-Driven Development (FDD), Kanban, RUP e OpenUP.
Embora cada uma tenha sua particularidade e suas vantagens para cada projeto, o Scrum é considerado o mais simples, fácil e utilizado mundialmente.
Falhas e críticas
O desenvolvimento ágil também possui falhas e críticas. Dentre as principais, podemos destacar:
- · Filosofia ou a cultura da empresa pode conflitar com os valores e princípios do ágil;
- · Pode faltar suporte gerencial para apoiar as mudanças. É preciso desejar as mudanças;
- · Pode faltar experiência ou o treinamento ser insuficiente no novo processo. É preciso tornar-se capaz de trabalhar de maneira ágil;
- · Pode ocorrer boicote ou falta de comprometimento da própria equipe. É preciso reconhecer que há espaço para melhorias e desejá-las;
- · Pode faltar estrutura e documentação necessárias;
- · Na maioria das vezes trabalha apenas com desenvolvedores de nível sênior;
- · Poder levar a maiores dificuldades nas negociações contratuais.
Referências
<Ref.: http://www.cprime.com/about/scrum_faq.html>
<http://blog.myscrumhalf.com/2011/05/faq-scrum-o-que-e-desenvolvimento-agil/>
<http://agilemanifesto.org/iso/ptbr/principles.html>
<https://www.ibm.com/developerworks/community/blogs/rationalbrasil/entry/mas_o_que_s_c3_a3o_essas_tais_de_metodologias__c3_a1geis?lang=em>
<http://www.ambysoft.com/artwork/graphs/agileCriteria2010Value.jpg>
<http://www.devmedia.com.br/login/login.asp?ret=articles/viewcomp.asp?comp=5916>
<www.agilemanifesto.org>