UTILIZAÇÃO DAS METODOLOGIAS ÁGEIS XP E
SCRUM PARA O DESENVOLVIMENTO RÁPIDO DE
APLICAÇÕES
Marcelo Augusto Lima Painka¹, Késsia Rita da Costa Marchi¹
¹Universidade Paranaense (Unipar)
Paranavaí – PR – Brasil
[email protected], [email protected]
Resumo. Este artigo constitui uma descrição de um estudo da utilização das
metodologias ágeis XP e Scrum para o desenvolvimento rápido de aplicações,
visando apresentar individualmente as características de cada metodologia,
de modo a auxiliar na escolha de um modelo que seja o mais adequado
possível para o tipo de aplicação que será desenvolvida e apresentando a
interação que é possível ter entre os dois frameworks.
1. Introdução
Nos anos 70, devido à chamada Crise do Software, muitos projetos enfrentavam
dificuldades para serem entregues devido ao grande crescimento pela demanda do
produto. Alguns destes problemas deviam-se ao fato de não existir uma metodologia
definida para a criação do software [Sommerville 2007].
As metodologias ágeis surgiram como uma alternativa as metodologias
tradicionais, visando a agilidade no desenvolvimento de softwares, onde é possível fazer
a incorporação de modificações que venham a ocorrer no decorrer do projeto. As
metodologias ágeis mais usadas atualmente são a SCRUM e o XP (Extreme
Programming).
Em 2001 um grupo de 17 desenvolvedores, produtores e consultores de software
assinaram o chamado “Manifesto para o Desenvolvimento Ágil de Software”, onde
declaravam que estavam descobrindo maneiras melhores para se desenvolver software, e
passaram a valorizar os seguintes conceitos: Indivíduos e interações mais que processos
e ferramentas; Software em funcionamento mais que documentação abrangente;
Colaboração com o cliente mais que negociação de contratos; Responder a mudanças
mais que seguir um plano [Beck et al 2001].
A seguir constam alguns modelos de processo de softwares ágeis que serão
abordados no artigo:
•
XP
•
Scrum
Existem outros modelos de processo, porém, não haverá uma investigação
profunda sobre eles.
Este artigo tem como objetivo fazer uma análise das características das
metodologias ágeis XP e Scrum, de forma a auxiliar na escolha de um modelo que seja
adequado ao tipo de aplicação que será desenvolvida, onde serão abordadas suas
características.
2. Extreme Programming (XP)
O trabalho inicial foi realizado por Kent Beck, que diante de uma crise, no ano de 2002,
foi constatado através de pesquisas que 45% das funcionalidades do software nunca são
utilizadas, 19% são usadas raramente, 16% às vezes, 13% frequentemente e apenas 7%
são utilizadas sempre. Perante a isso, Beck desenvolveu a metodologia chamada de
Extreme Programming, ou técnica de XP [Teles 2005].
O XP tem foco em sistemas que são voltados para as seguintes características
[Teles 2005]:
•
Projetos cujos requisitos são vagos e mudam com frequência;
•
Desenvolvimento de sistemas orientado a objeto;
•
Equipes pequenas, preferencialmente até 12 desenvolvedores;
•
Desenvolvimento incremental (ou iterativo), onde o sistema começa a ser
implementado logo no início do projeto e vai ganhando novas funcionalidades
ao longo do tempo.
Uma das características do XP é assegurar que o cliente receba o máximo de
valor de cada dia de trabalho da equipe de desenvolvimento. O XP é organizado em
torno de um conjunto de valores e práticas que atuam de forma harmônica e coesa para
assegurar que o cliente sempre receba um alto investimento em software [Teles 2005].
O processo de desenvolvimento XP é baseado em quatro valores fundamentais
que servem como parâmetro para o sucesso no desenvolvimento do software e para
garantir a satisfação do cliente. Estes valores podem ser observados na Figura 1 [Teles
2005].
Figura 1. Valores do XP [Junior 2012]
Feedback: A equipe de desenvolvimento é alimentada com o retorno que o cliente
necessita. O cliente reavalia suas necessidades e passa para a equipe analisar o que
precisa ser implementado, ou fazer alterações naquilo que já faz parte do software. É
com o feedback que o cliente conduz o desenvolvimento diário do projeto e garante que
a equipe direcione suas atenções para aquilo que realmente irá gerar mais valor [Teles
2005].
O feedback é imprescindível, seja na etapa de codificação, onde o programador
irá efetuar testes em cada trecho do código, seja na comunicação com o cliente, onde irá
ser verificado se os requisitos que o cliente necessita foram atendidos de forma simples
e eficaz [Beck 2004 apud Toniazzo 2007].
Coragem: Pelo fato do XP ser uma metodologia diferenciada das metodologias
tradicionais, ela acaba desafiando as metodologias clássicas em certos pontos, ela
aborda o desenvolvimento sobre um outro aspecto, ter coragem no desenvolvimento do
projeto é essencial, pois por várias vezes é preciso tomar decisões que em primeira
impressão podem parecer errados, porém acabam se mostrando decisões valiosas. Um
exemplo disso é analisar um determinado código e decidir se é valido continuar a
escrevê-lo ou se será necessário refazê-lo novamente de uma forma mais simples e
eficaz [Toniazzo 2007].
Comunicação: A comunicação é ponto fundamental para qual for a atividade que seja
desenvolvida em equipe, seja em qual área for, e no processo de desenvolvimento de
software não é diferente, é por meio de uma comunicação ágil que todo o processo é
baseado [Toniazzo 2007].
A metodologia XP da ênfase na comunicação, e da grande importância em fazêla de diversas formas, pois os processos tradicionais de desenvolvimento, essa
comunicação é feita basicamente com a escrita, os analistas descrevem e documentam o
que precisará ser feito e os programadores executam. Porém, os programadores têm
dificuldade em documentar seu trabalho [Toniazzo 2007].
Simplicidade: Durante a análise de uma dos requisitos de um projeto, o seu treinador
precisa se perguntar qual é a forma mais simples possível de se realizar esta tarefa.
Desta forma o XP mostra que a simplicidade é fundamental para se obter sucesso no
projeto [Beck 2004 apud Toniazzo 2007].
Muitos desenvolvedores têm dificuldade em encontrar está resposta, pois
desenvolver de forma simples não é fácil. Um requisito normalmente é ser
complementado futuramente com determinadas funcionalidades que o cliente ainda não
solicitou, tal funcionalidade será importante no futuro. O treinador da equipe tem como
responsabilidade lembrar os integrantes da importância de se pensar de maneira simples
[Toniazzo 2007].
3. SCRUM
Schwaber [2002] define o Scrum como “um processo Ágil ou ainda um framework para
gerenciamento de projetos Ágeis. É um processo de gerência de projetos, certamente
não é uma metodologia, pois isto seria pesado demais”.
O framework Scrum é um framework onde se pode tratar e resolver problemas
complexos e adaptativos, ao mesmo tempo em que se desenvolvem produtos que sejam
produtivos e criativos e que tenham o maior valor possível agregado. Umas das
características do Scrum é ser [Schwaber e Sutherland 2011]:
•Leve
•Simples de entender
•Extremamente difícil de dominar
O framework Scrum é constituído da seguinte forma: inicialmente é feito o
desenvolvimento do product backlog através das denominadas user stories, em seguida
é definido o product backlog, que é uma lista de requisitos necessários para o
desenvolvimento do produto. Ele é definido em tarefas e transformado em sprint
backlog, essas serão as tarefas que serão desenvolvidas durante a sprint. A duração de
cada sprint pode ser de certa de 2 a 4 semanas, e cada item da sprint backlog
corresponde a um dia de trabalho, em seguida, a cada sprint é obtido o product
increment [Junior 2012].
O Scrum possui alguns papéis, estes estão representados na figura 2. Estes papéis
serão estudados a seguir.
Figura 2. Papéis do Scrum
O Product Owner (PO) é a pessoa ou o representante do cliente que irá definir o
projeto, ele irá demonstrar a equipe a visão do produto e criar as fronteiras para limitar e
proteger a equipe e questões de padrões, tempo e preços [Silveira 2008 apud Junior
2012].
O PO é quem possui os conhecimentos do negócio e da necessidade do cliente,
ele é responsável em reunir as informações e conhecimentos necessários para a equipe
de desenvolvimento entender o que será preciso para desenvolver o produto [Rossi
2012]. O Scrum Master possuiu a responsabilidade de fazer o processo Srum funcionar
em sua totalidade sem nenhum impedimento fazendo com que a equipe trabalhe em suas
tarefas rapidamente [Carvalho 2009 apud Junior 2012].
O Scrum Master é responsável por fazer o time aderir as teorias, práticas e regras
do Scrum. O Scrum Master auxilia para os que estão fora do time Scrum a entender
quais as suas interações com o Time Scrum são úteis e quais não são. O Scrum Master
maximiza o valor criado pelo Time Scrum, ajudando todos a mudarem as interações
[Schwaber e Sutherland 2011].
O time Scrum (equipe) se organiza automaticamente e é multifuncional, o
próprio time escolhe qual a melhor forma de se executar determinada tarefa, não tendo a
necessidade de se ter um gestor para determinar as atividades dos desenvolvedores e o
que será desenvolvido, pois o time possui autonomia suficiente para fazer a execução do
trabalho [Schwaber e Sutherland 2011].
4. Metodologia
Para a realização deste artigo foram feitas pesquisas em artigos e sites da Internet. Após
as pesquisas foram feitas a identificação dos capítulos e suas respectivas descrições.
Desta forma, compondo o projeto final.
5. Conclusão
Na Engenharia de Software, ao se desenvolver um sistema, na maioria das vezes não se
utiliza apenas conceitos de um tipo de modelo de processo, sempre irão ser utilizados
idéias e métodos de outros modelos, da mesma forma em que não existe um modelo que
seja certo ou errado, existe o modelo que de adéque ao tipo de aplicação, ambiente e
objetivo.
Cada modelo de processo possui seus pontos fortes e suas fragilidades, porém
possui uma série de fases genéricas em comum. Caso o processo de software não for o
adequado, o produto final irá sofrer, mas uma ênfase somente no processo também é
pode ser perigosa. O produto e o processo devem ser tratados como algo que se
complementam.
Os objetivos deste artigo foram analisar os modelos de processo ágeis que são
utilizados na Engenharia de Software, exibindo suas características tornando mais claro
possível o entendimento de cada modelo para a escolha de um que seja adequado ao tipo
de aplicação que será desenvolvida.
Referências
Beck, Kent et al. Manifesto para Desenvolvimento Ágil de Software. 2001. Disponível
em: <http://agilemanifesto.org/iso/ptbr/> Acessado em 29/07/2013.
Junior, Julio Cesar Germano. Utilização da Metodologia Extreme Programming Como
Complemento do Framework Scrum. 2012.
Schwaber e Sutherland, Ken; Jeff. Um guia definitivo para o Scrum: as regras do jogo.
2011.
Disponível
em:
<http://www.scrum.org/Portals/0/Documents/Scrum%20Guides/Scrum%20Guide%2
0-%20Portuguese%20BR.pdf> Acessado em 28/07/2013.
Schwaber, Ken; Beedle, Mike. Agile Software Development withScrum.New Jersey:
Prentice Hall, 2002.
Sommerville, I. (2007) “Engenharia de Software” 8ª Edição, Editora Pearson.
Teles, Vinícius Manhães. Extreme Programming: aprenda como encantar seus usuários
desenvolvendo software com agilidade e alta qualidade. 1. ed. São Paulo: Novatec,
2004. 316 p.
Toniazzo, José Carlos. Extreme Programming: Uma Abordagem em Testes de Software
Utilizando XUnit. 90 f. Projeto apresentado à Universidade Comunitária Regional de
Chapecó para obter grau em especialista em Engenharia e Qualidade de Software,
2007.
Disponível
em:
<http://zetoniazzo.files.wordpress.com/2007/08/monografia_jose_toniazzo.pdf>
Acesso em 24/07/2013.
Download

Marcelo Augusto Lima Painka