Você está na página 1de 15

Antonio Sergio F.

Bonato Extreme Programming e Qualidade de Software

Extreme Programming e
Qualidade de Software
Antonio Sergio Ferreira Bonato
Departamento de Sistemas Digitais
Escola Politécnica
Universidade de São Paulo
asbonato@ieee.org

Resumo Nos últimos anos tem surgido uma nova gama de metodologias de desenvolvimento de software
conhecidas como metodologias ágeis. Consideradas por alguns como um antídoto ao excesso
de burocracia e uma solução para os problemas das pequenas equipes e por outros como coisa
de hackers, estas metodologias vem se firmando e atraindo cada vez mais atenção sobre si.
Dentre estas metodologias, a que mais tem se destacado é a Extreme Programming, gerando
um grande número de publicações, congressos e aficionados. E um bom número de detratores
também.
Entretanto, estas metodologias são capazes de produzir software confiável e de qualidade? O
intuito deste trabalho é fazer um pequeno estudo neste sentido, analisando a Extreme Pro-
gramming sob a ótica de uma interpretação não rigorosa do SW-CMM, o Capability Maturity
Model para Software, verificando em que pontos ela é aderente ao modelo e em quais pontos
ela é não conforme.
Por que o SW-CMM? Bem, o modelo SW-CMM é amplamente aceito pela comunidade mundial
de Engenharia de Software como um padrão a ser seguido para se produzir software confiável
e de qualidade.
O trabalho está estruturado de modo a, no início, falar sobre aspectos gerais que caracterizam
as metodologias ágeis. Depois, fala sobre os conceitos da Extreme Programming. No final é
feita uma breve explicação do SW-CMM e é descrito como cada uma das áreas de processo é
ou não atendida pela Extreme Programming.

Keywords: Processo, metodologias, desenvolvimento de software, metodologias ágeis, Extreme


Programming, qualidade de software, CMM.

Introdução coisas crescem, os problemas começam a aparecer. Como


é caracterizada por longas fases de debugging (remoção
O desenvolvimento de software tem se mostrado de erros) após a implementação de cada funcionalidade,
como uma das atividades mais desafiadoras da difíceis de determinar o quanto duram, via de regra o
humanidade. Apesar de estar envolvida nesta empreitada cronograma não é cumprido.
a quase 50 anos, ainda parece praticamente impossível Nos primórdios do software as coisas funcionavam
concluir um projeto de desenvolvimento de software deste jeito (e ainda funcionam assim em muitos lugares
dentro do prazo, do orçamento, com todas os requisitos quando se trata de pequenas equipes). Com o passar do
satisfeitos e alta qualidade. tempo, entretanto, foram surgindo metodologias com o
A atividade de desenvolvimento de software é intuito de tornar o desenvolvimento de software uma
caótica, normalmente caracterizada pela expressão "code atividade mais disciplinada, eficiente e previsível. Só que
& fix", i.e., codifica e conserta. Isto geralmente funciona muitas vezes estas metodologias são acusadas de
bem em projetos muito pequenos, mas à medida que as burocráticas, pois exigem uma grande quantidade de

Extreme Programming Brasil - São Paulo - dezembro de 2002 1


Antonio Sergio F. Bonato Extreme Programming, Qualidade e Confiabilidade de Software

documentos. Além disso, é constante a reclamação de pequenas organizações o desafio da qualidade. Como
que o uso da metodologia por si só atrasa o projeto, usar um modelo de qualidade de processo como o SW-
tamanho o número de tarefas "improdutivas" realizado. CMM sem perder agilidade. Isso é possível desde que se
Por tudo isso, estas metodologias são chamadas de faça uma interpretação do modelo com bom senso [6].
pesadas (heavyweight methodologies). Desta forma, o uso das metodologias ágeis propicia às
pequenas organizações um modo de desenvolver
As metodologias pesadas se mostraram adequadas aos
software com agilidade e qualidade.
grandes projetos tocados por grandes equipes, onde há
farta disponibilidade de recursos materiais e humanos
que torna possível tanto a existência do sem número de Pequenas Empresas e Pequenos Projetos
papéis exigidos por estes processos bem como a As pequenas empresas são parte importante da
produção da elevada quantidade de documentação economia do país. A grande maioria das organizações
demandada. Entretanto, o tamanho destes projetos os que desenvolvem software no Brasil, segundo
torna naturalmente complexos, principalmente nas tarefas levantamento realizado pelo núcleo SOFTEX, que se
de coordenação dos mais variados grupos, justificando o destina a promover a excelência do software brasileiro, é
uso destas metodologias. composta por pequenas organizações [7]. De um
Já os pequenos projetos, tocados por pequenas universo de 699 empresas pesquisadas, 36% tem o porte
organizações, não precisam de todo este rigor e de micro organizações, com um número de funcionários
formalismo, podendo ser encarados de maneira muito variando entre 1 e 10. 42% das organizações estão na
mais simples. Para estes projetos, as metodologias categoria de pequenas, com 10 a 49 funcionários.
pesadas não são adequadas, pois não há como encolhê-las Portanto, de acordo com o critério força de trabalho, 78%
para se ajustarem ao tamanho do projeto e da das empresas podem ser consideradas como pequenas
organização, que na maioria das vezes não tem como organizações.
arcar com os recursos necessários para suportar o Ainda relatando a mesma pesquisa, 88,8% das 699
emprego destas metodologias. É justamente nestes casos empresas são desenvolvedoras de software e a maioria
que o uso de uma metodologia é pior do que o uso de software orientado a negócios, sendo relatados
nenhuma. aplicativos como administração de serviços (31,3%),
Como reação à tudo isso apareceram, nos últimos automação comercial (30,0%), página web (29,4%), e-
anos, algumas metodologias denominadas metodologias business (26,5%), contabilidade (18,0%), dentre outros.
ágeis. Tais metodologias se colocam como um meio- Estas informações corroboram o fato de que no Brasil a
termo entre a ausência de processo e o processo maior parte do software desenvolvido é orientado a
exagerado. Exigindo pouca documentação, às vezes até negócios.
colocando o código fonte como documentação, elas Geralmente, as pequenas organizações desenvolvem
diferem das metodologias pesadas em dois aspectos pequenos projetos. Estes, com relação ao seu tamanho,
básicos: podem ser classificados como [6]:
• são adaptativas ao invés de preditivas; • pequenos, quando envolvem de 3 a 5 pessoas e tem
• são orientadas às pessoas, e não orientadas aos duração de até 6 meses;
processos. • muito pequenos, quando envolvem de 2 a 3 pessoas
Existem várias metodologias que podem ser e tem duração de até 4 meses;
carimbadas com o estereótipo de ágeis. Todas elas tem
em comum o fato de acomodarem bem as mudanças de • minúsculos, quando envolvem de 1 a 2 pessoas e
requisitos e de serem processos fáceis de serem aceitos tem duração de até 2 meses;
pelo pessoal de desenvolvimento. Apesar destas • individual, quanto apenas uma pessoa trabalha no
semelhanças, todas elas tem diferenças na maneira como
projeto por uma semana.
conduzem o ciclo de vida de desenvolvimento.
Ainda assim, apesar de pequenos, estes projetos
Dentre as metodologias ágeis, a que mais tem se falham. Pode-se citar o CHAOS Report do ano 2000, que
destacado é a Extreme Programming, talvez por sua relata que neste ano apenas 28% dos projetos de
fundamentação teórica e sua estruturação como dsenvolvimento de software nos Estados Unidos
disciplina, talvez pelo grande senso de marketing de seu obtiveram sucesso, 23% falharam totalmente e os 49%
principal criador, Kent Beck [1]. restantes terminaram fora do prazo, do orçamento e com
Entretanto, mesmo sendo as metodologias ágeis mais menos funcionalidades do que o requisitado no início do
adequadas para os pequenos projetos, ainda resta às projeto [8]. Nota-se aqui que a falta de maturidade e

