Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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
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.
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
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.
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:
8
Antonio Sergio F. Bonato Extreme Programming e Qualidade de Software
10
Antonio Sergio F. Bonato Extreme Programming e Qualidade de Software
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
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
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