Processos de Desenvolvimento de Software

Metodologias Ágeis para o Desenvolvimento de Software, Scrum e Extreme Programming X Metodologias Tradicionais RUP
 
Hebert Ribeiro de Freitas e Jhonis Macedo de Miranda

Universidade Candido Mendes – Campos, RJ, Brasil





 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 relação aos processos ágeis tratamos dos dois mais conhecidos o Scrum e o Extreme Programming, nos processos tradicionais apresentamos o RUP. Por fim mostramos uma comparação do Scrum com o XP, e as vantagens e desvantagens dos processos ágeis diante dos processos tradicionais.

Palavras – chaveMetodologias ágeis, Scrum, Extreme Programming, Metodologias Tradicionais, RUP.


1       Introdução

Este artigo aborda o desenvolvimento de software por métodos ágeis, em especial o Scrum e o Extreme Programming(XP). Atualmente existe um grande interesse com relação às metodologias ágeis, pois ao contrario das metodologias tradicionais que tentam prever todo o processo de desenvolvimento do software, os processos ágeis estão preparados para as mudanças constantes.
O termo metodologias ágeis tornou-se popular em 2001 quando dezessete especialistas em processos de desenvolvimento de software representando os métodos Scrum, XP, Chrystal entre outros se reuniram e estabeleceram princípios comuns compartilhados por todos estes métodos. Criou-se então a “Aliança Ágil” e o estabelecimento do “Manifesto Ágil” que tem como conceitos chave software executável ao invés de documentação, colaboração do cliente ao invés de negociação de contratos entre outros.
Partindo do ponto de vista de que desde a definição 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 são levantados pouco a pouco para que seja possível se adaptar as mudanças que o projeto pode sofrer durante a sua evolução.
Os processos ágeis priorizam o cliente, pois é ele quem diz como deve ser o software e é ele quem vai utilizá-lo e testar sua eficácia.
Segundo Highsmith o que existe de novo nos métodos ágeis não são as práticas que eles usam, mas o reconhecimento de que as pessoas são os principais condutores de sucesso do projeto.
Sendo assim apresentaremos agora dois dos mais importantes métodos ágeis o Scrum e o Extreme Programming(XP) e o mais conhecido dos processos tradicionais o RUP.
Ao final abordaremos características em comum e diferenças 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 mudanças (Abrahamsson et al., 2002), é mais indicada para as pessoas responsáveis pela gerência do projeto.
Por ser um processo de desenvolvimento interativo e incremental pode ser aplicado a outros projetos que não sejam necessariamente softwares. Inicialmente a Scrum foi concebida como um estilo de gerenciamento de projetos, aplicada em empresas de fabricação de automóveis[1].
 Por ser uma metodologia ágil adota uma abordagem empírica, aceitando que o problema não pode ser totalmente entendido ou definido, seu foco é a maximização da habilidade de equipe de responder de forma ágil aos desafios emergentes.
Quanto as características da Scrum podemos listar:
·        Backlog do produto(Product Baklog)
·        Sprint
·        Planejamento de Sprint(Sprint Planning Meeting)
·        Backlog da Sprint(Sprint Backlog)
·        Reuniões diárias ou Scrum Diário(Daily Scrum)
·        Retrospectiva da Sprint(Sprint Retrospective)


O primeiro passo na aplicação da Scrum é uma reunião 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 inglês Product Backlog.
O desenvolvimento Scrum é dividido em uma serie de iterações denominadas Sprints que duram trinta dias. Antes de cada Sprint(iteração) a equipe e o cliente decidem em qual item do Backlog do produto irão trabalhar, este item então e separado em uma serie de tarefas que deverão ser implementadas pela equipe durante a Sprint para constituir a funcionalidade escolhida do Backlog do Produto.
Estas tarefas serão denominadas Backlog da Sprint do inglês Sprint Backlog, e esta reunião feita antes de cada Sprint é denominada Planejamento de Sprint do inglês Sprint Planning Meeting.
Diariamente a equipe de Scrum realiza reuniões que são fundamentais para o bom desenvolvimento do software e são o ponto chave da Scrum. Estas reuniões são denominadas Scrum Diario ou Daily Scrum como são mais conhecidas, geralmente são realizadas de com todos os participantes de pé para que seja bem rápida e não perca o foco na solução de problemas. Durante estas reuniões cada participante da equipe responde a três perguntas:
·        O que fiz desde ontem.
·        O que pretendo fazer até amanhã.
·        O que esta me impedindo de atingir o meu objetivo.
Estas reuniões visam manter a equipe unida e consciente do objetivo da Sprint.
Após a entrega de cada Sprint a equipe faz uma retrospectiva da Sprint onde são apresentadas as novas funcionalidades ou sua arquitetura, são levados em consideração pontos favoráveis e erros cometidos durante a Sprint.
Vale ressaltar que no Scrum ninguém e penalizado por reconhecer um erro não percebido, pois o objetivo da equipe é buscar a excelência a cada nova iteração.


