Impacto da aplicação da metodologia XP nas ... - Artigo Científico
Impacto da aplicação da metodologia XP nas ... - Artigo Científico
Impacto da aplicação da metodologia XP nas ... - Artigo Científico
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
THIAGO BORBOREMA<br />
IMPACTO DA APLICAÇÃO DA METODOLOGIA <strong>XP</strong> NAS<br />
ORGANIZAÇÕES DE DESENVOLVIMENTO DE<br />
SOFTWARE<br />
UNIVERSIDADE DO VALE DO SAPUCAÍ<br />
POUSO ALEGRE<br />
2007
THIAGO BORBOREMA<br />
IMPACTO DA APLICAÇÃO DA METODOLOGIA <strong>XP</strong> NAS<br />
ORGANIZAÇÕES DE DESENVOLVIMENTO DE<br />
SOFTWARE<br />
1<br />
Trabalho apresentado ao<br />
Departamento de Sistemas de<br />
Informação <strong>da</strong> Facul<strong>da</strong>de de<br />
Filosofia Ciências e Letras Eugênio<br />
Pacelli <strong>da</strong> Universi<strong>da</strong>de do Vale do<br />
Sapucaí, como requisito parcial<br />
para obtenção do título de bacharel<br />
em Sistemas de Informação.<br />
Orientador: Professor Márcio<br />
Emílio Cruz Vono de Azevedo.<br />
Co-orientador: Professor Artur Luis<br />
Ribas Barbosa.<br />
UNIVERSIDADE DO VALE DO SAPUCAÍ<br />
POUSO ALEGRE<br />
2007
THIAGO BORBOREMA<br />
IMPACTO DA APLICAÇÃO DA METODOLOGIA <strong>XP</strong> NAS<br />
ORGANIZAÇÕES DE DESENVOLVIMENTO DE<br />
SOFTWARE<br />
Monografia defendi<strong>da</strong> e aprova<strong>da</strong> em 26/10/2007 pela banca examinadora<br />
constituí<strong>da</strong> pelos professores:<br />
____________________________________<br />
Prof. Márcio Emílio Cruz Vono de Azevedo<br />
Orientador<br />
_____________________________<br />
Prof. Evandro Luís Brandão Gomes<br />
Examinador<br />
_____________________________<br />
Prof. Ms. Paulo César do Nascimento<br />
Examinador<br />
2
3<br />
Dedico,<br />
à minha família, à Crishna<br />
sinônimo de amor e carinho e<br />
ao Thom meu pequeno grande<br />
amigão.
AGRADECIMENTOS<br />
Primeiramente a Crishna, que nos momentos mais difíceis ain<strong>da</strong> teve forças<br />
para me apoiar nessa etapa de minha vi<strong>da</strong>.<br />
A minha família, onde tenho apoio e onde consigo forças para poder continuar<br />
na empreita<strong>da</strong> que é a vi<strong>da</strong>.<br />
Aos amigos, pelo qual estimo muito. Ao orientador e amigo Márcio, ao co-<br />
orientador Artur e a DEUS que me colocou pessoas importantes.<br />
Muito Obrigado!<br />
4
“A mente que se abre a uma nova idéia<br />
jamais voltará ao seu tamanho original.”<br />
5<br />
(Albert Einstein)
BORBOREMA, Thiago. <strong>Impacto</strong> <strong>da</strong> <strong>aplicação</strong> <strong>da</strong> <strong>metodologia</strong> <strong>XP</strong> <strong>nas</strong> organizações<br />
de desenvolvimento de software. Monografia – Curso de Sistemas de Informação,<br />
Facul<strong>da</strong>de de Filosofia Ciência e Letras Eugênio Pacelli, Universi<strong>da</strong>de do vale do<br />
Sapucaí, Pouso Alegre, 2007.<br />
RESUMO<br />
Trata-se de um estudo, que apresenta o impacto do uso <strong>da</strong> <strong>metodologia</strong> ágil<br />
Extreme Programming (<strong>XP</strong>) com objetivo de obtenção de sucesso em desenvolvimento<br />
de sistemas. Baseado em estudos que demonstram falhas em projetos de software,<br />
envolvendo orçamento, cronograma, funcionali<strong>da</strong>des, causando insatisfação do cliente.<br />
Foram estu<strong>da</strong><strong>da</strong>s e desenvolvi<strong>da</strong>s as <strong>metodologia</strong>s ágeis, as quais propõem uma<br />
diminuição na burocracia do desenvolvimento de software, sendo a extreme<br />
programming um exemplo que proporciona softwares de maior quali<strong>da</strong>de e aceitação.<br />
Sendo assim, apresenta-se neste os seus conceitos e aplicações, mostrando um estudo<br />
de caso com várias empresas que aplicaram essa <strong>metodologia</strong> e demonstraram seu<br />
impacto.<br />
Palavras-Chaves: cliente, Extreme Programming, <strong>metodologia</strong> ágil, projetos.<br />
6
BORBOREMA, Thiago. <strong>Impacto</strong> <strong>da</strong> <strong>aplicação</strong> <strong>da</strong> <strong>metodologia</strong> <strong>XP</strong> <strong>nas</strong> organizações<br />
de desenvolvimento de software. Monografia – Curso de Sistemas de Informação,<br />
Facul<strong>da</strong>de de Filosofia Ciência e Letras Eugênio Pacelli, Universi<strong>da</strong>de do vale do<br />
Sapucaí, Pouso Alegre, 2007.<br />
ABSTRACT<br />
This paper is intended to present the impact of using the agile methodology<br />
Extreme Programming (<strong>XP</strong>) as a goal to obtain success on system development. The<br />
agile methodologies was developed based on researches demonstrating failures on<br />
software projects, involving budget, schedule and functionalities, demonstrating the<br />
client discontentment. These methodologies have the approach of reducing paperwork<br />
on software development. Extreme Programming is one of the approaches to increase<br />
software quality and client satisfaction. This paper introduces the Extreme<br />
Programming concepts and applications, presenting a case study with many companies<br />
that adopted this methodology and showing its impact.<br />
Keywords: client, Extreme Programming, agile methodology, impact.<br />
7
Figura 1 Práticas <strong>da</strong> <strong>XP</strong>.<br />
Figura 2 Motivos <strong>da</strong> adoção <strong>da</strong> <strong>XP</strong>.<br />
LISTA DE FIGURAS<br />
Figura 3 Utilização <strong>da</strong>s práticas <strong>da</strong> <strong>XP</strong>.<br />
Figura 4 Combinação <strong>da</strong> <strong>XP</strong> com outras <strong>metodologia</strong>s.<br />
Figura 5 Principais <strong>metodologia</strong>s usa<strong>da</strong>s com a <strong>XP</strong>.<br />
Figura 6 Dificul<strong>da</strong>des na implantação <strong>da</strong> <strong>metodologia</strong> <strong>XP</strong>.<br />
Figura 7 Práticas mais fáceis de implantar <strong>nas</strong> organizações pesquisa<strong>da</strong>s.<br />
Figura 8 Práticas mais difíceis de implantar, segundo pesquisa.<br />
Figura 9 Tipos de documentações.<br />
Figura 10 Sucesso do uso <strong>da</strong> <strong>XP</strong> na organização.<br />
8
LISTA DE ABREVIATURAS E SIGLAS<br />
ASD A<strong>da</strong>ptive Programming.<br />
DSDM Dynamic Systems Development Method.<br />
FDD Feature-Driven Development.<br />
<strong>XP</strong> Extreme Programming.<br />
<strong>XP</strong>2 Extreme Programming segun<strong>da</strong> versão.<br />
9
SUMÁRIO<br />
1 INTRODUÇÃO...................................................................................................... 12<br />
2 DESENVOLVIMENTO ÁGIL.............................................................................. 14<br />
2.1 Movimento ágil................................................................................................. 14<br />
2.2 Metodologia ágil ............................................................................................... 15<br />
3 EXTREME PROGRAMMING ............................................................................... 17<br />
3.1 Valores do <strong>XP</strong>...................................................................................................... 17<br />
3.1.1 Retorno(Feedback)......................................................................................... 18<br />
3.1.2 Comunicação.................................................................................................. 18<br />
3.1.3 Simplici<strong>da</strong>de .................................................................................................. 19<br />
3.1.4 Coragem......................................................................................................... 19<br />
3.2 Princípios do <strong>XP</strong>.................................................................................................. 20<br />
3.2.1 Feedback rápido ............................................................................................. 20<br />
3.2.2 Simplici<strong>da</strong>de presumi<strong>da</strong> ................................................................................. 21<br />
3.2.3 Mu<strong>da</strong>nças incrementais .................................................................................. 21<br />
3.2.4 Aceitação <strong>da</strong>s mu<strong>da</strong>nças................................................................................. 21<br />
3.2.5 Alta quali<strong>da</strong>de ................................................................................................ 22<br />
3.2.6 Ensinar aprendendo ........................................................................................ 22<br />
3.2.7 Investimento inicial pequeno .......................................................................... 22<br />
3.2.8 Jogar para ganhar ........................................................................................... 22<br />
3.2.9 Experimentação concreta................................................................................ 23<br />
3.2.10 Comunicação honesta e franca...................................................................... 23<br />
3.2.11 Trabalhar a favor dos instintos do pessoal e não contra eles.......................... 23<br />
3.2.12 Aceitação de responsabili<strong>da</strong>des..................................................................... 24<br />
3.2.13 A<strong>da</strong>ptação local............................................................................................ 24<br />
3.2.14 Viajar com pouca bagagem........................................................................... 24<br />
3.2.15 Métricas genuí<strong>nas</strong>......................................................................................... 25<br />
3.3 Práticas do <strong>XP</strong>..................................................................................................... 25<br />
3.3.1 A equipe (whole team).................................................................................... 26<br />
3.3.2 Jogo do planejamento(planning game) ........................................................... 26<br />
3.3.3 Teste de aceitação(customer tests) .................................................................. 27<br />
3.3.4 Pequenos lançamentos(small releases) ........................................................... 27<br />
3.3.5 Design simples(simple design)........................................................................ 27<br />
3.3.6 Programação em par(pair programming)........................................................ 28<br />
3.3.7 Desenvolvimento orientado a testes(test-driven development)......................... 29<br />
3.3.8 Refinamento do design(refactoring) ............................................................... 29<br />
3.3.9 Integração contínua(continuous integration)................................................... 29<br />
3.3.10 Posse coletiva(collective ownership)............................................................. 30<br />
3.3.11 Padrões de codificação(coding stan<strong>da</strong>rds) .................................................... 30<br />
3.3.12 Metáfora(metaphor) ..................................................................................... 31<br />
3.3.13 Ritmo saudável(sustainable pace) ................................................................ 31<br />
3.4 Mu<strong>da</strong>nças no <strong>XP</strong> ................................................................................................. 31<br />
3.4.1 Valores........................................................................................................... 32<br />
3.4.2 Princípios ....................................................................................................... 32<br />
3.4.3 Práticas........................................................................................................... 32<br />
4 ESTUDO DE CASO............................................................................................... 33<br />
5 CONSIDERAÇÕES FINAIS................................................................................. 41
REFERÊNCIAS BIBLIOGRÁFICAS..................................................................... 42<br />
ANEXOS ................................................................................................................... 44<br />
Anexo I................................................................................................................... 44<br />
11
1 INTRODUÇÃO<br />
Com o mercado ca<strong>da</strong> vez mais competitivo, técnicas de programação surgem<br />
para suprir as necessi<strong>da</strong>des e agilizar o processo de desenvolvimento de sistemas. Por<br />
isso as organizações estão ca<strong>da</strong> vez mais preocupa<strong>da</strong>s em ter quali<strong>da</strong>de em seus<br />
processos, visando o produto final e um dos problemas que afetam o desenvolvimento<br />
de software é a enorme quanti<strong>da</strong>de de detalhes que precisam ser considerados.<br />
Normalmente, ao especificar um sistema, o cliente tem o conhecimento de<br />
alguns aspectos do software que deseja, mas muitos outros só ficam claros quando ele<br />
tem a oportuni<strong>da</strong>de de utilizar o sistema. Portanto, o cliente não especifica estes<br />
detalhes no início do projeto por uma razão muito simples: ele não os conhece (BECK,<br />
2000). Além do mais, mesmo que tais detalhes fossem conhecidos previamente, seria<br />
muito difícil especificá-los através de documentos devido à grande quanti<strong>da</strong>de de<br />
elementos que precisariam ser descritos.<br />
O movimento ágil conseguiu abertura para muitas novas idéias de<br />
desenvolvimento de softwares, mas ganhou força em 2001 com a publicação do<br />
manifesto ágil de desenvolvimento de software, que define os seguintes princípios:<br />
Indivíduos e interações são mais importantes que processos e ferramentas.<br />
Software funcionando é mais importante do que documentação completa e<br />
detalha<strong>da</strong>.<br />
Colaboração com o cliente é mais importante do que negociação de<br />
contratos.<br />
A<strong>da</strong>ptação a mu<strong>da</strong>nças é mais importante do que seguir o plano inicial.<br />
Esses princípios buscam tornar o desenvolvimento de software um pouco mais<br />
simples, com quali<strong>da</strong>de e rapidez do que os modelos tradicionais, onde o qual tem tido<br />
um aumento de adeptos <strong>da</strong> nova maneira de desenvolver sistemas.<br />
O desenvolvimento ágil se baseia na premissa de que o cliente aprende ao<br />
longo do desenvolvimento, à medi<strong>da</strong> que é capaz de manipular o sistema. O<br />
aprendizado decorre do feedback que o software oferece ao cliente quando este o<br />
manipula, pois está presente ao longo de todo o desenvolvimento do software e exerce<br />
um papel fun<strong>da</strong>mental (MANHÃES, 2004).<br />
12
A aplicabili<strong>da</strong>de dos métodos ágeis em geral pode ser examina<strong>da</strong> de múltiplas<br />
perspectivas. Da perspectiva do produto, métodos ágeis são mais adequados quando os<br />
requisitos estão emergindo e mu<strong>da</strong>ndo rapi<strong>da</strong>mente, embora não exista um consenso<br />
completo neste ponto (COHEN et al, 2004).<br />
Hoje em dia com as rápi<strong>da</strong>s mu<strong>da</strong>nças, seja em tecnologia, requisitos e perfil<br />
do consumidor as empresas têm que se a<strong>da</strong>ptar a essa nova reali<strong>da</strong>de.<br />
Com a <strong>metodologia</strong> ágil, que consiste em um conjunto de práticas, definiu um<br />
novo conceito e a mais conheci<strong>da</strong> é Extreme Programming (<strong>XP</strong>), que é uma técnica de<br />
desenvolvimento de software que vai contra uma série de premissas adota<strong>da</strong>s por<br />
métodos mais tradicionais de desenvolvimento, <strong>XP</strong> consiste numa série de práticas e<br />
regras que permitem aos programadores desenvolver software de uma forma dinâmica e<br />
muito ágil considerando aspectos que se aplicam no conceito de agili<strong>da</strong>de, custo, escopo<br />
e quali<strong>da</strong>de no desenvolvimento de sistemas (BECK, 2000). O objetivo deste projeto é<br />
apresentar as práticas <strong>da</strong> <strong>XP</strong> e sua aplicabili<strong>da</strong>de dentro <strong>da</strong>s organizações de<br />
desenvolvimento de software, buscando novos adeptos e levando a <strong>metodologia</strong> ao<br />
conhecimento amplo a todos.<br />
Este trabalho busca contribuir com empresas e pesquisadores que tenham<br />
interesse em conhecer a <strong>metodologia</strong> <strong>XP</strong> em seus princípios e práticas aplicados em<br />
organização e algumas de suas características quanto a sua <strong>aplicação</strong>.<br />
Este trabalho está organizado em cinco capítulos, ao qual, no capítulo dois trata<br />
do desenvolvimento ágil, já no capítulo três abor<strong>da</strong> Extreme Programming, no capítulo<br />
quatro trata do estudo de caso com empresas que utilizam <strong>XP</strong> como <strong>metodologia</strong> de<br />
desenvolvimento, no capítulo cinco será analisado o estudo de caso.<br />
13
2 DESENVOLVIMENTO ÁGIL<br />
O manifesto de desenvolvimento ágil, no qual, questionam práticas de<br />
engenharia de software, foi proposto por um grupo de especialistas em desenvolvimento<br />
de software por causa de diversos fracassos, estouros de prazos e orçamento dos<br />
métodos tradicionais de desenvolvimento de software.<br />
O manifesto defende o que necessita ser valorizado ao se desenvolver software,<br />
a comunicação entre os indivíduos, o código fonte funcional, a colaboração com o<br />
cliente (AGILCOOP, 2007).<br />
2.1 Movimento ágil<br />
Segundo Manhães (2007), o movimento ágil foi iniciado por programadores e<br />
consultores experientes, originando uma nova forma de desenvolvimento de software<br />
em curto tempo com quali<strong>da</strong>de. Porém, só ganhou forças com a publicação do<br />
manifesto ágil em fevereiro de 2001.<br />
O movimento define alguns princípios:<br />
Indivíduos e interações são mais importantes que processos e ferramentas.<br />
Software funcionando é mais importante do que documentação completa e<br />
detalha<strong>da</strong>.<br />
Colaboração com o cliente é mais importante do que negociação de<br />
contratos.<br />
A<strong>da</strong>ptação a mu<strong>da</strong>nças é mais importante do que seguir o plano inicial.<br />
O desenvolvimento de software ganhou uma nova forma de criação com maior<br />
rapidez e aceitação do cliente, ou seja, o manifesto ágil não rejeita os processos, a<br />
documentação, a negociação de contratos ou o planejamento, mas, simplesmente mostra<br />
que eles possuem importância secundária quando comparado com os indivíduos e<br />
14
interações, com o software executável, com a colaboração do cliente e as respostas<br />
rápi<strong>da</strong>s a mu<strong>da</strong>nças e alterações.<br />
2.2 Metodologia ágil<br />
Como reação às <strong>metodologia</strong>s tradicionais, considera<strong>da</strong>s muito pesa<strong>da</strong>s para<br />
equipes peque<strong>nas</strong>, um novo grupo de <strong>metodologia</strong>s surgiu, chamado de <strong>metodologia</strong>s<br />
ágeis, entre as quais a <strong>XP</strong> se enquadra e, propõem uma diminuição na burocracia do<br />
desenvolvimento de software (NAPHTA, 2007).<br />
Além <strong>da</strong> <strong>XP</strong> existem outras <strong>metodologia</strong>s ágeis, entre elas:<br />
1. Crystal Clear.<br />
2. Scrum.<br />
3. DSDM.<br />
4. FDD.<br />
5. ASD.<br />
A <strong>XP</strong> foi cria<strong>da</strong> nos Estados Unidos ao final <strong>da</strong> déca<strong>da</strong> de 90 e vem fazendo<br />
sucesso em diversos países, por aju<strong>da</strong>r a criar sistemas de melhor quali<strong>da</strong>de, em menor<br />
tempo e de forma mais econômica que o habitual.<br />
Indica<strong>da</strong> para equipes peque<strong>nas</strong> e médias de desenvolvimento, às quais tem que<br />
li<strong>da</strong>r com requisitos vagos ou em constante mu<strong>da</strong>nça surgiu com a proposta de aumentar<br />
o foco <strong>nas</strong> pessoas e não nos processos de desenvolvimento. Além disso, existe a<br />
preocupação de se gastar menos tempo com a documentação e mais com a resolução do<br />
problema, gerando produtos com melhor aceitação e quali<strong>da</strong>de (IMPROVEIT, 2007).<br />
Tais objetivos são alcançados devido a um conjunto de valores, práticas e<br />
princípios, que diferem <strong>da</strong> forma tradicional de se desenvolver software.<br />
Segundo Fowler (2007), as duas principais diferenças entre as <strong>metodologia</strong>s<br />
ágeis e as tradicionais:<br />
Elas são a<strong>da</strong>ptativas, ao invés de previsivas – as <strong>metodologia</strong>s tradicionais<br />
tentam planejar uma grande parte do software em muitos detalhes com<br />
bastante antecedência. Por isto elas são resistentes à mu<strong>da</strong>nça. Já <strong>nas</strong><br />
<strong>metodologia</strong>s ágeis, as mu<strong>da</strong>nças de requisitos durante o desenvolvimento<br />
15
são bem-vin<strong>da</strong>s. Elas tendem a ajustar o desenvolvimento do software às<br />
mu<strong>da</strong>nças de requisitos, tornando-se mais flexíveis.<br />
Elas são orienta<strong>da</strong>s às pessoas, não aos processos – a meta <strong>da</strong>s <strong>metodologia</strong>s<br />
de desenvolvimento é desenvolver um processo que vai funcionar <strong>da</strong> mesma<br />
maneira, independente de quem o esteja utilizando. Metodologias ágeis<br />
levam mais em conta a habili<strong>da</strong>de <strong>da</strong> equipe de desenvolvimento e, tendem<br />
por isto, a se ajustar à equipe.<br />
Pesquisas feitas pelo Standish Group International em 1994, apontam que<br />
ape<strong>nas</strong> 16,2% dos projetos de software atingiam sucesso, já em 2002 esta taxa havia<br />
subido para 34%, ou seja, aumento de 100% em 8 anos. Mas estas taxas ain<strong>da</strong> se<br />
encontram muito aquém do esperado pelo mercado.<br />
As <strong>metodologia</strong>s utiliza<strong>da</strong>s nos projetos pesquisados eram as mais varia<strong>da</strong>s,<br />
entre elas o modelo em cascata, modelo interativo e alguns modelos de prototipação<br />
(JAVAFREE, 2007).<br />
16
3 EXTREME PROGRAMMING<br />
<strong>XP</strong> é uma abreviação de Extreme Programming (programação extrema) que é<br />
uma <strong>metodologia</strong> ágil com foco em quali<strong>da</strong>des de projetos e agili<strong>da</strong>de de equipes .<br />
Segundo Beck (2000) a <strong>XP</strong> é uma maneira leve, eficiente, de baixo risco,<br />
flexível, previsível, científica e diverti<strong>da</strong> de se desenvolver software. Distingue-se de<br />
outras <strong>metodologia</strong>s por:<br />
Feedback rápido, concreto e contínuo.<br />
Abor<strong>da</strong>gem incremental de planejamento, obtendo um plano geral do<br />
projeto.<br />
Confiança nos testes automatizados escritos por programadores e clientes<br />
para monitorar o desenvolvimento, evolução e detecção de erros nos<br />
projetos, dentre outras.<br />
É volta<strong>da</strong> para projetos cujos requisitos são vagos e mu<strong>da</strong>m com freqüência,<br />
equipes peque<strong>nas</strong> (em geral, 12 desenvolvedores), desenvolvimento de sistemas<br />
orientados a objeto e incremental.<br />
<strong>XP</strong> é um processo de desenvolvimento que busca assegurar que o cliente<br />
receba o máximo de valor de ca<strong>da</strong> dia de trabalho <strong>da</strong> equipe de desenvolvimento e é<br />
organizado em torno de um conjunto de valores e práticas que atuam de forma<br />
harmônica e coesa para assegurar que o cliente sempre receba um alto retorno do<br />
investimento em software (MANHÃES, 2004).<br />
3.1 Valores <strong>da</strong> <strong>XP</strong><br />
<strong>XP</strong> enfatiza o desenvolvimento rápido do projeto e visa garantir a satisfação do<br />
cliente, além de favorecer o cumprimento <strong>da</strong>s estimativas, proporcionando um<br />
agradável ambiente de desenvolvimento de software para os seus seguidores, que são<br />
conduzidos por quatro valores: Retorno(feedback), Comunicação, Simplici<strong>da</strong>de e<br />
Coragem (SOARES, 2007).<br />
17
3.1.1 Retorno (Feedback)<br />
do cliente.<br />
O retorno constante significa que o programador terá informações do código e<br />
A informação do código é <strong>da</strong><strong>da</strong> pelos testes, que indicam os erros tanto<br />
individuais quanto do software integrado (SOARES, 2007).<br />
O cliente recebe o sistema o quanto antes, afim de <strong>da</strong>r um retorno rápido,<br />
guiando assim o desenvolvimento do software (NAPHTA, 2007).<br />
Pode-se, com isso, reavaliar necessi<strong>da</strong>des com relação às funcionali<strong>da</strong>des<br />
apresenta<strong>da</strong>s, e também com relação às futuras.<br />
3.1.2 Comunicação<br />
A forma de comunicação é um fator chave na <strong>XP</strong>: procura-se o máximo<br />
possível comunicar-se pessoalmente, evitando o uso de telefone e o envio de mensagens<br />
por correio eletrônico (SOARES, 2007). É através dela que o cliente e o time irão tratar<br />
dos detalhes do projeto, devendo ser feito com atenção e agili<strong>da</strong>de, buscando o melhor<br />
relacionamento possível entre clientes e desenvolvedores e entre os desenvolvedores e o<br />
gerente do projeto.<br />
Segundo Beck (2000), analisando os problemas que ocorreram nos projetos,<br />
muitos foram provocados por alguém que não conversou com outro sobre algo<br />
importante. Algumas vezes o programador não fala para os outros uma mu<strong>da</strong>nça<br />
fun<strong>da</strong>mental no projeto, outras vezes, o programador não faz a pergunta correta para<br />
cliente, fazendo com que uma importante decisão de domínio seja prejudica<strong>da</strong>.<br />
A comunicação é o principal valor <strong>da</strong> <strong>XP</strong>, a maioria <strong>da</strong>s práticas está basea<strong>da</strong><br />
nela, e se esta não for eficiente, pode causar problemas e atrasos no desenvolvimento do<br />
sistema (NAPHTA, 2007).<br />
18
3.1.3 Simplici<strong>da</strong>de<br />
Conseguindo que o time enten<strong>da</strong> essa importância, é possível simplificar o<br />
sistema podendo até diminuir o número de programadores ou o tempo de<br />
implementação, ou seja, reduzir o valor do projeto.<br />
<strong>XP</strong> aposta que é melhor fazer algo simples e de desenvolvimento rápido hoje, e<br />
ter de gastar um pouco mais no futuro se for necessário para fazer modificações<br />
necessárias do que implementar algo complicado hoje que talvez não venha a ser usado<br />
(NAPHTA, 2007).<br />
Ao codificar uma funcionali<strong>da</strong>de devem se preocupar ape<strong>nas</strong> com os<br />
problemas de hoje e deixar os problemas do futuro para o futuro, sem tentar prevê-lo,<br />
pois raramente irá acertar.<br />
Evitando especular sobre o futuro, o time ganhará tempo e permite que o<br />
cliente tenha acesso à funcionali<strong>da</strong>de rapi<strong>da</strong>mente, podendo utilizá-lo no seu negócio,<br />
gerando valor e tornando viável que ele dê feedback para a equipe o quanto antes<br />
(MANHÃES, 2004).<br />
Segundo Beck (2000), simplici<strong>da</strong>de e comunicação têm uma relação de suporte<br />
mútuo. Quanto maior a comunicação, mais claramente se observa o que precisa ser feito<br />
e tem-se mais certeza do que não precisa.<br />
3.1.4 Coragem<br />
Como o sistema é desenvolvido de forma incremental, o time estará sempre<br />
fazendo manutenção do software ou adicionando novas funcionali<strong>da</strong>des. Algumas vezes<br />
será necessário alterar algo que estava funcionando corretamente, o que poderá gerar<br />
falha. Daí a necessi<strong>da</strong>de do time ter coragem e acreditar que com as práticas e valores<br />
<strong>da</strong> <strong>XP</strong> o software será desenvolvido de forma segura e ágil.<br />
Segundo MANHÃES (2004), <strong>XP</strong> não tem uma solução mágica para eliminar<br />
esse risco, ele existe como em qualquer outro projeto, o que mu<strong>da</strong> é a forma de li<strong>da</strong>r.<br />
19
Equipes <strong>XP</strong> acreditam que errar é natural e quebrar o que vinha funcionando pode<br />
acontecer eventualmente. É necessário ter coragem para li<strong>da</strong>r com esse risco, o que em<br />
<strong>XP</strong> se traduz em confiança nos seus mecanismos de proteção.<br />
A comunicação dá suporte à coragem porque abre a possibili<strong>da</strong>de para mais<br />
experiências de alto risco e alta recompensa. A simplici<strong>da</strong>de também dá suporte a<br />
coragem, pois podemos ser muito mais corajosos com um sistema simples e é menos<br />
provável que estrague o sistema. O feedback concreto dá suporte à coragem, porque<br />
temos a confiança de experimentar algo extremo no código e obter os resultados<br />
positivos nos testes, ou não (BECK, 2000).<br />
3.2 Princípios <strong>da</strong> <strong>XP</strong><br />
Alguns princípios <strong>da</strong> <strong>XP</strong> vão contra as técnicas de engenharia de software<br />
tradicionais, uma vez que nela o foco principal é <strong>nas</strong> pessoas e não nos processos<br />
formais.<br />
<strong>XP</strong> coloca seus princípios em níveis extremos, por isso extreme no nome e<br />
incorpora os valores neles.<br />
3.2.1 Feedback Rápido<br />
É importante o cliente fornecer esse feedback em relação ao sistema o mais<br />
rápido possível, pois o tempo decorrido entre uma ação e seu feedback é fun<strong>da</strong>mental<br />
para o progresso do projeto e aprendizado <strong>da</strong> equipe.Tendo este feedback rápido pode-<br />
se interpretá-lo e aplicar o que é aprendido no sistema o mais rápido possível.<br />
Os programadores aprendem qual a melhor forma de se projetar, implementar e<br />
testar o sistema, e realimentam o que foi aprendido em segundos ou minutos, em vez de<br />
dias, sema<strong>nas</strong> ou meses (BECK, 2000).<br />
20
3.2.2 Simplici<strong>da</strong>de presumi<strong>da</strong><br />
Tratar ca<strong>da</strong> problema <strong>da</strong> maneira mais simples possível, <strong>XP</strong> recomen<strong>da</strong> que os<br />
trabalhos de hoje sejam resolvidos hoje e que os desenvolvedores confiem em suas<br />
habili<strong>da</strong>des.<br />
Segundo Beck(2000), esse princípio os programadores têm mais dificul<strong>da</strong>des<br />
de aceitar. Tradicionalmente, somos orientados a planejar para o futuro, para se poder<br />
reutilizar.<br />
3.2.3 Mu<strong>da</strong>nças incrementais<br />
Grandes mu<strong>da</strong>nças de uma só vez em qualquer projeto é muito difícil que dê<br />
certo, no <strong>XP</strong> o projeto é alterado gradualmente em seu tempo de desenvolvimento. Essa<br />
mu<strong>da</strong>nça deve ser planeja<strong>da</strong> e estu<strong>da</strong><strong>da</strong> para que não atrapalhe o funcionamento normal<br />
do sistema, a própria <strong>metodologia</strong> <strong>XP</strong> precisa ser feita em pequenos passos (BECK,<br />
2000).<br />
3.2.4 Aceitação <strong>da</strong>s mu<strong>da</strong>nças<br />
Como em todo <strong>XP</strong>, a aceitação de mu<strong>da</strong>nças é bem vin<strong>da</strong>, e não questiona<strong>da</strong>.<br />
Segundo Beck (2000), a melhor estratégia é aquela que preserva o maior números de<br />
opções enquanto resolve o seu problema mais urgente.<br />
As mu<strong>da</strong>nças servem também como aprendizado, amadurecimento <strong>da</strong> equipe<br />
de desenvolvimento de software.<br />
21
3.2.5 Alta quali<strong>da</strong>de<br />
Esse ponto não se tem negociação, quali<strong>da</strong>de é priori<strong>da</strong>de em projetos <strong>XP</strong>,<br />
sempre em busca <strong>da</strong> excelência, caso contrário o projeto foi um fracasso.<br />
3.2.6 Ensinar aprendendo<br />
É proposto que ao contrário de criar “manuais doutrinários” mostrando passo-<br />
a-passo o que? E como fazer? O foco é ensinar estratégias para aprender quantos testes,<br />
refatoração e quanto de to<strong>da</strong>s as outras coisas deve ser feito (BECK, 2000).<br />
3.2.7 Investimento inicial pequeno<br />
Em projetos em que os recursos são supérfluos, é um caminho para o desastre,<br />
por isso temos que ter em mente ape<strong>nas</strong> requisitos necessários.<br />
Orçamento apertado força o programador e o cliente a cortar requisitos e<br />
reduzir propostas, pois a concentração gera<strong>da</strong> leva a fazer um bom trabalho.<br />
Segundo Beck (2000), na maioria <strong>da</strong>s vezes, todos podem viver com menos<br />
recursos do que gostariam, mas atenta também que recursos apertados demais pode<br />
gerar um sistema na<strong>da</strong> interessante.<br />
3.2.8 Jogar para ganhar<br />
Muitas equipes de desenvolvimento de software seguem procedimentos<br />
estabelecidos em reuniões, para se guar<strong>da</strong>rem de futuras falhas no projeto, isto é jogar<br />
22
para não perder, caso no final o projeto não seja bem sucedido, a equipe se resguar<strong>da</strong><br />
que seguiu os procedimentos.<br />
Extreme programming acredita que o desenvolvimento de software jogado para<br />
ganhar faz tudo que aju<strong>da</strong> o time a chegar na excelência do projeto e na<strong>da</strong> <strong>da</strong>quilo que<br />
não alcançar o objetivo (BECK, 2000).<br />
3.2.9 Experimentação concreta<br />
Segundo Beck (2000), to<strong>da</strong> decisão abstrata deve ser testa<strong>da</strong>, quanto mais se<br />
testa, mais os riscos se diminuem, pois a ca<strong>da</strong> decisão toma<strong>da</strong> e não testa<strong>da</strong> existe uma<br />
probabili<strong>da</strong>de de que a decisão esteja erra<strong>da</strong>, e gera insatisfação do cliente e até mesmo<br />
<strong>da</strong> equipe.<br />
3.2.10 Comunicação honesta e franca<br />
A comunicação é um fator importante, e esse princípio permite o programador<br />
a ter liber<strong>da</strong>de em falar um ao outro onde o código encontra-se com problema,<br />
comunicar má noticias a gerência e à clientes.<br />
Beck (2007) afirma, que os desenvolvedores precisam ter liber<strong>da</strong>de de<br />
expressar seus receios e precisam receber apoio.<br />
3.2.11 Trabalhar a favor dos instintos do pessoal e não contra eles<br />
Pessoas gostam de aprende, de ganhar, de interagir com outras pessoas, de<br />
estar no controle e que confiem nelas. Em particular desenvolvedores gostam de fazer<br />
um bom trabalho e que seus softwares funcione.<br />
23
Se a <strong>XP</strong> não trabalhar com os interesses de curto prazo do pessoal, ela estará<br />
destina<strong>da</strong> ao fracasso <strong>da</strong>s <strong>metodologia</strong>s.<br />
2000).<br />
<strong>XP</strong> é como a observação de programadores no seu habitat natural (BECK,<br />
3.2.12 Aceitação de responsabili<strong>da</strong>des<br />
A cooperação do time depende <strong>da</strong> responsabili<strong>da</strong>de perante suas tarefas. Para<br />
que seja aplica<strong>da</strong> de melhor maneira possível a responsabili<strong>da</strong>de deve ser aceita e não<br />
imposta, sendo que as necessi<strong>da</strong>des do time, em qualquer âmbito, devem ser atendi<strong>da</strong>s<br />
por um elemento voluntário do time, por pior que ela seja (BECK, 2000).<br />
3.2.13 A<strong>da</strong>ptação local<br />
Na adoção <strong>da</strong> <strong>metodologia</strong> ágil extreme programming, deve-se a<strong>da</strong>ptar o seu<br />
ambiente de trabalho às condições em que se propõe desenvolver sistemas.<br />
Adotar <strong>XP</strong> não significa seguir suas práticas metodicamente, e sim, saber<br />
a<strong>da</strong>ptá-las à sua reali<strong>da</strong>de (BECK, 2000).<br />
3.2.14 Viajar com pouca bagagem<br />
Times <strong>XP</strong> estão sempre preparados para eventuais mu<strong>da</strong>nças, mas mantendo<br />
sempre o padrão de valor para o cliente, testes e código (BECK, 2000).<br />
Essas mu<strong>da</strong>nças podem ser o design, o cliente que resolve mu<strong>da</strong>r de idéia,<br />
membro <strong>da</strong> equipe que vai embora ou mesmo uma tecnologia que não supre as<br />
necessi<strong>da</strong>des do projeto.<br />
24
3.2.15 Métricas genuí<strong>nas</strong><br />
Para obter o controle do desenvolvimento de software adota-se certas métricas,<br />
às quais forçam um nível de detalhamento excessivo que não é suportado pelos<br />
desenvolvedores, por isso, devem-se adequar as métricas que estejam correlaciona<strong>da</strong>s<br />
ao perfil de trabalho do time (BECK, 2000). Por isso equipes <strong>XP</strong> estimam as estórias<br />
dos cliente, e sempre<br />
3.3 Práticas <strong>da</strong> <strong>XP</strong><br />
Conjunto de ativi<strong>da</strong>des, conforme figura 1, que as equipes de <strong>XP</strong> tem como<br />
base para seu desempenho, tem-se uma confiança muito grande <strong>nas</strong> práticas onde, os<br />
pontos fracos de uma se compensa nos pontos fortes de outra.<br />
Aplica<strong>da</strong>s em conjunto o desenvolvimento de software funciona melhor<br />
tornando mais eficaz.<br />
Figura 1: Práticas <strong>XP</strong><br />
Fonte: <strong>XP</strong>ROGRAMMING, 2007<br />
25
3.3.1 A equipe (whole team)<br />
seguintes papéis:<br />
Todos em um projeto <strong>XP</strong> são parte de uma equipe, no qual é composta pelos<br />
Desenvolvedor: É a pessoa que constrói o software, análise, projeta e<br />
codifica o sistema.<br />
Re<strong>da</strong>tor Técnico: Auxilia a equipe na parte de documentação do projeto.<br />
Analista de Teste: Aju<strong>da</strong> o cliente a definir requerimentos e procura fazer<br />
26<br />
com que eventuais defeitos do sistema sejam identificados o quanto antes.<br />
Gerente: Responsável pela parte administrativa e relacionamento com o<br />
cliente, garante os recursos necessários para o projeto.<br />
Coach: Pessoa com responsabili<strong>da</strong>de técnica do projeto, orienta a equipe e<br />
controla a <strong>aplicação</strong> <strong>da</strong> <strong>XP</strong>.<br />
3.3.2 Jogo do planejamento (planning game)<br />
Esta prática define estimativas e priori<strong>da</strong>des. Em <strong>XP</strong> todo projeto é dividido<br />
em release e iterações, com isso, equipe e cliente podem se reunir para rever o<br />
planejamento.<br />
O cliente em ca<strong>da</strong> reunião recebe um cartão no qual descreve as<br />
funcionali<strong>da</strong>des que deseja do sistema, que se chama de estórias, e no jogo do<br />
planejamento se estima ca<strong>da</strong> estória para o cliente saber o custo <strong>da</strong> implementação<br />
(JAVAFREE, 2007).<br />
Como uma estória não descreve os detalhes <strong>da</strong> funcionali<strong>da</strong>de, quando um par<br />
de desenvolvedores for implementá-la, devem buscar estes detalhes com o cliente. As<br />
estórias também são usa<strong>da</strong>s como uma forma de documentação do projeto.<br />
Segundo Beck (2000), o desenvolvimento de software é sempre um diálogo<br />
evolutivo entre o possível e o desejável, as pessoas <strong>da</strong> área do negócio precisam decidir<br />
sobre: o escopo, priori<strong>da</strong>de, composição <strong>da</strong>s versões e <strong>da</strong>tas de entrega.
A área de negócio não consegue tomar essas decisões no vácuo, a partir de<br />
na<strong>da</strong>, a área de desenvolvimento precisa tomar decisões técnicas para auxiliar <strong>nas</strong><br />
decisões de negócio.<br />
3.3.3 Teste de aceitação (customer tests)<br />
Verifica se a interação entre as classes que implementam uma funcionali<strong>da</strong>de<br />
atende a necessi<strong>da</strong>de descrita na estória do cliente, facilitando ain<strong>da</strong> mais a interação<br />
entre as partes.<br />
3.3.4 Pequenos lançamentos (small releases)<br />
comprando.<br />
Liberação de pequena versão ao qual o cliente testa parte do sistema que está<br />
Como o objetivo <strong>da</strong> <strong>XP</strong> é gerar um fluxo contínuo de valor para o cliente, as<br />
releases devem ser curtas. Assim, coloca-se rapi<strong>da</strong>mente em produção um conjunto<br />
reduzido de funcionali<strong>da</strong>des, para que o cliente possa beneficiar-se o quanto antes. Ca<strong>da</strong><br />
vez que o sistema for colocado em produção, novas funcionali<strong>da</strong>des deverão ser<br />
adiciona<strong>da</strong>s gerando maior valor agregado ao produto final (MANHÃES, 2004).<br />
3.3.5 Design simples (simple design)<br />
A equipe em ca<strong>da</strong> interação(estória) pensa em uma arquitetura simples em<br />
questão, mesmo conhecendo interações futuras, isto aju<strong>da</strong> no caso de haver alterações<br />
nos requisitos.<br />
Ao desenvolver um código, deve-se focar em atender às necessi<strong>da</strong>des <strong>da</strong><br />
funcionali<strong>da</strong>de que está sendo implementa<strong>da</strong>, sem preocupar-se em prepará-lo para<br />
27
necessi<strong>da</strong>des futuras. Isso leva a um desenvolvimento muito mais ágil (MANHÃES,<br />
2004).<br />
O projeto correto é aquele que:<br />
1. Executa todos os testes.<br />
2. Não possui lógica duplica<strong>da</strong>.<br />
3. Expressa to<strong>da</strong>s as intenções importantes para os programadores.<br />
4. Tem o menor número possível de classes e métodos.<br />
Ca<strong>da</strong> parte do projeto do sistema precisa justificar sua existência nesses termos (BECK,<br />
2000).<br />
3.3.6 Programação em par (pair programming)<br />
Estilo de programação ao qual se tem uma segurança na redução de risco do<br />
projeto. Um desenvolver programa (condutor) e o outro fazem uma inspeção no código<br />
gerado (navegador). Normalmente o navegador é o programador com maior experiência<br />
e o condutor novato ou com experiência menor, e este, que fica na condição de gerar os<br />
comando, enquanto o outro, o navegador, trabalha como um instrutor, gerando assim<br />
uma redução de bugs, aprendizado rápido, solução mais simples e eficaz para o<br />
problema.<br />
Está prática consegue-se uniformizar o nível dos desenvolvedores <strong>da</strong> equipe,<br />
logo, todos terão conhecimento do projeto como um todo (MANHÃES, 2004).<br />
A programação em par é dinâmica, se duas pessoas formam um par pela<br />
manhã, à tarde elas podem facilmente formar duplas com outros colegas (BECK, 2000).<br />
28
3.3.7 Desenvolvimento orientado a testes (test-driven development)<br />
Segundo Manhães (2004), uma equipe <strong>XP</strong> está acostuma<strong>da</strong> com os teste, pois<br />
assim garante o funcionamento pleno do sistema, primeiro cria-se o teste unitário de<br />
ca<strong>da</strong> funcionali<strong>da</strong>de antes <strong>da</strong> codificação. O uso de ferramentas de automação de testes<br />
poderá reduzir o esforço desta prática. Dessa maneira, pode-se melhorar o entendimento<br />
<strong>da</strong>s necessi<strong>da</strong>des, o design e mantendo a simplici<strong>da</strong>de do código. Sua principal<br />
importância é a alta quali<strong>da</strong>de do sistema<br />
Os programadores escrevem testes de uni<strong>da</strong>de para que sua confiança na<br />
operação do programa possa se tornar parte do programa. O resultado é um programa<br />
que se torna ca<strong>da</strong> vez mais confiável com o tempo, tornando-se capaz de aceitar<br />
modificações, e não menos (BECK, 2000).<br />
3.3.8 Refinamento do design (refactoring)<br />
A equipe altera peque<strong>nas</strong> partes do sistema, freqüentemente, sempre que<br />
encontram uma oportuni<strong>da</strong>de para melhorar o código, <strong>da</strong>ndo maior clareza (leitura) do<br />
código, tendo um reaproveitamento, evitando a duplicação de código-fonte e fácil de ser<br />
compreendido.<br />
Segundo Beck (2000), a refatoração é feita quando o programa necessita,<br />
quando o sistema requer código duplicado, e ain<strong>da</strong> mantendo todos os testes<br />
funcionando.<br />
3.3.9 Integração contínua (continuous integration)<br />
A ca<strong>da</strong> nova funcionali<strong>da</strong>de produzi<strong>da</strong> e testa<strong>da</strong> integrar à versão final do<br />
sistema, sempre tendo a versão atualiza<strong>da</strong>.<br />
29
Como se trata de uma equipe, pode ocorrer de dois ou mais desenvolvedores<br />
terem que alterar determinados arquivos, com isso, o objetivo é ter o código fonte<br />
sempre atualizado, utiliza-se um sistema de controle de versão ou repositório.<br />
Com isto, pequenos problemas de integração podem ser descobertos e<br />
corrigidos logo no início (MANHÃES, 2004).<br />
3.3.10 Posse coletiva (collective ownership)<br />
Todos em um projeto tem acesso a todo o código e liber<strong>da</strong>de para alterar, por<br />
isso os pares de programadores se revezam ou seja, o código é coletivo, todos são<br />
responsáveis por ele.<br />
Na <strong>XP</strong>, todos são responsáveis pelo sistema inteiro. Nem todos conhecem<br />
to<strong>da</strong>s as partes igualmente bem, mas todos sabem um pouco sobre ca<strong>da</strong> parte. Se um par<br />
está trabalhando e vê uma oportuni<strong>da</strong>de de melhorar o código, eles vão em frente e o<br />
melhoram (BECK, 2000).<br />
Segundo Manhães (2004), como outros irão ler o código no futuro próximo, é<br />
importante que ele seja sempre escrito <strong>da</strong> maneira mais legível possível. Por isto é o que<br />
garantirá que a equipe conseguirá continuar a implementar o sistema e leva a equipe a<br />
ser mais ágil no desenvolvimento.<br />
Esta prática depende fortemente de duas outras: refatoração e o<br />
desenvolvimento guiado por testes.<br />
3.3.11 Padrões de codificação (coding stan<strong>da</strong>rds)<br />
devem seguir.<br />
A equipe <strong>XP</strong> tem que criar regras para programação, um padrão que todos<br />
A equipe deve se comunicar de forma clara através do código, assim como faz<br />
verbalmente ou através de modelos. Para aju<strong>da</strong>r neste sentido, a <strong>XP</strong> sugere a utilização<br />
de padrões de codificação (MANHÃES, 2004).<br />
30
O Padrão adotado deve exigir a menor quanti<strong>da</strong>de de trabalho possível,<br />
consistente com a regra do “uma e somente uma vez” (sem código duplicado). O padrão<br />
deve enfatizar a comunicação. Finalmente, o padrão deve ser adotado voluntariamente<br />
por todo o time (BECK, 2000).<br />
3.3.12 Metáfora (metaphor)<br />
Procura facilitar a comunicação entre desenvolvedor e o cliente, estabelecendo<br />
um vocabulário com o qual o cliente esteja habituado em seu dia-a-dia, de modo a<br />
elevar a compreensão mútua, aju<strong>da</strong> todos os envolvidos no projeto a entenderem os<br />
elementos básicos e seus relacionamentos (BECK, 2000).<br />
3.3.13 Ritmo saudável (sustainable pace)<br />
Consiste em trabalhar com quali<strong>da</strong>de, respeitando a individuali<strong>da</strong>de e o físico<br />
de ca<strong>da</strong> desenvolvedor, sem horas extras. <strong>XP</strong> sugere um ritmo de 40 horas/semana, o<br />
horas/dias, nunca exceder estas horas duas sema<strong>nas</strong> segui<strong>da</strong>s (JAVAFREE, 2007).<br />
Trabalhar por longos períodos é contraproducente.<br />
3.4 Mu<strong>da</strong>nças no <strong>XP</strong><br />
As mu<strong>da</strong>nças propostas por Kent Beck e Cynthia Andrés são referencia<strong>da</strong>s<br />
como a <strong>XP</strong>2, devido ao fato de terem reescrito a <strong>metodologia</strong>, mantendo a proposta<br />
inicial de Beck, mas buscando o lado mais humano nos princípios, valores e práticas.<br />
31
3.4.1 Valores<br />
Aos já conhecidos valores <strong>da</strong> <strong>XP</strong> Comunicação, simplici<strong>da</strong>de, feedback e<br />
coragem, no <strong>XP</strong>2 acrescenta um novo valor o de respeito. Tornando a necessi<strong>da</strong>de de se<br />
criar bons relacionamentos entre as pessoas envolvi<strong>da</strong>s no projeto.<br />
3.4.2 Princípios<br />
Os princípios com maior importância, pois são os guias específicos ao contexto<br />
do desenvolvimento de software.<br />
Segundo Beck e Andrés(2004), os princípios aju<strong>da</strong>m na a<strong>da</strong>ptação <strong>da</strong> <strong>XP</strong> para<br />
a reali<strong>da</strong>de de ca<strong>da</strong> um, por isso, á necessi<strong>da</strong>de de identificar princípios particulares em<br />
ca<strong>da</strong> ambiente de trabalho.<br />
3.4.3 Práticas<br />
Embora as 13 práticas ain<strong>da</strong> representam a essência <strong>da</strong> <strong>XP</strong>, muitas delas foram<br />
renomea<strong>da</strong>s, novas práticas foram acrescenta<strong>da</strong>s na <strong>metodologia</strong> e outras foram<br />
subdividi<strong>da</strong>s.<br />
A grande mu<strong>da</strong>nça <strong>da</strong> <strong>XP</strong> para o <strong>XP</strong>2, encontra-se na separação entre as<br />
práticas primárias e práticas corolárias ou resultante.(JAVAMAGAZINE).<br />
Segundo Beck e Andres(2004), as práticas primárias podem ser aplica<strong>da</strong>s<br />
individualmente e o resultado implicará em melhoria imediata no processo de<br />
desenvolvimento <strong>da</strong> equipe. Já as corolárias precisam que as práticas primárias já<br />
estejam em funcionamento para que possam contribuir efetivamente para a melhoria do<br />
trabalho.<br />
32
4 ESTUDO DE CASO<br />
O estudo de caso representa uma pesquisa de campo realizado com empresas<br />
que de uma forma ou de outra tiveram contato com a <strong>XP</strong>.<br />
Para a pesquisa, foi desenvolvido um questionário com 10 (dez) perguntas,<br />
conforme anexo I, no qual lideres de projetos de empresas responderam e auxiliou no<br />
resultado final.<br />
As empresas sujeitas à pesquisa foram seleciona<strong>da</strong>s pelos seguintes critérios:<br />
Conhecimento <strong>da</strong> <strong>XP</strong>.<br />
Empresa liga<strong>da</strong> a tecnologia.<br />
Possuir equipe de desenvolvimento.<br />
Experiência em desenvolvimento de sistemas.<br />
O objetivo <strong>da</strong> pesquisa foi levantar <strong>da</strong>dos para comprovação do uso <strong>da</strong><br />
<strong>metodologia</strong> pelas empresas e seus efeitos.<br />
A região pesquisa<strong>da</strong> foi a Sudeste, com empresas em São Paulo, Rio de Janeiro<br />
e Santa Rita do Sapucaí, de porte pequena, média e grande.<br />
Como resultado, chega-se as seguintes demonstrações abaixo:<br />
O Motivo pela qual as organizações optaram pela <strong>metodologia</strong> ágil extreme<br />
programming como forma de desenvolvimento de software apura-se na figura 2, ao<br />
qual, conseguimos observar a importância que as organizações estão tendo para a<br />
quali<strong>da</strong>de de seus produtos.<br />
33
33,40%<br />
16,65% 16,65% 16,65% 16,65%<br />
Quali<strong>da</strong>de Agili<strong>da</strong>de Produtivi<strong>da</strong>de Confiabili<strong>da</strong>de A<strong>da</strong>ptação <strong>da</strong> equipe<br />
Figura 2: Motivos <strong>da</strong> adoção <strong>da</strong> <strong>XP</strong><br />
Mesmo com to<strong>da</strong>s as afirmações sobre a <strong>XP</strong>, ain<strong>da</strong> as organizações estão<br />
cautelosas quanto à forma de desenvolvimento de sistemas propostos pela <strong>XP</strong>,<br />
conforme ilustra a figura 3.<br />
34
37,50%<br />
25%<br />
12,50% 12,50% 12,50%<br />
To<strong>da</strong>s Pequenos Lançamentos Integração contínua Jogo do Planejamento Metáfora<br />
Figura 3: Utilização <strong>da</strong>s práticas <strong>da</strong> <strong>XP</strong><br />
Nas figuras 4 e 5, nota-se que as organizações utilizam a <strong>XP</strong> com outras<br />
<strong>metodologia</strong>s, ou seja, a<strong>da</strong>ptam a <strong>XP</strong> com o perfil <strong>da</strong> equipe de desenvolvimento,<br />
buscando sempre a quali<strong>da</strong>de final, e utilizam também como maneira de integrar <strong>XP</strong><br />
sem muitas resistências.<br />
35
80%<br />
20%<br />
Sim Não<br />
Figura 4: Combinação <strong>da</strong> <strong>XP</strong> com outras <strong>metodologia</strong>s<br />
50%<br />
25% 25%<br />
Scrum Lean CMM<br />
Figura 5: Principais <strong>metodologia</strong>s usa<strong>da</strong>s integra<strong>da</strong>s a <strong>XP</strong><br />
36
Na implantação <strong>da</strong> <strong>XP</strong>, como a <strong>metodologia</strong> tem foco diferenciado <strong>da</strong>s<br />
<strong>metodologia</strong>s tradicionais, encontra-se algumas facili<strong>da</strong>des e muitas resistências quanto<br />
ao uso <strong>da</strong>s práticas proposta por Kent Beck, no estudo de caso temos <strong>nas</strong> figuras 6, 7 e 8<br />
o demonstrativo dessas facili<strong>da</strong>des e resistências.<br />
33,40%<br />
16,60% 16,60%<br />
33,40%<br />
Vender a idéia utilização <strong>da</strong> <strong>metodologia</strong> pura falta de presença do cliente Resistência de gerentes<br />
Figura 6: Dificul<strong>da</strong>des na implantação <strong>da</strong> <strong>XP</strong><br />
37
22,20% 22,20% 22,20%<br />
11,13% 11,13% 11,13%<br />
Programação em par Código coletivo Pequenos lançamentos Jogo do planejamento Testes de aceitação Integração contínua<br />
Figura 7: Práticas mais fáceis de implantar <strong>nas</strong> organizações pesquisa<strong>da</strong><br />
16,65% 16,65%<br />
Desenvolvimento orientado<br />
a teste<br />
.<br />
33,40%<br />
16,65% 16,65%<br />
38<br />
Jogo do Planejamento Programação em par Metáfora Pequenos lançamentos<br />
Figura 8: práticas mais difíceis de implantar, segundo pesquisa
11,11% 11,11% 11,11%<br />
cronograma de projeto documento de<br />
acompanhamento de<br />
bugs<br />
22,22% 22,22% 22,22%<br />
39<br />
documento de testes javadoc quadros brancos diagramas UML<br />
Figura 9: Tipos de documentações<br />
Foi analisado, pela figura 9, os tipos de documentações utilizados nos projetos<br />
<strong>nas</strong> empresas entrevista<strong>da</strong>s. Já na figura 10, ilustra o uso <strong>da</strong> <strong>metodologia</strong> <strong>nas</strong><br />
organizações foi bem sucedido, ou não.
80%<br />
20%<br />
sim sim, mas a<strong>da</strong>ptado<br />
Figura 10: Sucesso do uso <strong>da</strong> <strong>XP</strong> na organização<br />
40
5 CONSIDERAÇÕES FINAIS<br />
Analisando os fatos <strong>da</strong> pesquisa realiza<strong>da</strong>, nota-se que muitas organizações<br />
adotam a <strong>metodologia</strong> <strong>XP</strong> como alternativa para auxiliar no processo de<br />
desenvolvimento de softwares, para atender a clientes visando cumprir o cronograma e<br />
obter a satisfação do cliente juntamente com a quali<strong>da</strong>de.<br />
Em um projeto de software, arrumar bugs, ou seja, reparar erros do sistema é a<br />
parte mais cara para o cliente, pois esses bugs traumáticos são encontrados tardios nos<br />
processos tradicionais e com as <strong>metodologia</strong>s ágeis são encontrados mais cedo, durante<br />
o desenvolvimento, tornando-se menos traumáticos. Este é ape<strong>nas</strong> um dos ganhos que a<br />
<strong>metodologia</strong> proporciona.<br />
Muitas organizações deixam de usar <strong>XP</strong> por falta de conhecimento <strong>da</strong><br />
<strong>metodologia</strong> e por resistências de to<strong>da</strong> a equipe, sem a aprovação e colaboração de<br />
todos os membros <strong>da</strong> empresa, não se obtém o sucesso que a <strong>XP</strong> gera, pois a<br />
<strong>metodologia</strong> é volta<strong>da</strong> para o lado humano. Os problemas no desenvolvimento de<br />
sistemas estão mais relacionados com pessoas, fator humano, do que com a tecnologia.<br />
Muitas empresas e colaboradores amam <strong>XP</strong> e já outros odeiam não se encontra<br />
meio termo para essa questão, o próprio nome <strong>da</strong> <strong>metodologia</strong> gera certo pânico em<br />
algumas pessoas. Programação extrema, para quem adora programar se considera que<br />
está em casa, mas para aquele que não gosta de programação certamente fará com que<br />
não se adotem a <strong>metodologia</strong>, e na ver<strong>da</strong>de não é isso que a <strong>XP</strong> propõem. Ao contrário<br />
do que pensam <strong>XP</strong> não é somente programação, <strong>XP</strong> se planeja, estima, documenta, mas<br />
de um modo bem diferenciado.<br />
Apesar <strong>da</strong> resistência inicial de algumas equipes, quem utiliza <strong>XP</strong> não volta a<br />
utilizar <strong>metodologia</strong>s tradicionais, procura sempre a<strong>da</strong>ptar <strong>XP</strong> para ca<strong>da</strong> projeto, pois a<br />
<strong>metodologia</strong> permite essa a<strong>da</strong>ptação para o perfil <strong>da</strong> equipe ou projeto. Isto se deve ao<br />
fato <strong>da</strong> <strong>XP</strong> impactar muito mais positivamente do que negativamente no processo de<br />
desenvolvimento de software <strong>da</strong> organização.<br />
41
REFERÊNCIAS BIBLIOGRÁFICAS<br />
AGILCOOP, disponível em<br />
http://agilcoop.incubadora.fapesp.br/portal/eventos/seminarioUNICAMP/ acessado em<br />
02 de Setembro de 2007.<br />
AGILCOOP 2, disponível em http://agilcoop.incubadora.fapesp.br/portal/agilvideo<br />
acessado em 14 de Setembro de 2007.<br />
BECK, Kent. Extreme Programming Explained.,New York: 2000, Addison Wesley.<br />
BECK, Ken; ANDRÉS Cynthia.. Extreme Programming Explained Embrace<br />
Chance .,New York: 2004, Addison Wesley.<br />
COHEN, D.; LINDVALL, M.; COSTA, P. An introduction to agile methods. In<br />
Advances in Computers. New York: 2004, Elsevier Science.<br />
FOWLER, Martin,<br />
http://www.naphta.com.br/xpmanager/xpmanager_<strong>metodologia</strong>sageis.html acessado em<br />
21 de Agosto de 2007.<br />
IMPROVEIT, disponível em www.improveit.com.br/xp, acessado em 16 de Agosto de<br />
2007.<br />
42
JAVAFREE, -Apresentando <strong>XP</strong>, encante seus clientes com Extreme Programming,<br />
disponível em www.javafree.org, acessado em 29 de Janeiro de 2007 as 14:58.<br />
JAVAMAGAZINE, o novo <strong>XP</strong> Explicado, edição 25 ano III .<br />
MANHÃES, Vinícius Teles. Extreme Programming - Apren<strong>da</strong> como encantar seus<br />
usuários desenvolvendo software com agili<strong>da</strong>de e alta quali<strong>da</strong>de, Rio de Janeiro:<br />
2004, Novatec Editora.<br />
NAPHTA, disponível em<br />
http://www.naphta.com.br/xpmanager/xpmanager_<strong>metodologia</strong>sageis.html acessado em<br />
21 de Agosto de 2007.<br />
SIMPLUS, disponível em http://simplus.com.br/artigos/a-nova-<strong>metodologia</strong>/ acessado<br />
em 02 de Setembro de 2007.<br />
SOARES, Michel dos S. disponível em<br />
http://www.dcc.ufla.br/infocomp/artigos/v3.2/art02.pdf acessado em 21 de Agosto 2007<br />
<strong>XP</strong>ROGRAMMING, disponível em www.xprogramming.com acessado em 12 de<br />
Setembro de 2007.<br />
43
ANEXOS<br />
Anexo I<br />
Pesquisa para o Trabalho de Conclusão de Curso(TCC)<br />
Instituição: Universi<strong>da</strong>de do vale do Sapucaí – UNIVÀS<br />
Curso: Sistemas de Informação<br />
Aluno: Thiago Borborema (thiago_borborema@ yahoo.com.br).<br />
IMPACTO DA UTILIZAÇÃO DA <strong>XP</strong> NAS ORGANIZAÇÕES DE<br />
DESENVOLVIMENTO DE SOFTWARE.<br />
1. Qual motivo o levou a utilizar a <strong>XP</strong>?<br />
2. Utiliza to<strong>da</strong>s as práticas <strong>da</strong> <strong>XP</strong>? Caso contrário, quais?<br />
3. Possui experiência em outros métodos ágeis ou não? Quais?<br />
4. Utiliza <strong>XP</strong> combinado com outros métodos?<br />
5. Quais as dificul<strong>da</strong>des na implantação <strong>da</strong> <strong>XP</strong>?<br />
6. A <strong>XP</strong> é a abor<strong>da</strong>gem mais adequa<strong>da</strong> para sua organização? Justifique.<br />
7. Quais práticas foram mais fáceis de se incorporar em uma organização e<br />
quais as mais difíceis? Por quê?<br />
8. Sua organização você julga madura ou imatura em processo de<br />
desenvolvimento?<br />
9. Utiliza documentação? Quais?<br />
10. Durante a implantação <strong>da</strong> <strong>XP</strong>, houve resistência? Como a organização<br />
lidou com isso?<br />
44