Scrum - Principais Vantagens do Método no Processo de Desenvolvimento de Software Ronnie Edson de Souza Santos1, Cleyton Vanut Cordeiro de Magalhães2, Jorge da Silva Correia Neto3 Universidade Federal Rural de Pernambuco (UFRPE) Unidade Acadêmica de Serra Talhada (UAST) Serra Talhada - Brasil { ronnie.gd, cleyton.vanut, jorgecorreianeto}@gmail.com
RESUMO
No início da década de 70 o fracasso no desenvolvimento de grandes projetos de software era resultado da deficiência no gerenciamento das atividades que envolvem este complexo processo. Atualmente, existem duas abordagens distintas para o gerenciamento: por um lado a tradicional, que visa planejamento e acordos na etapa inicial do projeto com a produção de uma rica documentação e, por outro, a abordagem ágil, adaptada às mudanças e focada na interação da equipe e na entregua rápida do produto de software com todas as funcionalidades implementadas. Um método de desenvolvimento ágil que está se tornando bastante popular é o Scrum, que vem sendo utilizado nas áreas de produção de grandes empresas como a Microsoft e a Google. A partir de uma pesquisa bibliográfica e de entrevistas com especialistas na área, este trabalho aponta as principais vantagens deste método ágil que aos poucos está sendo utilizado também por muitas empresas brasileiras. PALAVRAS-CHAVE
Scrum, Desenvolvimento Ágil, Produto de Software, Jeff Sutherland
1. INTRODUÇÃO Processo de Desenvolvimento de Software é como está conhecido o conjunto de atividades executadas com a finalidade de obter um produto de software, através da definição de sub-processos, responsáveis, artefatos e um fluxo de realização (ALMEIDA, 2007). No início da década de 70 o fracasso no desenvolvimento de grandes projetos de software se dava pela falta de gerenciamento das atividades, o que acarretava em atrasos na entrega dos produtos, sistemas que não refletiam a verdadeira necessidade do cliente e problemas com as equipes no ambiente de desenvolvimento. A gerência de projetos surge como uma das atividades mais importantes do processo de desenvolvimento de software, fazendo uso da aplicação de conhecimentos, habilidades e técnicas que visam atingir o sucesso dos projetos de software (SOMMERVILLE, 2007). Atualmente a gerência de projetos atua com dois tipos de abordagens diferentes. Na abordagem tradicional o processo de desenvolvimento é tratado como uma sequência de atividades encadeadas, onde cada etapa fornece os insumos necessários para a próxima. Uma das principais características desta abordagem é a realização de trabalhos de forma individual, ou seja, cada profissional trabalha separadamente com o intuito de contribuir para o sucesso do produto final. Na abordagem oposta à tradicional, conhecida como desenvolvimento ágil, o projeto é visto como um conjunto de pequenas tarefas, ao invés de um 1
Bacharelando em Sistemas de Informação da UFRPE-UAST. Bacharelando em Sistemas de Informação da UFRPE-UAST. 3 Professor Assistente da UFRPE-UAST. 2
processo completo. Neste caso o gerenciamento procura aumentar a leveza e a rapidez no desenvolvimento do software (FREITAS; MIRANDA, 2008). A necessidade da construção de sistemas de maneira rápida, ocasionada pelo ritmo acelerado de mudanças na tecnologia da informação e do grande dinamismo no ambiente de negócios, fez com que a abordagem de desenvolvimento ágil apresentasse rápido crescimento e aceitação desde sua criação em 2001. O método ágil vem ganhando mais espaço dentro dos ambientes de desenvolvimento nos últimos tempos. No Brasil o Scrum é comumente aplicado a pequenas equipes e em ambientes de desenvolvimento que sofrem constantes mudanças. Seu foco é a maximização da habilidade da equipe em responder de forma ágil aos desafios emergentes. Desta forma, pode-se resolver rapidamente qualquer tipo de problema que apareça durante o processo de desenvolvimento, uma vez que todos os membros sabem exatamente o que acontece ao longo do projeto. Dentre as características principais do método Scrum pode-se destacar a divisão do processo em pequenos ciclos de desenvolvimento chamados Sprint, onde um conjunto de funcionalidades pré-definidas deve ser concluído e entregue aos clientes em intervalos regulares. As equipes são bem pequenas e trabalham em conjunto para atingir o resultado desejado. Para monitorar o progresso do processo são realizadas reuniões diárias com toda a equipe, a fim de refletir sobre o trabalho do dia anterior, do dia corrente e do dia seguinte, além de reuniões com os stakeholders (todos os envolvidos no processo) no fim de cada ciclo de desenvolvimento, o que transforma o cliente em um integrante da equipe, que mantém feedback constante a respeito do andamento do sistema. Neste método o gerente do projeto é conhecido como Scrum Master e tem como principal função remover qualquer fator que venha a impedir a conclusão do objetivo. Pode-se dizer que o Scrum Master atua como um firewall entre a equipe e qualquer fator desestabilizador. Outro de seus papéis importantes é assegurar que a equipe esteja utilizando corretamente as práticas de Scrum e motivada a atingir o foco principal do sprint. O Scrum está sendo utilizado no gerenciamento de projetos em alguns fabricantes de software e produtos de consumo, que atingiram resultados bastante positivos usando equipes pequenas e multidisciplinares, como é o caso da Microsoft, Google, Nokia e Yahoo. No Brasil a Globo.com e a UOL são exemplos de empresas que estão com as suas áreas de desenvolvimento funcionando 100% com Scrum (IMASTERS, 2009). Baseado nas experiências de empresas que utilizam o Scrum no processo gerenciamento de projetos de software, este trabalho tem a finalidade de discutir as vantagens deste método de desenvolvimento que aos poucos está se tornando cada vez mais popular na produção de software no Brasil.
2. MATERIAL E MÉTODOS O presente trabalho tem um enfoque exploratório e descritivo, realizado através de revisão bibliográfica e entrevistas com pessoas que têm experiência com o tema.
3. DISCUSSÃO E RESULTADOS Além da Globo.com e da UOL, que passaram a utilizar o Scrum para gerenciar seus processos de desenvolvimento de software, outras empresas brasileiras mostraram interesse neste método ágil e começaram a utilizá-lo. Entre estas empresas estão a Knowtec, a H2J e a OnCast Technologies, em Santa Catarina, a InterBusiness Technologies, no Paraná, a Ci&T, em São Paulo, a Fundação Paulo Feitosa (FPF), no Amazonas, a FemaHosp, no Maranhão, a Powerlogic S.A., em Minas Gerais e a Living Consultoria, no Rio de Janeiro, além de muitas outras (SCRUM COMMUNITY WIKI, 2009). Em Pernambuco existe um grande movimento para a difusão dos conceitos e dos benefícios do Scrum. Dentre as empresas que adotaram este método de desenvolvimento no Estado podem ser citadas o C.E.S.A.R, a SWQuality, a Provider e a PARTEC (SCRUM RECIFE, 2009). Segundo apurou a pesquisa, o Scrum tem como principais vantagens, a velocidade de desenvolvimento, associada à diminuição dos bugs de implementação e à maior qualidade do produto final. Isto pode ser explicado pela maior interação da equipe durante o processo de construção do produto e pelo fato do método priorizar o software funcionando ao invés de uma documentação detalhada.
Além disto, o Scrum está adaptado a mudanças e possui grande colaboração do cliente no momento da avaliação de um ciclo de desenvolvimento e definição das novas prioridades. Isso é bem diferente da abordagem tradicional que segue um plano traçado no início do projeto e o cliente participa do processo apenas para as negociações e definição de requisitos. Um dos itens que pode ser aplicado independente da metodologia, mas que no Scrum é um critério fundamental, é que as funcionalidades que agregam valor têm prioridade, isto porque o que acrescenta maior importância ao negócio do cliente deve ser finalizado primeiro. Outro ponto positivo identificado pela pesquisa é que nos ambientes de desenvolvimento onde o Scrum está empregado é maior a motivação dos programadores para atingir as metas traçadas no início do sprint. Este ponto está relacionado com a melhor visualização do projeto pela equipe, que passa a ter acesso a informações que antes eram de conhecimento apenas do gerente de projetos. Boris Gloger, um famoso Scrum Trainer4, avalia o Scrum como sendo um processo mais produtivo, prazeroso e transparente e destaca a importância do espírito de equipe no processo de desenvolvimento de software para aumentar a rapidez na resolução de problemas e obtenção de resultados. Para Jeff Sutherland, um dos criadores do Scrum, a principal vantagem do método está na capacidade de redução de custos e de bugs no processo de desenvolvimento. A prova disto está na “Systematic Software Engineering”, empresa em nível 5 de CMMI5 que vem utilizando o Scrum em projetos de todos os tipos e tamanhos, sendo a redução de custos por projeto estimada em 50% e a redução de defeitos nos produtos que podem chegar a 40% (SUTHERLAND; JAKOBSEN; JOHNSON, 2007).
4. CONCLUSÃO Conclui-se que o Scrum é um modelo do processo de desenvolvimento ágil de software que tem como foco principal a resolução dos problemas e o sucesso do projeto baseados no trabalho em equipe. A velocidade com que o produto de software é entregue e a qualidade que apresenta é o que mais chama a atenção do cliente, enquanto a interação da equipe cria um ambiente de desenvolvimento mais transparente e produtivo. O Scrum é extremamente ágil e flexível, definindo um processo de desenvolvimento de software iterativo e incremental, estabelecendo um conjunto de atividades de gerência que devem ser seguidas para garantir o sucesso do projeto, esforçando-se para eliminar qualquer tipo de barreira que venha a impedir o andamento das atividades. Pela sua capacidade de adaptação, o método é muito útil em projetos em que existam constantes conflitos de interesses e necessidades. No entanto só é possível gerar bons resultados quando há o comprometimento de todos os membros da equipe. O próprio cenário econômico mundial está em uma situação inconstante, e o processo de desenvolvimento de sistemas precisa apoiar mudanças e ocorrer de forma rápida e dinâmica, evitando ao máximo o desperdício de tempo e de recursos. Ken Schwaber, em seu livro The Enterprise and Scrum, afirma que cerca de 50% do tempo do projeto é gasto com requisitos, arquitetura e especificações, sendo isso tudo feito antes de se construir qualquer funcionalidade. No entanto, 35% dos requisitos mudam e 65% das funcionalidades descritas pelos requisitos nunca ou raramente serão utilizadas. O Scrum defende que a produção da documentação deve ser estritamente necessária para ajudar no desenvolvimento do projeto (INFOQ, 2009). O resultado final do processo de desenvolvimento deve ser um software que seja realmente útil para o cliente.
5. AGRADECIMENTOS Agradecemos a Jeff Sutherland e Boris Gloger pelas respostas referentes ao contato por e-mail6.
4 5 6
Profissional qualificado para emitir certificações Scrum. Modelo de Capacidade e Maturidade do Processo de Desenvolvimento de Software. Entrevistas concedidas por e-mail no dia 31/05/2009.
6. REFERÊNCIAS ALMEIDA, R. R. Processo de Desenvolvimento de Software, . Acesso em 28 jun. 2009.
2007.
Disponível
em
SOMMERVILLE, I. Engenharia de Software. 8.ed, São Paulo: Editora Addison-Wesley, 2007. FREITAS, H. R.; MIRANDA, J. M. Metodologias Ágeis para o Desenvolvimento de Software, Scrum e Extreme Programming X Metodologias Tradicionais RUP. Universidade Cândido Mendes – Campos, RJ, Brasil, 2008. IMASTERS. Gerenciamento de Projetos Web - Vamos de SCRUM!. Disponível em: Acesso em: 02 maio 2009. SCRUM COMMUNITY WIKI. Firms Using Scrum. Disponível Acesso em: 28 jun. 2009.
em:
SCRUM RECIFE. Listas. Disponível em: Acesso em: 28 jun. 2009. SUTHERLAND, J.; JAKOBSEN, C. R.; JOHNSON, K. Scrum and CMMI Level 5: The Magic Potion for Code Warriors. IEEE Computer Society, USA, 2007. INFOQ. Scrum e a Crise Mundial - Por que Scrum é a melhor opção para projetos em tempos de crise? Disponível em: < http://www.infoq.com/br/articles/scrum-crise-mundial> Acesso em: 28 jun. 2009.