29.06.2013 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!