2
Antonio Sergio F. Bonato Extreme Programming e Qualidade de Software

capacidade no desenvolvimento de software ainda é • sua dependência em práticas que funcionam tanto
grande nos Estados Unidos. Infelizmente não existem com os instintos de curto prazo dos programadores
informações deste tipo relacionadas à organizações
como com os interesses de longo prazo do projeto.
brasileiras, mas pode-se inferir que o resultado seria o
mesmo ou até pior. XP é também uma maneira disciplinada de
desenvolvimento de software. É disciplinada porque
existem determinadas práticas que devem ser executadas
O que é Extreme Programming?
para que se pratique a XP. Estas práticas, ou 12 práticas,
Extreme Programming, ou XP, é uma metodologia estão fundamentadas em uma história, quatro valores,
leve para equipes de tamanho pequeno e médio alguns princípios e em quatro atividades básicas.
desenvolverem software face a requisitos vagos ou que Vejamos cada um deles.
mudem muito rapidamente. Criada em 1996 por Kent
Beck, Ron Jeffries e Ward Cuningham a partir de um Os quatros valores fundamentais da XP
projeto piloto realizado na Daymler-Crysler, a XP vem
ganhando cada vez mais espaço no mercado. • Comunicação: problemas em projetos normalmente
Porque extreme? Porque a XP pega um conjunto de são traduzidos por um "alguém que não falou alguma
práticas de desenvolvimento que estão por aí já faz um coisa importante para alguém". A XP torna
longo tempo, conhecidas como best practices, e as leva praticamente impossível a falta de comunicação.
ao extremo [2]. Por exemplo, se revisão por pares é bom,
• Simplicidade: sempre faça a coisa mais simples que
então vamos fazê-la o tempo todo, implantando a
programação aos pares; se projeto é bom, vamos fazer possa funcionar. XP é uma aposta de que é sempre
dele nosso dia a dia, com a remodelagem de código; se mais barato fazer algo simples e mudar depois do
testar é bom, vamos fazê-lo o tempo todo, e assim por que tentar prever o futuro fazer algo complicado que
diante. ninguém vai acabar usando.
XP é uma maneira ágil, eficiente, de baixo risco, • Feedback: retorno concreto dos clientes e dos
flexível, previsível, científica e até divertida de usuários o mais cedo possível mantém o projeto nos
desenvolver software. Ela se distingue das outras
trilhos.
metodologias por
• Coragem: é preciso coragem para manter os três
• seu precoce, concreto e contínuo feedback fornecido
primeiros valores sempre.
pelos ciclos curtos;
• sua abordagem de planejamento incremental, que Princípios Básicos
rapidamente cria um plano que evolue durante o Os princípios fundamentais são:
ciclo de vida do projeto;
• Feedback rápido: quanto mais demorado o feedback
• sua habilidade em tornar flexível a implementação
menor o aprendizado produzido por ele.
de funcionalidades, respondendo às necessidades de
Simplicidade assumida: tratar cada problema como se
mudança dos negócios;
pudesse ser resolvido de maneira simples; não tentar
• sua dependência dos testes automatizados escritos
prever o futuro, resolvendo hoje os problemas de hoje, e
pelos programadores e clientes para monitorar o
deixando para amanhã os de amanhã.
progresso do desenvolvimento e encontrar defeitos
• Mudança incremental: grandes mudanças tendem a
precocemente;
não funcionar; os problemas são normalmente
• sua dependência da comunicação oral, nos testes e
resolvidos com uma série de pequenas mudanças
no código fonte para comunicar o intento e a
naquilo que faz diferença.
estrutura do sistema;
• Aceitar mudanças: a melhor estratégia é aquela que
• sua dependência do processo de projeto evolutivo
preserva a maioria das opções enquanto
que dura enquanto o projeto dura;
verdadeiramente resolve o problema que estiver
• sua dependência na colaboração estreita entre pressionando mais;
programadores com habilidades comuns;
• Trabalho de qualidade: todos gostam de fazer um
trabalho de qualidade; se as pessoas que estão no

Extreme Programming Brasil - São Paulo - dezembro de 2002 3


Antonio Sergio F. Bonato Extreme Programming, Qualidade e Confiabilidade de Software

projeto não gostam da qualidade do trabalho que permite que os testes sejam feitos, dando
estão fazendo, a tendência do projeto é fracassar. rapidamente o feedback necessário de que o que está
Além destes princípios fundamentais, existem outros sendo feito está correto e de acordo com os
que também são importantes: requisitos do cliente.
• Ensinar a aprender: melhor do que um monte de • Testes: são a maneira mais rápida e segura de se
frases doutrinárias, tais como "Você deve testar obter feedback e aumentar a confiança da equipe e
como XYZ...", devemos focar em ensinar estratégias do cliente; nenhuma funcionalidade que não possa
de se aprender quanto teste deve ser feito; isto ser demonstrada por intermédio de testes realmente
também vale para a remodelagem de código, projeto, existe.
planejamento, etc. • Audição: os programadores normalmente não sabem
• Pequeno investimento inicial: muito dinheiro logo no nada da área de negócios; o pessoal de negócios
início do projeto não faz bem; a melhor abordagem é dificilmente sabe alguma coisa de desenvolvimento
ter dinheiro o suficiente para começar e ir de software; ambas as partes devem ouvir sempre
incrementando o orçamento conforme o retorno do umas as outras para que o projeto sempre ande na
investimento que vai sendo dado para o cliente. direção correta.
• Jogar para ganhar: deve-se sempre jogar para • Projeto: não se pode apenas ouvir, escrever casos de
ganhar, e não jogar para não perder. testes e codificar o tempo todo; é necessário antes se
• Experiências concretas: antes de tomar decisões projetar o que vai ser feito; o projeto deve sempre ser
deve-se experimentar algumas alternativas. simples, e deve ser melhorado sempre que possível.

• Comunicação honesta e aberta: falta de As doze práticas da XP


comunicação dentro da equipe prejudica o ambiente
As doze práticas da XP que a definem como uma
de trabalho e o projeto como um todo. disciplina são fundamentadas nos quatro valores, nos
• Trabalhar de acordo com o instinto das pessoas, e princípios básicos e nas quatro atividades básicas [3].
não contra eles.
• Responsabilidade aceita: responsabilidade não deve O Jogo do Planejamento
ser imposta às pessoas, mas aceita por elas. Ninguém sabe tudo logo no começo. Tanto clientes
como desenvolvedores aprendem durante o progresso do
• Adaptação local: os costumes e práticas de
projeto. A XP reconhece isso e coloca isso em prática
desenvolvimento locais devem ser respeitados ao através do jogo do planejamento.
máximo quando da implantação da XP.
A principal idéia por trás deste prática é fazer um
• Viagem leve: não carregue documentação que não plano aproximado no princípio e refiná-lo conforme as
seja essencial para o projeto; jogue fora aquilo que coisas vão se tornando mais claras. Os artefatos do jogo
não precisa mais; o código fonte é uma das melhores do planejamento são uma pilha de cartões, contendo
formas de documentação. histórias do cliente, que irão orientar as iterações do
projeto; e um plano aproximado do próximo release. O
• Medição honesta: medir sempre o desenvolvimento, fator crítico do trabalho de planejamento é deixar os
mas nunca numa maneira que não seja suportada clientes tomarem as decisões de negócios, enquanto o
pelos instrumentos disponíveis. pessoal do desenvolvimento toma as decisões técnicas.
Ao pessoal do desenvolvimento cabe:
Atividades Básicas
• estimar quanto tempo vai demorar para desenvolver
A XP considera que o desenvolvimento de software
está dividido em apenas quatro atividades básicas: uma história;
• implicações de custo no uso de várias opções
• Codificação: no final do dia, sempre tem que haver
tecnológicas;
código; quer seja desenhando diagramas que gerem
código ou digitando programas, a atividade principal • a organização da equipe;
do desenvolvimento é a codificação; o código • o risco de cada história;