3       Extreme Programming - XP


A Extreme Programming mais conhecida como XP é o mais conhecido dos métodos ágeis para desenvolvimento de software.
A Extreme Programming (XP) é uma metodologia ágil para equipes pequenas e médias 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 construído.
A XP é organizada em torno de um conjunto de práticas e valores que regem o bom desenvolvimento de software.
Seus valores são:

  • Feddback rápido
  • Comunicação
  • 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)
  • Programação em Par(Pair Programming)
  • Integração Continua(Continuous Integration)
  • Refatoração(Refactoring)
  • Reuniões de Pé(Stand-up Meeting)
  • Ritmo Sustentável(Sustainable Pace)

Como descrito acima a XP leva em consideração que o cliente deve estar presente no desenvolvimento do software, se possível no mesmo prédio ou coisa parecida, isso para que ele possa interagir com a equipe de desenvolvimento e comunicar as mudanças necessárias.
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 iteração de semanas seja possível ocorrem reuniões chamadas Planning Game, que podem ser consideradas a etapa fundamental da XP, onde o cliente e a equipe de desenvolvimento decidem que funcionalidade irão implementar durante aquela semana. A equipe XP ira desenvolver somente o que agregar mais valor para o cliente evitando desenvolver aplicações desnecessárias.
 Levando em consideração que a equipe XP trabalha em um ritmo sustentável de geralmente 40 horas semanais, são estimadas as horas que cada funcionalidade deve necessitar e ao final da reunião a equipe tem definido o trabalho da semana.
Em relação ao desenvolvimento vale ressaltar que a XP tem técnicas bem definidas para os desenvolvedores.
Na XP os desenvolvedores implementam as funcionalidades em pares, permitindo que o código seja constantemente revisto e evitando falhas de programação.
É de costume dos desenvolvedores XP trabalhar com testes. Todo código 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.
Após o código ter sido aprovado pelos testes ele passa por uma refatoração que ira otimiza-lo tornado-o mais enxuto, padronizado sem duplicatas e otimizado e então será integrado ao sistema como um todo. A integração é continua, a cada nova funcionalidade desenvolvida ela é integrada ao sistema e submetida aos testes para que sejam corrigidas possíveis falhas.
A partir desse conjunto de praticas o XP revolucionou o mercado de desenvolvimento de softwares. Os softwares deixaram de ser construídos como em uma fabrica de carros onde a cada passo uma “peça”  é adicionada. A Equipe XP sobe que as prioridades do cliente podem mudar a qualquer momento e quando suas técnicas são bem aplicadas ela está preparada para se adaptar a mudança por mais drástica que ela seja.


4       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 aplicável a grandes equipes de desenvolvimento e a grandes projetos.

A RUP defende que uma documentação apropriada e essencial para qualquer grande projeto.
Utiliza sotwares de modelos visuais pois ao se abstrair a programação do seu código e representá-la usando blocos de construção grafica o RUP consegue ter uma visão geral da solução e aumentar a cognição de indivíduos com o perfil menos tecnico.
Utiliza uma arquitetura baseada em componentes para que o sistema seja facilmente extensível, comumente os componentes se assemelham aos conjuntos de objetos em programação Orientada a Objeto.
A metodologia RUP identifica cada cilco de desenvolvimento do projeto em quarto fases:

·         Início (Inception): determinação do escopo do desenvolvimento, sendo levantado uma visão do produto final a partir de um caso de uso (básico) definido.

·         Elaboração (Elaboration): planejamento de atividades e recursos necessários,onde são definidas funcionalidades e a arquitetura a ser desenvolvida.

·         Construção (Construction): implementação do software, contrução do código. Em projetos grandes esta fase pode ser segmentada em várias iterações, visando à divisão em partes menores e mais facilmente gerenciadas.

