Extreme Programming (XP)
A muito tempo a indústria de software vem passando por grandes transformações e novos desafios, entre eles desenvolver softwares com qualidade, no menor tempo possível e que atendam as necessidades dos clientes.
Com estes novos desafios a indústria de software passou a dar valor a algumas áreas da informática, como a engenharia de software e qualidade de software, com intuito de atender as exigências do mercado.
A indústria começou a utilizar metodologias de desenvolvimento de software, adotou métricas e padrões para alcançar níveis aceitáveis de qualidade, prever custos e prazos em seus projetos. Porém ainda são poucos os projetos que conseguem obter pleno sucesso em seu desenvolvimento, onde prazo e orçamento estabelecidos e as necessidades do cliente sejam realmente atendidas.
Pesquisa feitas pelo Standish Group International em 1994, um pouco antes da adoção de metodologia de desenvolvimento pelas indústrias, apontam que apenas 16, 2 % dos projetos de software atingiam sucesso (prazo, orçamento e funcionalidades atendidas). Em 2002 esta taxa havia subido para 34 %, ou seja, um aumento de 100 % em 8 anos. Mas estas taxas ainda se encontram muito aquém do esperado pelo mercado.
As metodologias utilizadas nos projetos pesquisados eram as mais variadas, podemos citar modelo em cascata, modelo iterativo e alguns com modelo em prototipação. Neste trabalho será utilizado o termo desenvolvimento tradicional para os projetos que se utilizem do modelo em cascata e todos os outros que se baseiam nele.
Analisando os motivos para a baixa taxa de sucesso dos projetos desenvolvidos com modelos tradicionais, cita-se os principais motivos e bastante comuns entre eles:
-
Tempo elevado entre cada fase do projeto, não acompanhando as mudanças de requisitos do projeto;
-
Falta de conhecimento por parte do cliente da sua real necessidade, dando margem às especulações dos desenvolvedores;
-
Forte linearidade no desenvolvimento do projeto;
Focando nas fragilidades do modelo tradicional, surgiram metodologias para desenvolvimento ágil de software. Cita-se algumas características destas metodologias:
-
Foco nas pessoas, não no processo, evitando especulações dos desenvolvedores;
-
Atender as reais necessidades do cliente, na velocidade e praticidade por ele desejada;
-
Ausência de linearidade no desenvolvimento do projeto;
-
O cliente aprender a suas reais necessidades durante o projeto e repassar esta novas necessidades a equipe de desenvolvimento;
XP é uma metodologia para desenvolvimento de software ágil, com qualidade e que atenda as necessidades do cliente. Alguns praticantes definem a XP como a prática e a perseguição da mais clara simplicidade, aplicado ao desenvolvimento de software. Uma metodologia voltada para projetos cujos requisitos mudem com freqüência, utilizem desenvolvimento orientado a objetos, equipes de até 12 desenvolvedores e desenvolvimento incremental.
A XP Busca o máximo de valor a cada dia de trabalho da equipe para o seu cliente. Em um curto espaço de tempo o cliente terá um produto que possa ser utilizado, podendo aprender com o mesmo e reavaliar se o que foi desenvolvido é realmente o desejado.
Por ser uma metodologia recente, a XP sofre mudanças em suas concepções e, portanto, é comum encontrar variações. A adaptação ao ambiente de desenvolvimento deve ser levada em conta, se um valor trouxer mais prejuízos do que benefícios é necessário relavaliar a utilização desta metodologia.
A XP é organizada em torno de um conjunto de
práticas e valores que atuam perfeitamente para assegurar um alto
retorno do investimento efetuado pelo cliente.
Por ser um processo de desenvolvimento novo e baseado em diversas premissas que contrariam o modelo tradicional, o XP exige que os desenvolvedores tenham coragem para:
-
Desenvolver software de forma incremental;
-
Manter o sistema simples;
-
Permitir que o cliente defina prioridades;
-
Fazer desenvolvedores trabalharem em pares:
-
Investir tempo em refactoring ;
-
Investir tempo em testes automatizados;
-
Estimar estórias na presença do cliente;
-
Expor código a todos os membros da equipe;
-
Integrar o sistema diversas vezes ao dia;
-
Adotar ritmo sustentável de desenvolvimento;
-
Abrir mão de documentos que servem como defesa;
-
Propor contratos de escopo variável;
-
Propor a adoção de um processo novo.
-
Assumir em relação ao cliente possíveis atrasos e problemas de implementação;
-
Colocar desenvolvedores e clientes frente a frente;
-
Implantar uma nova versão do sistema no cliente semanalmente;
-
Apostar em seus colaboradores aumentando suas responsabilidades;
-
Modelar e documentar apenas quando for de extrema necessidade.
Uma empresa ao utilizar este processo por completo, só estará agregando valor aos seus negócios e melhorando o ambiente de seus colaboradores e clientes, tratando-os como pessoas e parceiros.
Desenvolvimento Ágil
1.0