4
Antonio Sergio F. Bonato Extreme Programming e Qualidade de Software

• a ordem do desenvolvimento de cada história dentro enquanto escrevem o código. O cliente escreve os testes
de cada iteração. de aceitação após definir as histórias. Os testes de
unidade dizem aos desenvolvedores quando o sistema
Os clientes tomam as decisões de negócio: funciona em qualquer ponto do tempo. Os testes de
• escopo (as histórias para um release e as histórias de aceitação dizem à equipe quando o sistema faz o que os
usuários desejam que ele faça.
cada iteração);
Os desenvolvedores escrevem testes de unidade para
• datas dos releases;
cada método que possa falhar, antes mesmo de escrever o
• prioridades (quais as funcionalidades devem ser código para tais métodos. Então eles escrevem somente
desenvolvidas antes, baseados em valor para o código o suficiente para passar nos testes. Trabalhar desta
negócio). forma parece estranho, mas esta abordagem proporciona:
O planejamento ocorre com freqüência. Isto fornece • mais completo conjunto de testes possível;
uma oportunidade para que clientes e desenvolvedores
façam ajustes a medida em que aprendem coisas novas. • código mais simples que possa funcionar;
• uma visão clara da intenção do código.
Programação por pares Um desenvolvedor não pode integrar o código ao
Em XP, pares de programadores usando apenas um repositório de código fonte enquanto ele não passar em
computador escrevem todo o código fonte. Esta todos os testes de unidade. Os testes de unidade dão aos
abordagem pode soar ineficiente, uma vez que se utiliza desenvolvedores confiança de que o código deles
dois recursos para produzir a mesma coisa, mas na funciona. Eles também dão ao desenvolvedor coragem
verdade ela traz uma série de benefícios, econômicos e para fazer a remodelagem do código fonte, porque uma
outros, tais como: falha no teste diz ao desenvolvedor imediatamente se
alguma coisa foi danificada. Os testes de unidade devem
• todas as decisões de projeto envolvem pelo menos ser automatizados e dar um resultado claro do tipo
dois cérebros; passa/não passa.
• pelo menos duas pessoas estão familiarizadas com Os clientes são responsáveis por garantir que cada
cada parte do sistema; história tenha um teste de aceitação para validá-la. O
cliente pode escrever os testes por si só, recrutar algum
• há menos chance de ambas as pessoas
membro da organização para fazer isso por ele ou
negligenciarem tarefas, tais como testes e combinar as duas abordagens. Os testes dizem aos
remodelagem de código; clientes se o sistema tem todas as funcionalidades que
• a mudança de pares difunde o conhecimento pela deveriam ter e se elas funcionam corretamente.
Idealmente, o cliente deve ter os testes de aceitação de
equipe;
todas as histórias a serem implementadas em uma
• o código é sempre revisado por pelo menos duas interação escritos antes da interação estar terminada. Os
pessoas. testes de aceitação devem ser automatizados e devem ser
Há dois papéis em cada par. Um dos parceiros, o que executados freqüentemente para garantir que os
detém o teclado e o mouse, pensa na melhor maneira de desenvolvedores não estejam estragando nenhuma
se implementar um determinado método. O outro funcionalidade já implementada enquanto eles
parceiro deve pensar mais estrategicamente, como por implementam uma nova. Nem todos os testes de
exemplo, se a abordagem como um todo vai funcionar, se aceitação tem que passar todo o tempo. Eles ajudam o
existem ainda casos de teste que não foram testados, se cliente a medir o quanto do projeto já está pronto. Eles
há um modo de fazer aquilo de maneira mais simples, também permitem aos clientes tomar decisões informadas
etc. sobre o que está ou não pronto em um determinado
release.

Testes
Remodelagem
Em XP há dois tipos de testes:
A remodelagem (refactoring) é uma técnica que
• testes de unidade; permite a melhoria do código sem a mudança de
funcionalidade. Uma equipe de XP deve fazer a
• testes de aceitação.
remodelagem sem perdão.
Os desenvolvedores escrevem os testes de unidade
Existem duas oportunidades chave para os

Extreme Programming Brasil - São Paulo - dezembro de 2002 5


Antonio Sergio F. Bonato Extreme Programming, Qualidade e Confiabilidade de Software

desenvolvedores melhorarem o código: antes e depois de falta de propriedade do código.


implementar uma funcionalidade. Antes, os
Dizer que todos possuem o código não é o mesmo
desenvolvedores tentam determinar se a mudança no
que dizer que ninguém possui o código. Quando ninguém
código existente tornaria a implementação da nova
possui o código as pessoas podem causar danos onde
funcionalidade mais fácil. Depois, eles olham para o
bem entenderem e alegarem não ter nenhuma
código que acabaram de escrever para ver se há uma
responsabilidade. A XP diz, "Você estraga, você
maneira de simplificá-lo. por exemplo, se eles vêem uma
conserta". Existem testes de unidade que devem ser
oportunidade para abstração, eles fazem a remodelagem
executados antes e depois de cada integração. Se você
para remover todo o código duplicado das
danifica alguma coisa que estava funcionando, é sua
implementações concretas.
responsabilidade consertá-la, não importa em que lugar
A XP diz que se deve escrever o código mais simples do código ela esteja. Isto requer extrema disciplina.
que possa funcionar, mas também diz que se aprende
coisa pelo caminho. A remodelagem permite que se Integração Contínua
incorpore o aprendizado ao código sem danificar os
testes. Ele mantém o código limpo. Isto significa que o A integração freqüente do código ajuda a evitar o
código irá sobreviver por mais tempo, introduzir menos pesadelo da integração. As equipes de XP integram seu
problemas para os futuros desenvolvedores e guiá-los na código várias vezes ao dia, após terem todos os testes de
direção correta. unidade executados sem problemas.
Abordagens tradicionais tendem a trabalhar deste
Projeto simples modo: codificam um monte, fazem uma grande
integração e depois gastam uma grande quantidade de
As metodologias pesadas dizem que até o mais
tempo consertando os problemas. Este estilo realmente
simples projeto (design) deve ser feito logo no começo.
atrasa o projeto. Grandes integrações criam uma grande
XP diz que o projeto não deve ser feito todo de uma vez,
carga de problemas todos de uma vez, e estes problemas
no início, na ilusão de que nada vai mudar depois. A XP
podem ter centenas de causas possíveis.
considera o projeto tão importante que ele deve ser uma
preocupação constante. Deve-se sempre tentar usar o Quando a integração é freqüente, a causa das falhas
projeto mais simples que possa funcionar em um de uma integração em particular é mais óbvia: os testes
determinado ponto, mudando-o quando ele não mais funcionavam antes, então o que se acabou de integrar é o
refletir a realidade. culpado. Deste modo, quando se encontram problemas,
há um conjunto limitado de causas. Consertar é mais
E o que é o projeto mais simples que possa funcionar?
fácil, leva menos tempo e mantém a equipe trabalhando
É aquele que:
em velocidade máxima.
• passa em todos os testes;
• não contém código em duplicidade; Cliente no local
• demonstra claramente as intenções do programador; Para funcionar de maneira ótima, uma equipe de XP
precisa ter um cliente disponível no local para clarear
• contém o menor número possível de classes e algumas histórias e tomar decisões críticas de negócio.
métodos. Os desenvolvedores não podem fazer isso sozinhos. Ter
Um projeto simples não implica em que todos os um cliente disponível elimina gargalos que possam
projetos sejam pequenos ou triviais. Eles apenas devem aparecer quando os desenvolvedores tem que esperar por
ser o mais simples possível e ainda assim funcionarem. decisões dos clientes.
Nunca inclua funcionalidades extras que não serão A XP não finge que um cartão de história seja todo o
utilizadas. direcionamento que um desenvolvedor necessite para
entregar o código necessário. A história é um
Propriededade Coletiva do Código compromisso para uma posterior conversa entre o cliente
Qualquer pessoa da equipe deve ter a autoridade para e o desenvolvedor para descrever os detalhes. A idéia é
mudar o código a fim de melhorá-lo. Todos possuem o que a comunicação face a face minimize a chance de
código, de modo que todos são responsáveis por ele. Esta maus entendidos, o que não ocorre quando se escreve
técnica permite às pessoas fazerem as mudanças todos os requisitos em um documento estático.
necessárias em uma peça de código sem caírem no Apesar de ter o cliente o local o tempo todo ser a
gargalo da propriedade individual do código. O fato de melhor situação possível, este não é o único cenário que
todos serem responsáveis pelo código evita o caos da funciona. O mínimo necessário é que o cliente esteja