·         Transição (Transition): o produto é passado aos usuários. Nesta fase ocorre treinamento dos usuários (e possíveis mantenedores) e a avaliação do produto (“beta-testing”).
                                                                    


5       Extreme Programming X Scrum

A XP e a Scrum possuem técnicas bem parecidas no que diz respeito a forma de desenvolver o software. A primeira vistas as duas metodologias são iguais no entanto percebe-se que a XP traz consigo conceitos mais voltados para quem vai realmente programar, desenvolvimento orientado a testes e programação em par são técnicas aplicadas diretamente ao código do software.
Enquanto isso a Scrum se apresenta com técnicas mais direcionadas para a gerência de projeto como Retrospectivas das Sprints, e Scrum Diário(Daily Scrum).
As duas metodologias já têm seus adeptos dentre a comunidade de desenvolvimento e por serem metodologias ágeis cada vez mais são aplicadas em projetos dos mais variados.



5       Processos Tradicionais X Processos Ágeis


O enfoque principal das metodologias ágeis é nas pessoas e não em processos e algoritmos [Soares (2001)].
Nas metodologias tradicionais existe muita preocupação em documentar o projeto a todo instante, já os processos ágeis defendem que o tempo gasto em documentação é desnecessário diante da necessidade do cliente de ver o software funcional.
Os processos tradicionais tem seu espaço garantido em projetos que não sejam mutáveis e sejam bem definidos.
Como com o avanço da tecnologia os softwares são cada vez mais complexos e imersos eu um número incontável de variáveis que os definem os processos tradicionais ganharam seu espaço.
Scrum e XP são bons exemplos de processos ágeis que tiveram sucesso, eles têm como objetivo priorizar a satisfação do cliente, não se utiliza muitos softwares de apoio e promovem à adaptabilidade as mudanças.
Com estas características os processos ágeis aceleram o desenvolvimento do software e constituem formas inteligentes de se resolver os problemas computacionais atuais. 

6       Conclusão

Durante este artigo apresentamos processos ágeis e tradicionais, suas características, vantagens e desvantagens. Fizemos uma comparação 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 impressões que temos com o primeiro contato com processos ágeis são de que o software não é algo tão complicado quanto parece, e que muitos métodos tradicionais possuem etapas desnecessárias quando não visão final do produto.
È importante ressaltar que os processos tradicionais em especial o RUP foram criados e aplicados em softwares que obtiveram sucesso, por isso são reconhecidos.
Os clientes atuais se interessam muito mais por um programa funcional do que por um manual de usuário muito extenso que na realidade não tratará os verdadeiros problemas que ele terá no dia a dia.
Pensar em um processo ágil é pensar em adaptação, é estar disposto a mudar na mesma proporção que o negócio do seu cliente mudou diante de um imprevisto.






7       Referências Bibliográficas

Scrum. Disponível 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. Disponível em:
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. Padrões e Métodos Ágeis: agilidade no processo de desenvolvimento de software, 2006.

[Agile Manifesto (2004)] Disponível em http://agilemanifesto.org/, acessado em 12 de Julho de 2008.

[Beck (1999)] Beck, K. Programação Extrema Explicada. Bookman, 1999.


Soares, Michel dos Santos. Comparação entre Metodologias Ágeis e Tradicionais para o Desenvolvimento de Software, 2001.

Cruz, L. R. (2004). Desenvolvimento de Software com Scrum.







[1] Dentro do contexto da Scrum não existe um gerente de projeto isso devido a Scrum constituir equipes auto-organizaveis, o Scrum Master é a pessoa que mais se aproxima deste papel sendo o responsável por garantir que as técnicas da Scrum estejam sendo bem aplicadas.


Seja o primeiro a comentar

Postar um comentário

Related Posts Plugin for WordPress, Blogger...
Troca de Links - Parceiros RSS Search Site no Esquillo Directorio Twingly BlogRank Teaching Blog Directory GoLedy.com Divulgue seu blog! Blogalaxia BRDTracker Directory of Education/Research Blogs Top Academics blogs Education and Training Blogs - BlogCatalog Blog Directory blog directory Blog Search: The Source for Blogs Submit Your Site To The Web's Top 50 Search Engines for Free! Sonic Run: Internet Search Engine Estou no Blog.com.pt
http://rpc.twingly.com/

  ©Trabalhos Feitos / Trabalhos Prontos - Todos os direitos reservados.

Template by Dicas Blogger | Topo