Introdução a Metodologia XP (E Xtreme Programming)
O uso de metodos ageis no desenvolvimento de software
1. O uso de métodos ágeis no
desenvolvimento de software
Everton Arlindo Weliton Pereira
03557 03556
2. 1
1. Introdução
Toda empresa precisa usar um sistema para realizar e controlar suas tarefas de
rotina. Por isso as indústrias de desenvolvimento de softwares estão tendo uma grande
importância na atualidade.
Desenvolver software é uma atividade difícil e arriscada, um dos motivos é que o
software é abstrato, ou seja não é como uma casa que você pode ver a evolução da
construção. Segundo estatísticas um dos maiores riscos no seu desenvolvimento são:
gastos que superam o orçamento, consumo de tempo que supera o cronograma,
funcionalidades que não resolvem os problemas dos usuários, baixa qualidade dos
sistemas desenvolvidos e cancelamento do projeto por inviabilidade.
Segundo o site DevMedia metodologia de desenvolvimento de software é um
conjunto de atividades e resultados associados, que auxiliam na produção de software.
Todas as metodologias de desenvolvimento tentam, entre outras coisas, reduzir o alto
risco associado ao desenvolvimento de software. Para isso diversas metodologias de
desenvolvimento são aplicadas, devido às dificuldades dos primeiros modelos de
desenvolvimento , que eram: demora na entrega de um produto para o cliente,ou seja
quanto maior era o projeto, mais demorava para ser entregue ao cliente, maior era o seu
custo,maior era o seu índice de erros,etc..
Os profissionais de TI perceberam que nem sempre os clientes sabiam o que
queriam , ou seja havia às frequentes mudanças de escopo após o projeto ser entregue,
porém quando recebiam o sistema, conseguiam entender melhor o problema e
consequentemente enxergar uma melhor solução.Como resposta aos diversos fracassos
nos projetos de softwares que utilizavam processos de desenvolvimento tradicionais,
fadados ao fracasso por requisitos e especificações incompletas ou a falta de
envolvimento do cliente no projeto, foi criado o manifesto ágil. Este foi um projeto que
reuniu diversos profissionais de desenvolvimento de software com o objetivo de discutir
3. 2
melhores práticas no processo da construção destes, este é o assunto que abordaremos
nesse artigo.
2. Metodologia Ágil
De acordo com Pressman (2011, p. 82), “métodos ágeis se desenvolveram em um
esforço para sanar fraquezas reais e perceptíveis da engenharia de software
convencional”, por oferecer importantes benefícios.
Pressman (2011), a metodologia ágil, ou movimento ágil, nasceu em 2001, a partir
da reunião de 17 profissionais (desenvolvedores, autores e consultores da área de
software) que buscavam melhorias nos processos de desenvolvimento de software. Com
isso, na tentativa de desvendar melhores formas de desenvolvimento, foram criados os
valores da metodologia ágil, que segundo Pressman (2011, p. 81) são:
● Indivíduos e interações acima de processos e ferramentas
● Software operacional acima de documentação completa
● Colaboração dos clientes acima de negociação contratual
● Respostas a mudanças acima de seguir um plano.
Isso mostra que a metodologia ágil se preocupa primeiramente com a interação
com o cliente e colaboração do cliente dele e com o software operacional funcionando.
Documentos, processos, ferramentas tem importância secundária, pois o foco é na
interação com o cliente e o software sendo entregue em partes funcionais. Quando você
foca em pessoas, software, clientes e na resposta à mudanças, seu projeto sai do papel
com mais velocidade e qualidade.
Em Agile (2017), esta ideia é reforçada com os doze princípios do Manifesto Agil:
● Nossa maior prioridade é satisfazer o cliente através da entrega
contínua e adiantada de software com valor agregado.
4. 3
● Mudanças nos requisitos são bem-vindas, mesmo tardiamente no
desenvolvimento. Processos ágeis tiram vantagem das mudanças
visando vantagem competitiva para o cliente.
● Entregar frequentemente software funcionando, de poucas semanas
a poucos meses, com preferência à menor escala de tempo.
● Pessoas de negócio e desenvolvedores devem trabalhar diariamente
em conjunto por todo o projeto.
● Construa projetos em torno de indivíduos motivados. Dê a eles o
ambiente e o suporte necessário e confie neles para fazer o trabalho.
● O método mais eficiente e eficaz de transmitir informações para e
entre uma equipe de desenvolvimento é através de conversa face a
face. • Software funcionando é a medida primária de progresso.
● Os processos ágeis promovem desenvolvimento sustentável. Os
patrocinadores, desenvolvedores e usuários devem ser capazes de
manter um ritmo constante indefinidamente.
● Contínua atenção à excelência técnica e bom design aumenta a
agilidade. • Simplicidade – a arte de maximizar a quantidade de
trabalho não realizado – é essencial.
● As melhores arquiteturas, requisitos e designs emergem de equipes
auto organizáveis.
● Em intervalos regulares, a equipe reflete sobre como se tornar mais
eficaz e então refina e ajusta seu comportamento de acordo.
Os métodos ágeis utilizam o processo de entrega incremental, e considera que o
custo das mudanças seja incorporado no projeto do software, onde as entregas
constantes e incrementais são realizadas periodicamente.
Com o uso da metodologia ágil é possível prever prazos, custos, mudanças de
escopo, identificar problemas, fazer estimativas do andamento de desenvolvimento.
Identificados através da boa comunicação interna da equipe juntamente com o contato
constante com o cliente como feedback para direcionar o desenvolvimento do software e
atender os requisitos desejados.
5. 4
Segundo Sommerville, os incrementos iniciais do sistema podem fornecer uma
funcionalidade de alta prioridade, de forma que os clientes logo poderão obter valor do
sistema durante seu desenvolvimento. Os clientes podem assim ver os requisitos na
prática e especificar mudanças para serem incorporadas nos releases posteriores do
sistema.
Em relação aos custos, com a metodologia ágil, eles se tornam mais uniformes se
comparados a outros processos convencionais(orientados a documentação), podendo ser
administrados durante o desenvolvimento e controle de mudanças.A seguir temos alguns
exemplos de metodologia ágil.
3. Extreme Programming (XP)
Extreme Programming, ou simplesmente XP é uma das mais conhecidas
metodologia de desenvolvimento de software que segue os princípios do Manifesto Ágil.
Embora seu marco de criação seja o ano de 1996, a junção de princípios e boas práticas
de programação são frutos de um processo de evolução de pelo menos uma década em
que Kent Beck e Ward Cunningham trabalharam na Tektronics, Inc. como consultores de
problemas em SmallTalk (CASTRO, 2007).
A metodologia Extreme Programming(XP) é a combinação de uma abordagem
colaborativa, livre de desconfianças, com um conjunto de boas práticas de engenharia de
software que são eficientes por si só, individual e independentemente do contexto. Cada
uma dessas práticas contribui para o aumento da qualidade do software e ajuda a garantir
que o produto final agregue valor e atenda as necessidades do negócio (PRIKLADNICKI;
WILLI e MILANI, 2014).
Recomenda-se o uso da metodologia XP no desenvolvimento de projetos em que
os requisitos sejam incertos e que possam mudar constantemente e em uma equipe de
desenvolvimento de no máximo doze pessoas, possibilitando o desenvolvimento iterativo
e a utilização do paradigma da orientação a objetos (POO) na construção do sistema
(Ramos, 2013).
6. 5
Sua metodologia é composta por um conjunto de cinco valores adotados pelo XP:
● Comunicação - Comunicação clara e transparente interna entre a
equipe de desenvolvimento e também entre o cliente e a
equipe.Tradicionalmente na indústria do software, as equipes de
desenvolvimento gastam um valioso esforço na tentativa de trocar
informações por meio de extensos documentos escritos. Devido à
ineficiência desse meio, nem sempre é possível reproduzir com
exatidão uma informação e dessa forma elas são freqüentemente
interpretadas de forma incorreta ou incompleta (TELES, 2006).
● Simplicidade - Na hora de desenvolver o software, programando
códigos simples, de fácil entendimento e manutenção. E também
desenvolver apenas o suficiente para atender as necessidades atuais
do cliente, evitando trabalho especulativo, que seria desenvolver uma
funcionalidade pensando em problemas futuros.
● Feedback - Reuniões constantes da equipe com o cliente para validar
as iterações que estão sendo produzidas.O contato incessante entre
o cliente e a equipe de desenvolvimento é o que se pode chamar de
feedback constante. Dessa forma, o cliente pode freqüentemente ter
uma parte do software funcional para avaliar e com isso, pode sugerir
novas características ao mesmo tempo em que pode identificar
eventuais não conformidades com os requisitos. E assim, os
desenvolvedores podem implementar rapidamente novas
características e corrigir eventuais erros já nas próximas versões a
serem entregues ao cliente (SOARES, 2004).
● Coragem - Para tomar decisões diante de cenários que podem mudar
drasticamente. E ter um pensamento diferenciado e não encarar as
mudanças de forma negativa mas sim em oportunidades que
precisam ser melhoradas e exploradas em benefício da equipe e do
projeto.
● Respeito - Respeito com a equipe e com o comprometimento do
software, respeito com o cliente.
7. 6
3.1 Práticas XP
As boas práticas da XP são um conjunto de atividades que as equipes XP utilizam
enquanto produzem softwares. Antes de qualquer coisa, é necessário ter confiança
nestas boas práticas e consciência de que elas devem ser aplicadas em conjunto.
Quando aplicadas isoladamente, elas não trazem os mesmos resultados por que os
pontos fracos de cada prática são protegidos pelos pontos fortes das outras práticas
(BORBOREMA, 2007).
As práticas relacionadas com o desenvolvimento e qualidade do software são:
3.1.1 PLANEJAMENTO
O desenvolvimento e feito em iterações semanais dos desenvolvedores com o
cliente, onde o cliente identifica as funcionalidades e os desenvolvedores as estimam. O
objetivo é determinar o escopo das iterações para a entrega das pequenas versões em
partes do software (Small Releases).
3.1.2 PEQUENAS VERSÕES
São partes do software que já estão prontas ao longo das iterações e são
implantadas para o uso do cliente. Sendo que funcionalidades prioritárias são
desenvolvidas mais cedo para serem entregues mais rapidamente ao cliente, pois
prioriza-se o que ele mais precisa no momento.
3.1.3 METÁFORAS
E uma linguagem comum que todos os envolvidos devem possuir. Procura facilitar
a comunicação com o cliente. Traduzir as palavras do cliente para o que ele espera
dentro do projeto. E quanto aos desenvolvedores e analistas em contato com este cliente,
conseguir também explicar de forma, simples, clara e exemplificada os detalhes técnicos
que precisam ser passados, de uma forma que o cliente entenda.
3.1.4 PROGRAMAÇÃO EM PARES
Consiste em duas pessoas trabalhando em uma única máquina, onde um
programa e o outro analisa e dá sugestões ou críticas, podendo revezar de função
periodicamente. Essa prática ajuda na comunicação e o aprendizado e como resultado
um projeto de maior qualidade.
3.1.5 REFACTORING
Refactoring é o processo de reorganizar o código fonte de um software para
melhorar sua qualidade interna, facilitar a leitura e diminuir o tempo gasto com
manutenção, sem contudo prejudicar o desempenho e alterar seu comportamento
8. 7
externo. Aplicado em sistemas orientados a objetos, a técnica é fundamental para tornar o
código mais legível e encontrar facilmente erros em algoritmos mal escritos (NETO,
2007).
Segundo Teles (2006), um projeto em XP não existe sem a prática de refactoring,
pois a agilidade necessária para alterar e incluir novas funcionalidades constantemente
em um sistema só é possível com um código de alta qualidade que seja organizado e de
fácil compreensão. Para que isso aconteça, a XP determina que qualquer um da equipe
faça o refactoring em qualquer parte do código que esteja pouco legível.
3.1.6 PROPRIEDADE COLETIVA
Todos têm acesso e podem modificar o código fonte. Esta prática ajuda ampliar o
conhecimento do projeto dentro a equipe onde todos ficam sabendo de tudo sobre o
projeto e ajuda no andamento do projeto.
3.1.7 INTEGRAÇÃO
A integração ao sistema atual sempre será feita assim que a funcionalidade estiver
concluída. Ajuda a diminuir conflitos e possibilidades de erros, pois após a integração,
deverá ser feito uma bateria de testes, que são os testes de integração para verificar se o
sistema todo está funcionando corretamente após esta nova integração.
3.1.8 CODIFICAÇÃO
A equipe precisa estabelecer regras e padrões para programar de forma que o
código fique homogêneo, de fácil entendimento e manutenção. De como que pareça que
foi feito por uma pessoa só, independente da quantidade de pessoas na equipe.
Práticas XP
9. 8
Fonte - Devmedia
4. SCRUM
Segundo o site DevMedia Scrum é um framework, uma estrutura bem definida e
fundamentada no processo empírico, atende uma gama de áreas além da TI para
gerenciamento de projetos. Um framework não pode ser confundido com um guia passo-
a-passo, com respostas definitivas para resolução de problemas mais específicos de
projetos. Mas pode, sim, dar vida nova ao ciclo de desenvolvimento de software,
otimizando a previsibilidade e controlando riscos. É sustentado pelos pilares da
transparência, inspeção e adaptação. Buscando visibilidade nos resultados, detecção de
variações inaceitáveis no processo e suplantando-os.Apesar de alguns profissionais
considerarem o Scrum como um método ágil, por mais que essa forma de
desenvolvimento forneça ferramentas e maneiras de se conduzir o desenvolvimento ele
não pode ser considerado uma metodologia. A diferença entre uma metodologia e um
framework, é que a metodologia fornece praticamente tudo que seja necessário para
gerenciar um projeto, ela é bem mais completa que um framework em relação a como
fazer e o que fazer. Já o framework indica qual a melhor trajetória, mas não diz o como
fazer, ele também pode ser usado com outras técnicas e processos, fornece a estrutura
básica como suporte. Resumidamente o Scrum é um framework iterativo e incremental,
pois usa experiências anteriores para aperfeiçoar controle de riscos e decisões futuras.
No Scrum os projetos são divididos em ciclos, geralmente mensais, que são
chamados de Sprints, forma no qual o trabalho é dividido em iterações. As
funcionalidades a serem implementadas em um projeto são mantidas em uma lista que é
conhecida como Product Backlog ( lista contendo todas as funcionalidades desejadas
para um produto ). No início de cada iteração (Sprints),uma reunião de planejamento na
qual o dono do produto, ou solicitante do produto,prioriza os itens do Product Backlog e a
equipe seleciona as atividades que ela será capaz de implementar durante o primeiro
Sprint. As tarefas reunidas em um Sprint são transferidas do Product Backlog para o
Sprint Backlog. A cada dia de trabalho na Sprint, a equipe faz uma reunião (normalmente
de matutina), essa reunião é chamada Daily Scrum.O objetivo é compartilhar
10. 9
conhecimento sobre o que foi feito no dia anterior, identificar falhas e priorizar o trabalho
do dia que se inicia.
5-CONCLUSÃO
Através desta pesquisa podemos concluir e ver a importância dos Métodos Ágeis
XP e SCRUM no desenvolvimento de projetos de software garantindo eficácia e alta
qualidade.
Devido a evolução da tecnologia esses processos se tornaram complemento um do
outro tornando-se ótimas ferramentas de trabalho, sendo que o XP é utilizado para
desenvolvimento e o SCRUM para um framework.
No Scrum os ciclos são divididos em períodos de 2 a 4 semanas, esse período é
conhecido como Sprint. Dentro do Sprint existe um conjunto de atividades que deve ser
executado. As funcionalidades que o projeto deve alcançar ficam em uma lista, Product
Backlog. E é realizada uma reunião onde são definidas as atividades a serem executadas.
Já a XP busca princípios como: O princípio da comunicação, onde o objetivo é o
melhor relacionamento entre o cliente e os desenvolvedores. Simplicidade, em
implementar o software com o menor número possível de classes e métodos.O feedback,
buscar sempre informações sobre o código e sobre o cliente. A coragem, necessária para
tomar decisões simples, buscar novas soluções e cobrar constante feedback do cliente.
O Scrum e o XP compartilham as práticas do manifesto ágil, como equipes
pequenas trabalhando em requisitos instáveis ou desconhecidos em iterações curtas para
fornecer maior visibilidade no desenvolvimento. Eles podem se complementar se bem
utilizados. Enquanto o XP pode cuidar da parte gerencial do projeto, fazendo que seja
entregue dentro do prazo. O Scrum cuida das práticas de engenharia de software e como
serão aplicadas no projeto.
12. 11
REFERÊNCIAS
● AGILE, Agile Manifesto. Princípios por trás do Manifesto Ágil. Disponível em:
<http://agilemanifesto.org/iso/ptbr/principles.html>. Acesso em: 18 set. 2017.
● Conceitos básicos sobre Metodologias Ágeis para Desenvolvimento de Software.
<https://www.devmedia.com.br/conceitos-basicos-sobre-metodologias-ageis-para-
desenvolvimento-de-software-metodologias-classicas-x-extreme-
programming/10596>
● PRESSMAN, Roger S. Engenharia de software: uma abordagem profissional.
Recurso eletrônico. 7. ed. Porto Alegre: AMGH, 2011.
● Sommerville, Ian. Engenharia de Software, Person, São Paulo, 2010.
● https://www.devmedia.com.br/praticas-em-xp-extreme-programming/29330
● http://engenhariadesoftwareuesb.blogspot.com/2012/12/extreme-programming.html