Sábado, Setembro 22, 2007

Gerenciamento E Desenvolvimento Ágil.

Motivação.

Desenvolver software de qualidade é algo extremamente difícil. Muitos problemas podem acontecer durante este processo, existem estudos que relatam o seguinte:

1. Que 75% dos projetos falham devido a funcionalidades solicitadas (Standish Group, 2004)

2. Que de 42% a 64 % dos defeitos se originam nas funcionalidades solicitadas e de 20% a 40% dos gastos totais são devidos a correções, causadas por erros nas funcionalidades solicitadas. (SEI Research Report, 2004).

Isso nos diz que desenvolver software é um investimento arriscado, uma tarefa que deve ser medida e redirecionada dia-a-dia. Fazendo-se uma analogia, é como investir seu dinheiro na bolsa de valores. Mas na bolsa de valores você não deixa seu dinheiro esquecido por seis meses e so depois volta para ver o que aconteceu, você verifica todos os dias, estuda riscos, acompanha o mercado, se adapta a mudanças, faz as correções que acha correto e ai obtem os lucros, isso também se aplica a desenvolvimento de software.

O sucesso do software depende de ponto de vista do cliente e da empresa desenvolvedora, às vezes eles podem ter conceitos diferentes de sucesso.

Sucesso na visão da empresa desenvolvedora de software é quando o projeto é entregue no prazo e dentro dos custos.

Sucesso na visão do cliente é quando o projeto é entregue no prazo, dentro dos custos, com todos os requisitos funcionando e atendento as necessidades de seu negócio.

Para tentar resolver estes problemas, um grupo de pessoas ligadas a área de desenvolvimento se reuniu e discutiu sobre este assunto.

Eles chegaram a um acordo sobre práticas que ajudariam a diminuir estes riscos. Eles publicaram um documento, onde ficam expostas estas práticas, este documento foi chamado de Manifesto Ágil ( http://www.agilemanifesto.org )

O que é o Manifesto Ágil?

O Manifesto ágil é um conjunto de práticas que ajudam a solucionar problemas referentes a desenvolvimento de software e valorizam as pessoas que trabalham no projeto, o cliente e mudanças no negócio do cliente.

Diminui o valor de algumas práticas e super valoriza outras, seu foco é software de qualidade e funcionando, atendendo as necessidades do negócio.

Manifesto para Desenvolvimento Ágil de Software

Nós estamos procurando melhores maneiras de desenvolver
software fazendo isso e ajudando outros a fazer isso.


Para realizar este trabalho nós priorizamos estes valores:

Pessoas e Interações ao invéz de processos e ferramentas
Trabalhar no software ao invéz de documentação compreensiva

Colaboração do cliente ao invéz de negociação de contrato
Responder a mudanças ao invéz de seguir o plano

Isto é, valorizamos o valor dos itens a direita,
mas damos mais valor para os itens a esquerda.

Uma equipe ágil vai além de apenas usar estas práticas, todos os comprometidos (time de desenvolvimento e cliente), devem concordar com estas práticas e valores. É um processo de colaboração, afinal todos querem o mesmo resultado, o sucesso.

Como todo negócio, o cliente quer prazos e garantias de retorno do investimento, para isso precisamos gerênciar o processo. Neste momento precisamos de uma forma de controlar este ambiente dia-a-dia, para essa finalidade usaremos um framework de gerênciamento ágil chamado SCRUM. Existem outras opções que podem ser usadas, afinal cada projeto é diferente um do outro e exigem diferentes abordagens, mas, optamos pelo SCRUM por concordarmos mais com suas práticas.

O que é o SCRUM?

Scrum é um processo ágil para desenvolvimento de software. Com Scrum, projetos progridem via uma série de interações mensais chamadas de sprints.

Scrum é a ferramenta ideal para projetos que rapidamente tem que se adaptar a mudanças ou um alto número de requerimentos que surgem durante o processo. O trabalho que deve ser feito em um projeto Scrum é listado em um Product Backlog, que é a lista de tudo que se quer no produto. No inicio de cada sprint um Sprint Planning Meeting é realizado para que o Product Owner priorize o Product Backlog, isto é ordene o que tem que ser feito de acordo com sua necessidade e o Scrum Team seleciona as tarefas que eles podem completar durante o Sprint que irá começar. Estas tarefas então são movidas do Product Backlog para o Sprint Backlog.

Cada dia durante o sprint é conduzido por uma breve reunião diária chamada de Daily Scrum, que ajuda o time a não perder o foco, resolver problemas mais rapidamente e ficar dentro do prazo.

No final de cada sprint o time demostra a(s) funcionalidade(s) que foram realizadas em um Sprint Review Meeting.

Ciclo de um projeto gerenciado pelo SCRUM:

Esta é a forma de gerênciar, mas ainda falta como executar a lista de tarefas, para isso usaremos Extreme Programming, os valores e práticas da programação extrema vão de encontro com o que foi demostrado até agora. Muitas práticas do XP se confundem com as do Scrum, um exemplo são as reuniões diárias, tanto o Scrum quanto XP valorizam esta prática. A união destas duas ferramentas é muito poderoza, pelo fato de o Scrum focar o gerenciamento enquanto XP foca a produção com qualidade.

O que é o Extreme Programming?

Extreme Programming (XP) e atualmente a mais ponderada e disciplinada maneira de desenvolver software.

XP e bem sucedida por se preocupar muito com a satisfacao do cliente. A metodologia e designada a entregar o software que seu cliente precisa quando ele precisa. XP encoraja seus desenvolvedores a ter confianca ao responder as mudancas de requerimentos do cliente, que sempre sao de ultima hora.

Esta metodologia enfatiza no trabalho em time. Gerentes, clientes e desenvolvedores sao todos parte de um time dedicado a entregar um software de qualidade. XP implementa simplicidade de maneira efetiva e abilita um estilo de desenvolvimento em grupo.

XP melhora um projeto de software de quatro maneiras essenciais; comunicacao, simplicidade, feedback e coragem.

Seguência de desenvolvimento XP e representado nas figuras a seguir:

0 comentários:

Quem sou eu

Minha foto
agnaldo4j
Sou alegre, gosto de fazer amizades e quando possível ajudar quem precisa.
Visualizar meu perfil completo

agnaldo4j's shared items