6
Antonio Sergio F. Bonato Extreme Programming e Qualidade de Software

disponível sempre que necessário para responder à claramente. O padrão de codificação deve começar
questões e para fornecer direcionamento paro o time simples e evoluir baseado na experiência da equipe. Não
baseado em valor para o negócio. Se isto puder acontecer se deve gastar muito tempo com isso no princípio. Cria-
sem a necessidade do cliente estar o tempo todo no local, se o padrão mais simples que possa funcionar, e então se
ótimo. A presença física com a equipe torna as coisas coloca em prática.
mais fáceis, embora seja apenas uma recomendação.
Metáfora
Pequenas versões O que uma arquitetura faz? Ela fornece uma figura
As versões (releases) devem ser tão pequenas quanto dos vários componentes de um sistema e como eles
possível e mesmo assim ter valor o suficiente para o interagem - um tipo de mapa que permite aos
negócio de modo que valham à pena. desenvolvedores ver onde novas peças irão se encaixar.
Libere o sistema tão logo ele tenha algum sentido. A metáfora do sistema em XP é análoga ao que a
Isto fornece valor para o cliente tão cedo quanto possível. maioria das metodologias chama de arquitetura. A
Pequenas versões também fornecem um feedback metáfora dá à equipe uma foto consistente que ela possa
concreto para os desenvolvedores sobre quais as usar para descrever o modo como o sistema existente
expectativas dos clientes foram atendidas e quais não trabalha, onde as novas partes irão se encaixar e qual
foram. A equipe então pode incluir estas lições no forma elas devem ter.
planejamento do próxima versão.
É importante lembrar que todos entenderem como o
sistema funciona como um todo é crítico e fundamental
Semana de 40 horas para o sucesso do projeto.
Os desenvolvedores devem estar renovados e
ansiosos a cada manhã, cansados e satisfeitos toda noite. Como as práticas funcionam juntas
As 40 horas por semana levam a isso. O número exato de
O todo é maior do que a soma das partes. Pode-se
horas não é importante - o princípio sim. Queimar óleo
implementar práticas simples, ou um pequeno conjunto
por longos períodos mata a performance.
delas, e ainda assim obter grandes benefícios. Mas só se
Desenvolvedores cansados cometem mais erros, o que
consegue o máximo de benefícios quando se implementa
diminui a velocidade do projeto no longo prazo mais do
todas as práticas, pois o poder delas vem da sua
que um horário de trabalho normal o faria.
interação.
Mesmo que os desenvolvedores possam funcionar
Deve-se aplicar a XP ao integralmente no começo.
bem por longos períodos não significa que devam.
Uma vez que se entende como as práticas interagem,
Eventualmente eles ficam cansados e deixam seus
tem-se o conhecimento necessário para adaptar a XP a
empregos, ou começam a ter problemas pessoais que
um contexto em particular. É importante lembrar que a
acabam tendo impacto negativo em sua performance.
XP não é um objetivo, e sim um meio. O objetivo, sim, é
Horas extras não são resposta a um problema no projeto.
desenvolver software de qualidade rapidamente.
De fato, são um sintoma de um problema maior.

Ciclo de Vida de um Projeto de XP


Padrões de codificação
O ciclo de vida de um projeto de XP consiste em por
Ter padrões de codificação faz duas coisas:
as práticas e estratégias da XP em funcionamento de
• evita que a equipe se distraia com discussões maneira ordenada. Ele consiste de um pequena fase
estúpidas sobre coisas que não importam tanto inicial de desenvolvimento seguida por um longo período
de refinamento e suporte à produção.
quanto trabalhar em velocidade máxima;
O ciclo de vida pode ser divido nas seguintes fases:
• suporta as outras práticas.
Sem padrões de codificação é mais difícil melhorar o Exploração: preparar ambiente de produção, praticar
código, mais difícil trocar os pares de programadores e a escrita de histórias de usuário, estimar e testar
mais difícil ir rápido. O objetivo é que ninguém na tecnologias e tarefas de programação; desta fase sai a
equipe possa reconhecer quem escreveu determinada metáfora.
parte do código. Cria-se um padrão que todos Planejamento: por em prática o Jogo do
concordem, e então se adota o padrão. Este não deve Planejamento; obter o menor número de histórias a ser
conter uma lista extensa de regras, mas apenas linha implementado no versão curta.
gerais que garantam que o código se comunique

Extreme Programming Brasil - São Paulo - dezembro de 2002 7


Antonio Sergio F. Bonato Extreme Programming, Qualidade e Confiabilidade de Software

