quinta-feira, 23 de outubro de 2008

Principais práticas das metodologias ágeis de desenvolvimento de softwares

Jogo do Planejamento – O desenvolvimento é feito em iterações semanais. No início de cada iteração a equipe se reune com o cliente para realizar o chamado Jogo do Planejamento. No Jogo o cliente propõe as funcionalidades que ele deseja, as chamadas estórias. Os programadores avaliam a dificuldade de implementar cada funcionalidade. Com essa estimativa o cliente prioriza as tarefas mais importantes para realizar na iteração.

Pequenas Versões – Como o escopo é reavaliado semanalmente, o projeto é regido por um contrato de escopo negociável, que difere significativamente das formas tradicionais de contratação de projetos de software. Ao final de cada semana, o cliente recebe novas funcionalidades, completamente testadas e prontas para serem postas em produção. Com essa prática se busca a medição do cliente do quanto já foi feito; a possibilidade de que se o projeto não terminar, várias partes já foram desenvolvidas e são funcionais; e principalmente o feedback rápido do cliente para detectar problemas ou informar que uma funcionalidade não atendeu a real necessidade.

Projeto Simples – No desenvolvimento ágil a complexidade do sistema deve ser sempre reduzida. Usa-se as tecnologias, designs, algoritmos e técnicas mais simples que permitirão atender aos requisitos do cliente. Qualquer complexidade deve ser removida assim que descoberta. Qualquer design, processo ou código criado pensando nas próximas iterações devem ser descartados.

Equipe Coesa – No desenvolvimento ágil o cliente faz parte da equipe de desenvolvimento. A comunicação com o cliente é crucial em projetos ágeis. Em vários ramos de metodologias ágeis, é o cliente quem exerce o papel de gerente do projeto, resolvendo os problemas referentes as regras de negócio. Para evitar distorções nas informações os desenvolvedores devem sanar suas dúvidas diretamente com o cliente.

Refatoração – Não existe uma etapa isolada para modelagem, o código é a modelagem. O design é melhorado continuamente através de refatoramento. Passos de refatoramento melhoram, incrementalmente, a estrutura do código, sem alterar sua função. No desenvolvimento ágil os testes são obrigatórios, assim elimina o medo de que o sistema irá deixar de funcionar por causa de um refatoramento. Sempre que um desenvolvedor perceber uma complexadade ou inclareza no sistema, deve-se refatorar o código e criar os devidos testes.

Integração Contínua – Várias vezes ao dia o desenvolvedor deve integrar suas alterações, sincronizar ao repositório principal e executar todos os testes. A adoção dessa prática estimula design simples, tarefas curtas, agilidade, feedback sobre o estado atual do sistema e principalmente encontrar conflitos e erros de design rapidamente.

Metáfora – As equipes mantêm uma visão compartilhada do funcionamento do sistema. Para a padronização do sistema com os outros membros da equipe, são criadas analogias das funcionalidades que se refletem na escolha dos nomes de métodos, classes, campos, etc. Além de sempre buscar fazer analogias próximas a linguagem natural do cliente para facilitar a comunicação com o mesmo.

Desenvolvimento Orientado a Testes – Antes de digitar qualquer linha de código, o desenvolvedor deverá refletir sobre a implementação e escrever o devido teste para validá-la. 100% do código deve ser coberto por testes. O teste deve ser feito obrigatoriamente antes de qualquer codificação ou refatoração. Todos os testes são executados automaticamente, o tempo todo.

Ritmo Sustentável – O desenvolvimento ágil busca entregar software com o máximo de qualidade e satisfação do cliente, e para isso usa o máximo de produtividade dos desenvolvedores. Para isso o ritmo deve ser sustentável com 40 horas/semana, 8 horas/dia, sem horas extras. Outra prática que se verifica neste processo é a prática de trabalho energizado, onde se busca trabalho motivado sempre. Para isto o ambiente de trabalho e a motivação da equipe devem estar sempre em harmonia.

Programação em Par – A mais polêmica das práticas, no desenvolvimento ágil a programação é realizada sempre com uma dupla de programadores em um único computador. Desta forma o programa sempre é revisto por duas pessoas, evitando e diminuindo assim a possibilidade de erros. Com isto busca-se sempre a evolução da equipe, melhorando a qualidade do código fonte gerado. Além disso a programação em par possibilita: simplicidade, coesão, padrão de codificação, refatoração, reflexão sobre a funcionalidade antes de codificá-la, aprimoramento do conhecimento técnico da equipe e a cobrança para que os testes sempre sejam escritos.

2 comentários:

Letícia disse...

Achei em um blog sobre metodologias ageis (http://agilblog.locaweb.com.br/2008/10/) um post que fala sobre uma outra grande vantagem da programacao em par:
"Quando está trabalhando em par se trabalha o dia todo. Pois ao trabalhar sozinho, você vê o seu e-mail, lê blogs e etc. E essas coisas não acontecem com programação em par. Ao fim de um dia de programação em par você está cansado. Pois você realmente pensou e trabalhou o dia todo, mas você fica contente, pois sabe que teve o trabalho realizado."
Concordo plenamente com esse argumento.. pelo menos comigo funciona!

Daniel disse...

Achei um vídeo interessante sobre a adoção do Scrum pelo Globo.com

http://amagno.blogspot.com/2008/12/falando-em-agile-2008-scrum-na-globocom.html

Fica a dica ;)