Você está na página 1de 6

Metodologias geis para o Desenvolvimento de Software, Scrum e Extreme Programming X Metodologias Tradicionais RUP

Abstract. The purpose of this article is to show the diference between the Agile Software Development and the Traditional software develpment. About the process of Agile Software Development we will discuss about the two well known Scrum and Extremme Proggaming and the Scrum on the Traditional Software Development. A comparison of Scrum and XP will be shown, and the advantages and disadvantages between the Agile process and Traditional process.

Resumo. Este artigo trata sobre os processos geis de desenvolvimento de software em contraste com processos tradicionais. Com relao aos processos geis tratamos dos dois mais conhecidos o Scrum e o Extreme Programming, nos processos tradicionais apresentamos o RUP. Por fim mostramos uma comparao do Scrum com o XP, e as vantagens e desvantagens dos processos geis diante dos processos tradicionais. Palavras chave: Metodologias geis, Scrum, Extreme Programming, Metodologias Tradicionais, RUP.

Introduo

Este artigo aborda o desenvolvimento de software por mtodos geis, em especial o Scrum e o Extreme Programming(XP). Atualmente existe um grande interesse com relao s metodologias geis, pois ao contrario das metodologias tradicionais que tentam prever todo o processo de desenvolvimento do software, os processos geis esto preparados para as mudanas constantes. O termo metodologias geis tornou-se popular em 2001 quando dezessete especialistas em processos de desenvolvimento de software representando os mtodos Scrum, XP, Chrystal entre outros se reuniram e estabeleceram princpios comuns compartilhados por todos estes mtodos. Criou-se ento a Aliana gil e o estabelecimento do Manifesto gil que tem como conceitos chave software executvel ao invs de documentao, colaborao do cliente ao invs de negociao de contratos entre outros. Partindo do ponto de vista de que desde a definio dos requisitos do software ate a sua entrega todo o contexto pode mudar as metodologias geis trabalham baseadas no conceito de adaptabilidade. Os requisitos do projeto so levantados pouco a pouco para que seja possvel se adaptar as mudanas que o projeto pode sofrer durante a sua evoluo. Os processos geis priorizam o cliente, pois ele quem diz como deve ser o software e ele quem vai utiliz-lo e testar sua eficcia. Segundo Highsmith o que existe de novo nos mtodos geis no so as prticas que eles usam, mas o reconhecimento de que as pessoas so os principais condutores de sucesso do projeto. Sendo assim apresentaremos agora dois dos mais importantes mtodos geis o Scrum e o Extreme Programming(XP) e o mais conhecido dos processos tradicionais o RUP.

Ao final abordaremos caractersticas em comum e diferenas do desenvolvimento utilizando XP e Scrum e um pequeno debate sobre vantagens e desvantagens entre processos geis e processos tradicionais. 2 Scrum

A Scrum uma metodologia gil para o desenvolvimento de software. A Scrum comumente aplicada a pequenas equipes e em ambientes de desenvolvimento que sofrem constantes mudanas (Abrahamsson et al., 2002), mais indicada para as pessoas responsveis pela gerncia do projeto. Por ser um processo de desenvolvimento interativo e incremental pode ser aplicado a outros projetos que no sejam necessariamente softwares. Inicialmente a Scrum foi concebida como um estilo de gerenciamento de projetos, aplicada em empresas de fabricao de automveis[1]. Por ser uma metodologia gil adota uma abordagem emprica, aceitando que o problema no pode ser totalmente entendido ou definido, seu foco a maximizao da habilidade de equipe de responder de forma gil aos desafios emergentes. Quanto as caractersticas da Scrum podemos listar: Backlog do produto(Product Baklog) Sprint Planejamento de Sprint(Sprint Planning Meeting) Backlog da Sprint(Sprint Backlog) Reunies dirias ou Scrum Dirio(Daily Scrum) Retrospectiva da Sprint(Sprint Retrospective)

O primeiro passo na aplicao da Scrum uma reunio da equipe de desenvolvimento e o Scrum Master[1] com o cliente, onde definida pelo cliente uma lista de prioridades a serem desenvolvidas no sistema, tal lista denominada Backlog do Produto do ingls Product Backlog. O desenvolvimento Scrum dividido em uma serie de iteraes denominadas Sprints que duram trinta dias. Antes de cada Sprint(iterao) a equipe e o cliente decidem em qual item do Backlog do produto iro trabalhar, este item ento e separado em uma serie de tarefas que devero ser implementadas pela equipe durante a Sprint para constituir a funcionalidade escolhida do Backlog do Produto. Estas tarefas sero denominadas Backlog da Sprint do ingls Sprint Backlog, e esta reunio feita antes de cada Sprint denominada Planejamento de Sprint do ingls Sprint Planning Meeting. Diariamente a equipe de Scrum realiza reunies que so fundamentais para o bom desenvolvimento do software e so o ponto chave da Scrum. Estas reunies so denominadas Scrum Diario ou Daily Scrum como so mais conhecidas, geralmente so realizadas de com todos os participantes de p para que seja bem rpida e no perca o foco na soluo de problemas. Durante estas reunies cada participante da equipe responde a trs perguntas: O que fiz desde ontem. O que pretendo fazer at amanh. O que esta me impedindo de atingir o meu objetivo. Estas reunies visam manter a equipe unida e consciente do objetivo da Sprint. Aps a entrega de cada Sprint a equipe faz uma retrospectiva da Sprint onde so apresentadas as novas funcionalidades ou sua arquitetura, so levados em considerao pontos favorveis e erros cometidos durante a Sprint. Vale ressaltar que no Scrum ningum e penalizado por reconhecer um erro no percebido, pois o objetivo da equipe buscar a excelncia a cada nova iterao.

