segunda-feira, 16 de junho de 2008

Metodologias Ágeis

O Manifesto Ágil:

O manifesto ágil foi assinado em 2001 pelos principais profissionais veteranos na área de desenvolvimento de softwares engajados em discutir uma nova forma para melhor a velocidade no desenvolvimento de seus sistemas baseados em suas experiências de anos programando.

http://agilemanifesto.org/

A fim de estabelecer uma maneira viável de desenvolvimento de software algumas metodologias foram criadas utilizando as principais premissas ágeis:

Indivíduos e iterações <> processos e ferramentas
Software funcionando <> documentação abrangente
Colaboração do cliente <> negociação de contratos
Resposta a mudanças <> seguir planejamento rígido

Metodologias ágeis como
SCRUM, MSF AGILE e XP partem desses conceitos e de um modo geral não possuem grandes diferenças entre si.

As pesadas documentações que são propostas nas metodologias mais antigas, no agile são transformadas em rascunhos feitos a lápis mesmo durante as reuniões com o cliente.Esses rascunhos realmente servem como documento para o desenvolvimento do projeto, uma vez que provavelmente uma especificação não valerá durante todo projeto e ela sempre será adaptada durante o processo.Um fator importante que as metodologias ágeis pregam é que com a colaboração do cliente e a disponibilidade a encarar mudanças da equipe aquilo que era chamado de refação se transforma em implementação em uma solução funcional!

Como ponto principal, as iterações são funcionalidades do software que são mapeadas junto ao cliente, cada iteração pode receber uma nota que define sua complexidade e ao final de um período determinado ela será entregue ao cliente em forma de software funcionando.Dessa forma o cliente tem em mãos algo que realmente possa entender e validar enquanto ainda a tempo, diferentemente de um calhamaço de papel onde ele pode passar horas lendo sem entender uma palavra sequer.

Graças a Deus nessa nova abordagem de gestão o cliente/usuário deixou de ser o grande vilão da história onde os gestores passavam a maior parte do seu tempo se precavendo das investidas insanas de seus clientes malignos.Agora eles são exatamente o que deveriam ser....clientes, a parte mais interessada no projeto e no sucesso dele.
Por conta disso a importância de sempre mostrar ao cliente o que ele quer ver, o seu investimento sendo feito e parecendo com que ele espera que pareça.Inclusive as iterações funcionando que foram entregues já podem ser utilizadas pelo cliente antes mesmo do projeto ficar pronto, com isso acabamos de ganhar vários pontos do nosso sponsor.
Nem sempre é possível se entender o que um cliente quer e em muitos dos casos ele também não sabe o que quer, portanto a comunicação e mostrar que ele é parte integrante e ativa do projeto é importantíssimo.

Uma prática bem interessante que é adotada por vários gestores é a de utilizar as documentações do CMMI, o que ‘garante’ um certificado que agrada bastante os chefes e um controle formal do que é dito e feito no projeto.Tanto é interessante essa adoção pela CMMI que a metodologia da Microsoft o MSF possui duas frentes, o
MSF Agile e o MSF for CMMI.

As metodologias de gestão são conjuntos pré-definidos de processos que por si só cumprem sua função, porém existem algumas ferramentas que auxiliam (ou não) o controle desses processos, a Microsoft como não haveria de ser incluiu no
VSTS (Visual Studion Team System) o MSF, não por isso as outras metodologias também possuem seus ‘plug-ins’ para o Visual Studio: SCRUM, XP.

Um comentário:

Augusto Pierzynski disse...

O artigo ficou muito bom mesmo.

Se você me permitir, gostaria de dar uma exemplificação do conceito de "iteração".

Em um projeto o analista faz o levantamento de quais funcionalidades serão implementadas no desenvolvimento. Dentro de cada funcionalidade existe o número de iterações e a pontuação (ou grau de dificuldade) dessa funcionalidade.
Exemplificando: No desenvolvimento de um ERP temos o módulo comercial. Dentro do módulo comercial temos as funcionalidades (Inserção do pedido, Integração com transportadoras, controle de estoque, cálculo de preço final do produto com impostos, cálculo de frete, ...). Dentro de cada funcionalidade temos “n” iterações que seria a apresentação do último “Build” do sistema para o cliente.

Na funcionalidade “Inserção do Pedido”, por exemplo, temos iterações aonde o cliente testa:

Iteração 1: O cliente diz: “O sistema ficou bom, mas a tela ficou muito complicada para o vendedor.”
Iteração 2: O cliente diz: “Agora sim!!! Vamos resolver o problema de imposto no preço dos produtos para outros estados”
Iteração 3: O cliente diz: “As informações de Nota Fiscal não ficaram bem dispostas e está faltando informação. Vamos rever.”
Iteração 4: O cliente diz: “Preciso que meu sistema utilize um sistema de GPS para saber aonde está a carga!”
Nessa última iteração que está fora do escopo deve ser discutido com o cliente se:
• Ele deseja pagar mais por isso
• Aumentar o prazo do projeto
• Tirar alguma funcionalidade menos prioritária do projeto