10 março 2008

Agile software development (Desenvolvimento ágil de software)

Método ágil é um conjunto de metodologias de desenvolvimento de software, é uma estrutura conceitual para reger projetos de engenharia de software em um curto espaço de tempo.

Métodos ágeis enfatizam comunicações em tempo real. A maioria dos componentes de um grupo ágil devem estar agrupados em uma sala. Isto inclui todas as pessoas necessárias para terminar o software. Isto inclui os programadores, clientes que definiram o produto. Nesta sala devem também se encontrar os testadores, projetistas de iteração, redatores técnicos e gerentes.

Métodos ágeis também enfatizam trabalho no software como uma medida primária de progresso. Combinado com a comunicação real time, métodos ágeis produzem pouca documentação em relação a outros métodos, sendo este um de seus pontos negativos.

Os princípios do desenvolvimento ágil valorizam:



  • Garantir a satisfação do consumidor entregando rapidamente e continuamente softwares funcionais;
  • Softwares funcionais são entregues frequentemente (semanas, ao invés de meses);
  • Softwares funcionais são a principal medida de progresso do projeto;
  • Até mesmo mudanças tardias de escopo no projeto são bem-vindas.
  • Cooperação constante entre pessoas que entendem do 'negócio' e desenvolvedores;
  • Projetos surgem através de indivíduos motivados, e que deve existir uma relação de confiança.
  • Design do software deve prezar pela excelência técnica;
  • Simplicidade
  • Rápida adaptação às mudanças
  • indivíduos e iterações ao invés de processos e ferramentas
  • software funcional ao invés de documentação extensa
  • colaboração com clientes ao invés de negociação de contratos
  • responder a mudanças ao invés de seguir um plano

Comparação com a balbúrdia

A balbúrdia, é a ausência de método de definição: os membros da equipe fazem o que eles sentem que é correto. Os desenvolvedores ágeis freqüentemente reavaliam os planos, enfatizam a comunicação face a face e o uso relativamente esparso de documentos levando ocasionalmente as pessoas a confundirem isto com codificação cowboy. Equipes ágeis, contudo, seguem o processo definido (e freqüentemente de forma disciplinada e rigorosa).
Como em todas as metodologias, o conhecimento e a experiência dos usuários definem o grau de sucesso ou fracasso de cada atividade. Os controles mais rígidos e sistematizados aplicados em um processo implicam em altos níveis de responsabilidade para os usuários. A degradação de procedimentos bem-intencionados pode levar as atividades a serem caracterizadas como codificação balbúrdia.

Metodologias

A abordagem Scrum, para gestão de projetos ágeis, leva em consideração planejamento não linear, porém de maneira mais exaustiva e está focada em agregar valor para o cliente e em gerenciar os riscos, fornecendo um ambiente seguro. Pode ser utilizada na gestão do projeto aliada a uma metodologia de desenvolvimento como XP, FDD, OpenUP, DSDM, Crystal ou outras.