Extreme Programming - XP

A Extreme Programming mais conhecida como XP o mais conhecido dos mtodos geis para desenvolvimento de software. A Extreme Programming (XP) uma metodologia gil para equipes pequenas e mdias que desenvolvem software baseado em requisitos vagos e que se modificam rapidamente [Beck (1999)]. A XP traz consigo uma nova forma de pensar sobre o software a ser construdo. A XP organizada em torno de um conjunto de prticas e valores que regem o bom desenvolvimento de software. Seus valores so: Feddback rpido Comunicao Simplicidade Coragem

Dentre as praticas mais conhecidas podemos citar: Clientes Presentes Jogo de Planejamento(Planning Game) Realeses Curtos (Small Releases) Desenvolvimento guiado pelos testes(Test Driven Development) Programao em Par(Pair Programming) Integrao Continua(Continuous Integration) Refatorao(Refactoring) Reunies de P(Stand-up Meeting) Ritmo Sustentvel(Sustainable Pace) Como descrito acima a XP leva em considerao que o cliente deve estar presente no desenvolvimento do software, se possvel no mesmo prdio ou coisa parecida, isso para que ele possa interagir com a equipe de desenvolvimento e comunicar as mudanas necessrias. Uma equipe XP prioriza os valores e as praticas descritas acima, os pequenos releases permitem que o cliente veja a cada semana uma parte funcional do seus sistema, para que essa iterao de semanas seja possvel ocorrem reunies chamadas Planning Game, que podem ser consideradas a etapa fundamental da XP, onde o cliente e a equipe de desenvolvimento decidem que funcionalidade iro implementar durante aquela semana. A equipe XP ira desenvolver somente o que agregar mais valor para o cliente evitando desenvolver aplicaes desnecessrias. Levando em considerao que a equipe XP trabalha em um ritmo sustentvel de geralmente 40 horas semanais, so estimadas as horas que cada funcionalidade deve necessitar e ao final da reunio a equipe tem definido o trabalho da semana. Em relao ao desenvolvimento vale ressaltar que a XP tem tcnicas bem definidas para os desenvolvedores. Na XP os desenvolvedores implementam as funcionalidades em pares, permitindo que o cdigo seja constantemente revisto e evitando falhas de programao. de costume dos desenvolvedores XP trabalhar com testes. Todo cdigo implementado deve coexistir com um teste automatizado, assim garantindo o pleno funcionamento da nova funcionalidade. Os desenvolvedores devem escrever testes para cada funcionalidade antes de codific-las. Assim eles aprofundam o entendimento das necessidades do cliente.

Aps o cdigo ter sido aprovado pelos testes ele passa por uma refatorao que ira otimiza-lo tornado-o mais enxuto, padronizado sem duplicatas e otimizado e ento ser integrado ao sistema como um todo. A integrao continua, a cada nova funcionalidade desenvolvida ela integrada ao sistema e submetida aos testes para que sejam corrigidas possveis falhas. A partir desse conjunto de praticas o XP revolucionou o mercado de desenvolvimento de softwares. Os softwares deixaram de ser construdos como em uma fabrica de carros onde a cada passo uma pea adicionada. A Equipe XP sobe que as prioridades do cliente podem mudar a qualquer momento e quando suas tcnicas so bem aplicadas ela est preparada para se adaptar a mudana por mais drstica que ela seja.

Rational Unified Process - RUP