Iterações: planejar cada iteração, fazer o desenho • SPTO - Software Project Tracking & Oversight
mais simples, criar os casos de teste de unidade, (Acompanhamento e Supervisão de Projeto de
programar aos pares, testar continuamente, integrar
Software),
diariamente, remodelar sem perdão, fazer os testes de
aceitação, implementar as histórias da versão. • SSM - Software Subcontract Management (Gerência
Produção: em iterações de uma semana, colocar o de Subcontratação de Software,
sistema em produção; implementar novos testes e ajustar • SQA - Software Quality Assurance (Garantia de
a performance do sistema. Qualidade de Software),
Manutenção: simultaneamente produzir novas • SCM - Software Configuration Management
funcionalidades e manter o sistema existente rodando, (Gerência de Configuração de Software).
remodelar se necessário ou migrar para uma nova
tecnologia; experimentar novas arquiteturas. As do nível 3:

Morte: o usuário não consegue pensar em novas • OPF - Organization Process Focus (Foco no
histórias; preparar documentação do sistema e encerrar o Processo Organizacional),
projeto.
• OPD - Organization Process Definition (Definição
do Processo Organizacional),
• TP - Training Program (Programa de Treinamento),
O Software CMM • ISM - Integrated Software Management (Gerência
Integrada de Software),
O Capability Maturity Model for Software é um
• SPE - Software Product Engineering (Engenharia de
modelo organizacional para construção de software que
tem sido amplamente adotado na comunidade de software Produto de Software),
e além dela. O CMM-SW é um modelo em cinco níveis • IC - Intergroup Coordination (Coordenação entre
que descreve boas práticas de engenharia e Grupos),
gerenciamento e prescreve prioridades de melhoria para
organizações de software [5]. O modelo possui cinco • PR - Peer Reviews (Revisões por Pares).
níveis, sumariados a seguir: As do nível 4:

• nível 1 - inicial: nenhum processo; • QPM - Quantitative Process Management (Gerência


• nível 2 - repetível: foco em gerenciamento de de Processo Quantitativa),
projeto; • SQM - Software Quality Management (Gerência de
• nível 3 - definido: foco em processos de engenharia Qualidade de Software),
e no suporte organizacional; E, finalmente, as do nível 5:
• nível 4 - gerenciado: foco na qualidade dos • DP - Defect Prevention (Prevenção de Defeitos),
processos e do produto; • TCM - Technology Change Management (Gerência
• nível 5 - otimizando: foco na melhoria contínua do de Mudança Tecnológica),
processo. • PCM - Process Change Management (Gerência de
Cada um dos níveis do CMM (exceto o nível 1) Mudança de Processo).
possui um certo número de KPAs, ou áreas chave de
O CMM é focado nas grandes organizações que
processo. Cada KPA permite alcança um certo conjunto
desenvolvem software em grandes projetos para o
de metas ou objetivos. A satisfação a estes objetivos
governo. Apesar disso, ele é escrito de uma maneira
permite dizer se uma organização atingiu um
hierárquica que contém "verdades universais" sobre a
determinado nível de maturidade. As KPAs do nível 2
engenharia de software e a gerência de projetos. Quando
são:
visando apenas a melhoria do processo de
• RM - Requirements Management (Gerência de desenvolvimento, se interpretado de maneira correta e
com bom senso, o CMM pode ser usado por praticamente
Requisitos),
todas as organizações, independentemente de seu
• SPP - Software Project Planning (Planejamento de tamanho [6].
Projeto de Software),

8
Antonio Sergio F. Bonato Extreme Programming e Qualidade de Software

O Software CMM tem a intenção de ser: • Objetivo 1: As estimativas de software são


• um aplicação de bom senso de processos de documentadas para uso no planejamento e
gerenciamento e conceitos de melhoria de qualidade acompanhamento do projeto.
ao desenvolvimento e manutenção de software; • Objetivo 2: O projeto de software tem as suas
• um guia desenvolvido pela comunidade, pois as atividades e compromissos associados planejados e
informações fornecidas por centenas de profissionais documentados.
de software foram levadas em conta na confecção do • Objetivo 3: Os grupos e indivíduos que tenham
modelo; alguma relação com o desenvolvimento do software
• um modelo para melhoria organizacional, que conhecem os compromissos assumidos e concordam
implica em uma série de prioridades que podem com eles.
diferir das de um projeto específico, mas que se
Bom senso
provaram efetivas na transformação de uma
organização; Fazer um plano básico que contenha as principais
atividades a serem realizadas, bem como os produtos
• uma estrutura para métodos de avaliação baseados gerados por cada uma delas. Revisar o plano conforme o
no CMM confiável e consistente. projeto estiver em andamento.
Embora o CMM seja descrito em um livro com mais Estabelecer pontos de verificação.
de 500 páginas, os requisitos para uma organização estar
no nível 5 podem ser concisamente colocados em 52
sentenças: os objetivos das 18 áreas de processo. As
SPTO - Software Project Tracking &
práticas, sub-práticas e exemplos que também são Oversight
descritos no modelo servem apenas como material O objetivo da KPA SPTO é permitir a visibilidade e
informativo para guiar os profissionais de software que acompanhamento do andamento do projeto para que a
estejam adotando o CMM. gerência, nos seus vários níveis, possa tomar as ações
apropriadas quando o projeto desviar de maneira
RM - Requirements Management significativa do que foi planejado.
O objetivo da KPA RM é estabelecer mecanismos • Objetivo 1: É feito um acompanhamento do
para que o produto de software reflita e expectativa do realizado com relação ao que foi planejado.
cliente.
• Objetivo 2: Quando o andamento do projeto desvia
• Objetivo 1: Os requisitos de software são de maneira significativa do que foi planejado ações
controlados para estabelecer uma baseline que será corretivas são executadas e gerenciadas até a sua
usada como base tanto para o desenvolvimento conclusão efetiva.
quanto para atividades de gerência.
• Objetivo 3: Eventuais mudanças de compromissos
• Objetivo 2: Os planos de desenvolvimento, os de quaisquer natureza são negociadas e concordadas
produtos e todas as atividades são mantidos em por todos os grupos afetados.
consistência com os requisitos de software.
Bom senso
Bom senso
Comparar o que foi feito com o que foi planejado.
Documentar os requisitos e os compromissos Atualizar o plano de maneira simples. As tarefas devem
assumidos, mesmo que seja em apenas uma folha de ser pacotes binários: ou terminadas ou não terminadas.
papel. Uma tarefa 87% pronta é sinal de chute.
Se o projeto estiver saindo da linha, parar e
SPP - Software Project Planning replanejar.
O objetivo desta KPA é estabelecer planos efetivos
para servirem como base para as atividades de SSM - Software Subcontract Management
desenvolvimento de software e gerência.
O objetivo do SSM é a seleção de subcontratados
para o desenvolvimento e sua gerência de maneira

Extreme Programming Brasil - São Paulo - dezembro de 2002 9


Antonio Sergio F. Bonato Extreme Programming, Qualidade e Confiabilidade de Software

efetiva. • Objetivo 4: Os grupos afetados e indivíduos são


• Objetivo 1: O contratante seleciona subcontratados mantidos informados da situação e conteúdo do
qualificados. baseline de software.

• Objetivo 2: O contratante e o subcontratado Bom senso


concordam quanto aos compromissos assumidos
Estabelecer baselines e controlar sua mudança.
mutuamente.
• Objetivo 3: O contratante e o subcontratado mantém OPF - Organization Process Focus
comunicação permanente.
Tem por objetivo estabelecer a responsabilidade
organizacional pelas atividades de processo de software
Bom senso
que melhorem a capacitação geral do processo de
Pequenas organizações geralmente não subcontratam. software da organização.
Se subcontratarem, escolher organizações • Objetivo 1: Atividades de desenvolvimento e
competentes e gerenciar seu trabalho.
melhoria do processo de software são coordenadas
através da organização.
SQA - Software Quality Assurance
• Objetivo 2: Os pontos fortes e fracos dos processos
O objetivo da SQA é proporcionar visibilidade aos
de software utilizados são identificados com relação
vários níveis gerenciais dos produtos e processos em uso.
a um processo padrão.
• Objetivo 1: As atividades de SQA são planejadas. • Objetivo 3: Atividades de desenvolvimento e
• Objetivo 2: Os produtos e atividades em uso melhoria do processo de software em nível
atendem a todos os padrões, normas e requisitos organizacional são planejadas.
aplicáveis.
• Objetivo 3: Todos os grupos afetados são Bom senso
informados das atividades do grupo de SQA e dos Atribuir a responsabilidade de melhoria e manutenção
seus relatórios. do processo de desenvolvimento para alguém.

• Objetivo 4: Não conformidades encontradas e não


OPD - Organization Process Definition
resolvidas no contexto do projeto são tratadas pela
gerência superior. O objetivo desta KPA é desenvolver e manter um
conjunto utilizável de processos de software que
melhorem a performance do processo através dos
Bom senso
projetos e forneçam uma base para benefícios
Verificar se os requisitos e os padrões estão sendo cumulativos e de longo prazo para a organização.
atendidos. Utilizar-se de checklists para isso.
• Objetivo 1: Um processo de software padrão para a
SCM - Software Configuration Management organização é desenvolvido e mantido.

O objetivo do SCM é estabelecer e manter a • Objetivo 2: Informações relacionadas ao uso do


integridade de todos os produtos de trabalho ao longo do processo de software padrão da organização pelos
ciclo de vida do projeto. projetos de software são coletadas, revistas e
tornadas disponíveis.
• Objetivo 1: As atividades de SCM são planejadas.
• Objetivo 2: Produtos de trabalho selecionados, os Bom senso
itens de configuração, são identificados, controlados Documentar o processo de desenvolvimento de
e tornados disponíveis. software, em alto nível e de maneira e objetiva.
Objetivo 3: As mudanças dos itens de configuração são Mantenha o processo simples.
controladas.

10
Antonio Sergio F. Bonato Extreme Programming e Qualidade de Software

TP - Training Program software correto e consistente de maneira efetiva e


eficiente.
O objetivo do programa de treinamento é desenvolver
as habilidades e o conhecimento dos indivíduos de modo • Objetivo 1: As tarefas de engenharia de software são
que eles possam desempenhar seus papéis de maneira definidas, integradas e realizadas consistentemente
eficiente e eficaz. para produzir software.
• Objetivo 1: As atividades de treinamento são • Objetivo 2: Produtos de trabalho de software são
planejadas. mantidos consistentes uns com os outros.
• Objetivo 2: Treinamento para desenvolver as
habilidades e o conhecimento necessários para Bom senso
realização de tarefas técnicas e de gerência de Use sempre um processo de desenvolvimento
projeto é fornecido. consistente, mesmo para pequenos projetos. Não queime
fases. Considere este processo quando for fazer o
• Objetivo 3: Indivíduos do grupo de engenharia de planejamento.
software e grupos relacionados ao software recebem
Sempre gaste mais tempo com análise de requisitos,
o treinamento necessário para desempenharem suas design e planejamento dos testes.
tarefas.
IC - Intergroup Coordination
Bom senso
O objetivo da KPA IC é estabelecer meios para o
Os desenvolvedores tem que dominar as técnicas que
grupo de engenharia de software atuar ativamente com os
utilizam.
outros grupos de engenharia de modo que o projeto
O treinamento não precisa ser em sala de aula. satisfaça as necessidades de cliente eficazmente e
Atividades de mentoring muitas vezes são mais eficientemente.
eficientes.
• Objetivo 1: Todos os grupos afetados concordam
com os requisitos do cliente.
ISM - Integrated Software Management
• Objetivo 2: Todos os grupos afetados concordam
O objetivo desta KPA integrar as atividades de
engenharia de software e as de gerenciamento em um com os compromissos entre os grupos de engenharia.
processo de software definido e coerente, adaptado do • Objetivo 3: Os grupos de engenharia identificam,
processo de software padrão da organização e de demais acompanham e resolvem questões intergrupos.
processos relacionados.
• Objetivo 1: O processo de software definido para um Bom senso
determinado projeto é uma versão adaptada do Comunique-se com seu cliente. Registre
processo de software padrão da organização. compromissos. Resolva conflitos.

• Objetivo 2: O projeto é planejado e gerenciado


PR - Peer Reviews
conforme o processo de software definido para o
projeto. O objetivo das revisões por pares é remover defeitos
dos produtos de software precocemente e eficientemente.
Bom senso • Objetivo 1: As atividades de revisão por pares são
Nem todos os projetos exigem o uso do mesmo planejadas.
processo. Por isso, o processo original da organização
• Objetivo 2: Os defeitos dos artefatos de software são
tem que poder ser adaptado para as necessidades do
projeto. identificados e removidos.

Bom senso
SPE - Software Product Engineering
Submeta sempre todo trabalho a alguma espécie de
O objetivo desta KPA é realizar consistentemente um revisão. Inspeções geralmente são o modo mais
processo de engenharia bem definido que integre todas as adequado.
atividades de engenharia de software para produzir

Extreme Programming Brasil - São Paulo - dezembro de 2002 11


Antonio Sergio F. Bonato Extreme Programming, Qualidade e Confiabilidade de Software

QPM - Quantitative Process Management Bom senso


O objetivo desta KPA é controlar a performance do Identificar as causas dos efeitos e evitar que ocorram
projeto de software quantitativamente. A performance do novamente.
processo de software representa os resultados verdadeiros
alcançados por seguir um processo de software. TCM - Technology Change Management
• Objetivo 1: As atividades de gerenciamento O objetivo desta KPA é identificar novas tecnologias
quantitativo de processo são planejadas. e implantá-las na organização de maneira ordenada.

• Objetivo 2: A performance do processo definido • Objetivo 1: A incorporação de mudanças


para um projeto é controlada quantitativamente. tecnológicas é planejada.
• Objetivo 3: A capacitação do processo de software • Objetivo 2: Novas tecnologias são avaliadas para se
padrão da organização é conhecida em termos determinar seus efeitos em termos de qualidade e
quantitativos. produtividade.
• Objetivo 3: Novas tecnologias apropriadas são
Bom senso transferidas para as práticas normais da organização.
Definir poucas métricas simples e coerentes. Coletá-
las com disciplina. Comparar os resultados atingidos. Bom senso
Fazer sempre projetos piloto. Coletar as métricas
SQM - Software Quality Management padrão da organização. Medir o impacto do uso da nova
O objetivo desta KPA é desenvolver um tecnologias nestas métricas. Avaliar o custo/benefício.
entendimento quantitativo da qualidade dos produtos de
software de um projeto e alcançar metas de qualidade PCM - Process Change Management
específicas.
O objetivo desta KPA é melhorar continuamente o
• Objetivo 1: As atividades de gerenciamento de processo de software usado na organização com o intuito
qualidade de software são planejadas. de melhorar a qualidade do software, aumentar a
produtividade e diminuir seu tempo de desenvolvimento.
• Objetivo 2: Metas mensuráveis para a qualidade do
software e suas prioridades são definidas. • Objetivo 1: A melhoria contínua do processo é
planejada.
• Objetivo 3: O progresso verdadeiro em direção ao
atingimento das metas de qualidade para os produtos • Objetivo 2: Toda a organização participa das
de software é quantificado e gerenciado. atividades de melhoria de processo de software.
• Objetivo 3: O processo de software padrão da
Bom senso organização e os processos de software adaptados
Usando-se as metas coletadas na KPA QPM, definir para os projetos são melhorados continuamente.
metas de qualidade a atingir.
Monitorar o atingimento destas metas. Bom senso
Manter um programa de sugestões. Avaliar o uso de
DP - Defect Prevention novas práticas em projetos piloto.

O objetivo desta KPA é identificar a causa de defeitos A XP e o CMM


e evitar que eles ocorram novamente.
Os valores da XP devem ser levados em consideração
• Objetivo 1: As atividades de prevenção de defeitos
em qualquer projeto de software, mesmo que sua
são planejadas. implementação varie radicalmente conforme o ambiente.
• Objetivo 2: As causas comuns dos defeitos são Comunicação e simplicidade, por exemplo, podes ser
procuradas e identificadas. colocadas em outros termos, como coordenação e
elegância. Mas a verdade é que sem elas qualquer projeto
• Objetivo 3: As causas comuns dos defeitos são enfrenta problemas enormes. Os princípios de
priorizadas e sistematicamente eliminadas. comunicação e simplicidade também são princípios de

12
Antonio Sergio F. Bonato Extreme Programming e Qualidade de Software

projeto de processo fundamentais para organizações que tratada pelas histórias, o cliente disponível no local e a
usam o CMM. Quando estão definindo seus processos as integração contínua. As histórias são os acordos dos
organizações devem capturar a mínima informação requisitos entre os clientes e os desenvolvedores. O
essencial necessária, usar bons princípios de projeto ao cliente no local está sempre esclarecendo os detalhes dos
estruturar suas definições e enfatizar a usabilidade e a requisitos, e a integração contínua e os testes de aceitação
serventia. O feedback rápido é crucial para o controle de garantem que os requisitos sejam cumpridos.
processo em tempo real. É necessário ter coragem para
A KPA Software Project Planning é tratada pelo jogo
efetivar a mudança cultural necessária a organização para
do planejamento e pelos releases curtos. O jogo do
movê-la do nível 1 para o nível 2.
planejamento, que inclue os planos de release, os planos
Muito do formalismo que caracteriza a melhoria de de interação e as reuniões diárias demonstra a ênfase da
processo baseada no CMM é devida aos grandes projetos XP no planejamento das atividades. Os releases curtos
ou a severas restrições de confiabilidade, especialmente facilitam o planejamento.
para sistemas que envolvem risco de vida. A estrutura
A KPA Software Project Tracking & Oversight é
hierárquica do CMM é feita para suportar uma ampla
tratada pelo "big visual chart" - um grande gráfico,
gama de implementações dentro do contexto das 18 áreas
atualizado semanalmente, que mostra para todos a
chave de processo e os 52 objetivos que consistem nos
evolução do projeto e outras métricas, pela project
requisitos para um processo de software totalmente
velocity (velocidade do projeto), ou a quantidade de dias
maduro.
de calendário dividida pela quantidade de dias estimada
A medida em que os sistemas vão se tornando para a realização da tarefa. As histórias são os
maiores, algumas das práticas da XP se tornam difíceis compromissos dos releases curtos. O processo de
de implementar. Conforme o projeto cresce, a ênfase na comprometimento para a XP cria expectativas claras para
boa arquitetura se torna crítica para o sucesso do projeto. os clientes e a equipe de desenvolvimento no nível tático
Arquitetura baseada em projeto, projetar para a mudança, e maximiza a flexibilidade do projeto no nível
refactoring e filosofias de projeto similares enfatizam a estratégico.
necessidade de lidar com a mudança de modo
A ênfase da XP nas 40 horas de trabalho é um
sistemático. Variantes destes conceitos, incluindo a
conceito geral de gerenciamento que não é considerado
arquitetura baseada em projeto e equipes de produto
pelo CMM, apesar de se tratar de uma boa prática. A XP
integradas podem ser mais apropriadas para projetos
também tem ênfase no ambiente de trabalho, outra
grandes, talvez em conjunto com a XP dentro das
questão deixada de fora do CMM.
equipes. Levando-se em consideração que o projeto de
arquitetura que enfatiza a flexibilidade é a meta de A KPA Software Subcontract Management não é
qualquer boa metodologia orientada a objetos, então XP tratada pela XP.
(com refactoring) e orientação a objetos foram feitas uma
Embora seja improvável um grupo independente de
para a outra. Equipes multidisciplinares também são
SQA fazer parte da cultura da XP, a KPA Software
problemáticas, uma vez que XP é direcionada somente
Quality Assurance é tratada pela programação aos pares;
para software.
a conformidade aos padrões de codificação, cuja garantia
A principal objeção ao uso da XP na melhoria de é tarefa típica do grupo de SQA, é garantida pela pressão
processo é que ela mal toca nas questões gerenciais e dos pares no ambiente de XP. Uma vez implantado, um
organizacionais que o CMM enfatiza. Colocar em prática processo baseado em CMM tem mecanismos para
o tipo de ambiente altamente colaborativo que a XP verificar objetivamente a aderência aos requisitos,
assume requer gerenciamento esclarecido e apropriada padrões e procedimentos. A dependência da XP à pressão
infra-estrutura organizacional. A conversa de que um dos pares, mesmo que eficiente na maioria dos
processo disciplinado ao modo CMM é antiético para ambientes, pode ser vulnerável a pressões externas, e esta
XP não é convincente. XP também é um processo vulnerabilidade deve ser considerada no nível
disciplinado e bem definido. Na verdade, XP e CMM organizacional.
podem ser considerados complementares. O CMM diz o
A KPA Software Configuration Management é
que deve ser feito em linhas gerais, enquanto a XP e um
parcialmente tratada via propriedade coletiva do código,
conjunto de melhores práticas que contém informações
releases curtos e integração contínua. Mesmo que não
de como fazer - um modelo de implementação - para um
completamente e explicitamente tratada, a gerência de
tipo de ambiente em particular. As práticas da XP podem
configuração está implícita nestas praticas. A integração
ser compatíveis com as intenções de uma área chave de
contínua, por exemplo, coloca o código sob controle de
processo, mesmo que não a realizem completamente [4].
configuração. A propriedade coletiva do código
No nível 2, a KPA Requirements Management é proporciona um certo controle de mudança, enfatizado

Extreme Programming Brasil - São Paulo - dezembro de 2002 13


Antonio Sergio F. Bonato Extreme Programming, Qualidade e Confiabilidade de Software

pelas histórias dos releases curtos. Mas a propriedade pelo feedback devido aos releases curtos. A satisfação
coletiva de código pode ser problemática em sistemas das áreas chaves de processo do CMM pela XP, dentro
grandes, e canais de comunicação mais formais devem do domínio apropriado, está sumariada na tabela 1.
ser estabelecidos para serem efetivos no controle de
mudança.
kpas satis- kpas satis- kpas alta satisfa-
No nível 3, a KPA Organization Process Focus é nível 2 fação nível 3 fação maturi- ção
tratada no nível de equipe em vez de sê-lo no nível dade
organizacional, mas a filosofia por trás da adoção da XP - RM XX OPF X QPM --
uma prática por vez e regras justas - implica em focar em SPP XX OPD X SQM --
questões de processo. Uma vez que a XP foca nos SPTO XX TP --
processos de engenharia de software em vez de focar em SSM -- ISM -- DP X
questões de infra-estrutura organizacional, este e outros SQA X SPE XX TCM --
processos que estejam no nível de organização devem ser SCM X IC XX PCM --
tratados de maneira independente pelas organizações que PR XX
estejam adotando a XP. De modo análogo, a KPA
Organization Process Definition e a KPA Training TABELA 1 - Satisfação das KPAs do CMM pela XP - XX significa
totalmente atendido, X significa parcialemente atendido e -- não aten-
Program são parcialmente tratadas por vários livros, dido
artigos, cursos e sites sobre XP, mas questões
organizacionais estão fora do escopo da mesma. Como Muitas das áreas chave de processo parcialmente
conseqüência, a KPA Integrated Software Management cobertas ou não tratadas pela XP são sem dúvida
não pode ser tratada uma vez que não há processo nenhuma tratadas em projetos reais. A XP não pode
organizacional para adaptar. sobreviver sem gerenciamento e sem suporte de infra-
A KPA Software Product Engineering é muito bem estrutura, mesmo que ela não fale disso explicitamente.
endereçada de muitas formas pela Extreme Programming Parece justo afirmar que a XP foca no trabalho técnico,
com as metáforas, o projeto simples, o refactoring, o enquanto o CMM foca no trabalho gerencial, mas a
mothball tour - congelar modelos relacionados a código preocupação com questões culturais é evidente em
que não vai mais sofrer alterações, os coding standards e ambas.
os testes. A ausência de documentação de projeto seria
uma preocupação em muitos ambientes, tais como
Conclusão
sistemas de tempo real, sistemas muito grandes ou
Usar metodologias ágeis não é para qualquer um. Há
equipes virtuais. Nestes ambientes, bons projetos são
uma certo número de coisas que se deve ter em mente
essenciais para o sucesso, e a estratégia de refactoring
quando se decide seguir este caminho. Entretanto, estas
pode ser arriscada. Por exemplo, fazer refactoring após
metodologias são largamente aplicáveis e devem ser
um sistema ter provado ser satisfatório a requisitos de
usadas por mais pessoas do que as que atualmente
tempo real pela técnica da análise monotônica de taxa
consideram usá-las.
significaria que toda a análise teria de ser refeita -
assumir que a mudança não tem um custo alto não vale Nas organizações de hoje, a metodologia mais comum
para este tipo de ambiente. é o code and fix. Aplicando mais disciplina do que caos
certamente irá ajudar, e a abordagem ágil tem a vantagem
A KPA Intergroup Coordination é tratada pelo cliente
de serem muito menos trabalhosa de se adotar do que as
no local e a programação aos pares. A ênfase da XP na
metodologias pesadas. Muito da vantagem dos métodos
comunicação parece resultar em uma solução que
ágeis está no fato de eles serem leves. É mais provável
compreende a coordenação intergrupos e o
que processos mais simples sejam seguidos quando se
desenvolvimento integrado de processo e produto,
está acostumado a não seguir processo nenhum.
embora o contexto somente de software ignore ambientes
multidisciplinares. Uma das maiores limitações destas novas
metodologias está em como elas lidam com equipes
A KPA Peer Reviews é tratada pela programação aos
maiores. Não há registro na literatura do uso destas
pares. A programação aos pares pode ser mais poderosa
metodologias em projetos que envolvam mais de 50
do que a revisão por pares, comparando-se a leitura de
pessoas.
código e a programação propriamente dita, embora a falta
de estrutura possa diminuir a eficácia. As metodologias ágeis são boas quando os requisitos
são incertos ou voláteis. Quando não se tem estabilidade
Poucas das KPAs dos níveis 4 e 5 são tratadas pela
nos requisitos fica difícil manter um projeto estável e
XP em um sentido rigorosamente estatístico, embora a
seguir um processo planejado. Nestas situações o uso de
KPA Defect Prevention possa ser parcialmente tratada

14
Antonio Sergio F. Bonato Extreme Programming e Qualidade de Software

um processo ágil é mais confortável. Geralmente a maior funcionalidade.


barreira é o cliente. É importante fazer o cliente entender
que seguir um processo preditivo é arriscado quando os Bibliografia
requisitos são instáveis.
Isto posto, fica claro que o uso de uma metodologia [1] FOWLER, Martin - The New Methodology -
ágil é melhor do que nada. Mas usar a XP - uma Software Development Magazine -
metodologia ágil - me garante software de qualidade, ou Dezembro/2000
é melhor continuar com o code and fix e não perder meu [2] BECK, Kent - Extreme Programming
tempo com isso? Explained - Addison Wesley - 2000
A maior parte da XP consiste de boas práticas que MILLER, Roy W.; COLLINS, Christopher T. -
[3]
deveriam ser sabiamente consideradas em qualquer
XP Distilled - IBM DeveloperWorks -
ambiente. Enquanto o mérito destas práticas possa ser
Março/2001
discutido em comparação com outros, nenhuma delas
deve ser arbitrariamente rejeitada. Colocar todas estas [4] PAULK, Mark C. - Extreme Programming from
práticas juntas em uma metodologia é uma mudança de a CMM Perspective - IEEE Software -
paradigma. Além disso, a XP atende a boa parte das Novembro/2001
KPAs do nível 2 e 3 do CMM, isto quando se faz uma
[5] PAULK, Mark C.; et al - The Capability
leitura menos rigorosa destas KPAs, usando-se o bom
Maturity Model: guidelines for improving the
senso.
software process - Addison Wesley - 1994
A XP fornece uma perspectiva sistemática para a
[6] PAULK, Mark C. - Using the Software CMM
programação, do mesmo modo que o CMM fornece uma
with Good Judgment - ASQ Sofware Quality
perspectiva sistemática a melhoria de processo
Professional, Junho/1999
organizacional. Organizações que querem melhorar sua
capacitação deveriam tirar vantagem das boas idéias de [7] MINISTÉRIO DA CIÊNCIA E TECNOLOGIA.
ambos e usar o bom senso no uso e na aplicação destas Secretaria de Política de Informática. Sociedade
idéias. SOFTEX. Levantamento do Universo das
O CMM foca nas questões de gerenciamento Associadas SOFTEX. Brasilia. Ago 2001.
associadas com colocar processos eficientes e eficazes [8] The Standish Group International. The CHAOS
em prática, juntamente com uma melhoria sistemática de Report. Dennis, MA, 2000.
processo. A XP é um conjunto específico de práticas -
uma metodologia - que é efetiva dentro do contexto das
equipes pequenas e que trabalham juntas. Ambas tem
boas idéias que podem ser sinergéticas, particularmente
em conjunto com outras boas práticas de engenharia e
gerência. É questionável se a XP, como publicada, tem
uso em sistemas onde há risco de vida ou sistemas de alta
confiabilidade. A falta de documentação de projeto e a
falta de ênfase na arquitetura seriam julgadas decisões
arriscadas pela maioria dos profissionais competentes,
mas uma das virtudes da XP está em que ela pode ser
mudada e melhorada para diferentes ambientes.
Conclue-se que a XP é capaz de produzir software de
qualidade, mas seu uso é limitado. Mas o próprio autor,
ciente destas limitações, estabelece o ambiente ideal para
o uso de XP: equipes pequenas ou médias, requisitos
instáveis, sistemas comerciais onde o maior risco
envolvido é o financeiro. Levando-se em consideração eu
a maioria das empreitadas de desenvolvimento de
software tem estas características, e justamente por isso
não usam metodologia nenhuma, pode-se considerar que
o uso da XP pode resolver grande parte dos recorrentes
problemas de desenvolvimento: custo e tempo maiores do
que o previsto, baixa qualidade e diminuição na

Extreme Programming Brasil - São Paulo - dezembro de 2002 15

Você também pode gostar