A Rational Unified Process ou, IBM Rational Unified Process, ou simplesmente RUP uma metodologia de desenvolvimento de software iterative e tradicional. considerada pesada e preferencialmente aplicvel a grandes equipes de desenvolvimento e a grandes projetos. A RUP defende que uma documentao apropriada e essencial para qualquer grande projeto. Utiliza sotwares de modelos visuais pois ao se abstrair a programao do seu cdigo e represent-la usando blocos de construo grafica o RUP consegue ter uma viso geral da soluo e aumentar a cognio de indivduos com o perfil menos tecnico. Utiliza uma arquitetura baseada em componentes para que o sistema seja facilmente extensvel, comumente os componentes se assemelham aos conjuntos de objetos em programao Orientada a Objeto. A metodologia RUP identifica cada cilco de desenvolvimento do projeto em quarto fases: Incio (Inception): determinao do escopo do desenvolvimento, sendo levantado uma viso do produto final a partir de um caso de uso (bsico) definido. Elaborao (Elaboration): planejamento de atividades e recursos necessrios,onde so definidas funcionalidades e a arquitetura a ser desenvolvida. Construo (Construction): implementao do software, contruo do cdigo. Em projetos grandes esta fase pode ser segmentada em vrias iteraes, visando diviso em partes menores e mais facilmente gerenciadas. Transio (Transition): o produto passado aos usurios. Nesta fase ocorre treinamento dos usurios (e possveis mantenedores) e a avaliao do produto (beta-testing).

Extreme Programming X Scrum

A XP e a Scrum possuem tcnicas bem parecidas no que diz respeito a forma de desenvolver o software. A primeira vistas as duas metodologias so iguais no entanto percebe-se que a XP traz consigo conceitos mais voltados para quem vai realmente programar, desenvolvimento orientado a testes e programao em par so tcnicas aplicadas diretamente ao cdigo do software.

Enquanto isso a Scrum se apresenta com tcnicas mais direcionadas para a gerncia de projeto como Retrospectivas das Sprints, e Scrum Dirio(Daily Scrum). As duas metodologias j tm seus adeptos dentre a comunidade de desenvolvimento e por serem metodologias geis cada vez mais so aplicadas em projetos dos mais variados.

Processos Tradicionais X Processos geis

O enfoque principal das metodologias geis nas pessoas e no em processos e algoritmos [Soares (2001)]. Nas metodologias tradicionais existe muita preocupao em documentar o projeto a todo instante, j os processos geis defendem que o tempo gasto em documentao desnecessrio diante da necessidade do cliente de ver o software funcional. Os processos tradicionais tem seu espao garantido em projetos que no sejam mutveis e sejam bem definidos. Como com o avano da tecnologia os softwares so cada vez mais complexos e imersos eu um nmero incontvel de variveis que os definem os processos tradicionais ganharam seu espao. Scrum e XP so bons exemplos de processos geis que tiveram sucesso, eles tm como objetivo priorizar a satisfao do cliente, no se utiliza muitos softwares de apoio e promovem adaptabilidade as mudanas. Com estas caractersticas os processos geis aceleram o desenvolvimento do software e constituem formas inteligentes de se resolver os problemas computacionais atuais. 6 Concluso

Durante este artigo apresentamos processos geis e tradicionais, suas caractersticas, vantagens e desvantagens. Fizemos uma comparao entre dois dos mais conhecidos processos geis, o Scrum e o XP, e discutimos como o desenvolvimento usando metodologias geis em vez das tradicionais. Os processos geis trazem uma nova forma de pensar a respeito do desenvolvimento de softwares de qualidade. As impresses que temos com o primeiro contato com processos geis so de que o software no algo to complicado quanto parece, e que muitos mtodos tradicionais possuem etapas desnecessrias quando no viso final do produto. importante ressaltar que os processos tradicionais em especial o RUP foram criados e aplicados em softwares que obtiveram sucesso, por isso so reconhecidos. Os clientes atuais se interessam muito mais por um programa funcional do que por um manual de usurio muito extenso que na realidade no tratar os verdadeiros problemas que ele ter no dia a dia. Pensar em um processo gil pensar em adaptao, estar disposto a mudar na mesma proporo que o negcio do seu cliente mudou diante de um imprevisto.

Referncias Bibliogrficas

Scrum. Disponvel em http://pt.wikipedis.org/wiki/Scrum, acessado em 12 de Julho de 2008.

Abrahamsson, P.; Salo, O.; Ronkainen, J.; Warsta, J. Agile Software Development Methods: Reviews and Analysis. Espoo: VTT Publications, 2002. Disponvel em: <http://www.inf.vtt.fi/pdf/publications/2002/P478.pdf>. Acesso em: 12 jul. 2008. Highsmith, J.; Cockburn, A. Agile Software Development: The Business of Innovation. IEEE Computer, 2001. Filho, Edes Garcia da Costa; Penteado, Rosangela. Padres e Mtodos geis: agilidade no processo de desenvolvimento de software, 2006. [Agile Manifesto (2004)] Disponvel em http://agilemanifesto.org/, acessado em 12 de Julho de 2008. [Beck (1999)] Beck, K. Programao Extrema Explicada. Bookman, 1999.

Soares, Michel dos Santos. Comparao entre Metodologias geis e Tradicionais para o Desenvolvimento de Software, 2001. Cruz, L. R. (2004). Desenvolvimento de Software com Scrum.