A metodologia SCRUM assume-se como uma metodologia extremamente
gil e flexvel. Tem por objetivo definir um processo de desenvolvimento iterativo e incremental que pode ser aplicado a qualquer produto ou no gerenciamento de qualquer atividade complexa, proporcionando um excelente entrosamento entre as equipes de desenvolvimento. Com todo esse entrosamento e com a participao ativa dos clientes, o rendimento do projeto aumenta e os requisitos e solicitao de alterao passa a ser entendido mais rapidamente. As metodologias de desenvolvimento gil vem se destacando a cada dia, porm essas ainda so pouco difundidas no meio acadmico. O objetivo deste artigo, alm de difundir esse assunto e servir de apoio para futuras pesquisas, demonstrar de maneira simples e objetiva, o funcionamento, as caractersticas, o vocabulrio e a aplicao da metodologia SCRUM em um ambiente de trabalho.
INTRODUO
Jeff Sutherland aplicou a primeira concepo do Scrum na Easel
Corporation em 1993, mais tarde, por volta de 1995, Ken Schwaber refinou essa metodologia baseando-se em sua prpria experincia no desenvolvimento de sistemas e processos. O SRUM assume-se como uma metodologia extremamente gil e flexvel, que tem por objetivo definir um processo de desenvolvimento interativo e incremental podendo ser aplicado a qualquer produto ou no gerenciamento de qualquer atividade complexa. Esta metodologia baseia-se no desenvolvimento incremental das aplicaes centrado na equipe com ciclos de iterao curto.
SCRUM aplica-se a projetos tanto pequenos como grandes. Esforando-se
para liberar o processo de quaisquer barreiras, o seu principal objetivo conseguir uma avaliao correto do ambiente em evoluo, adaptando-se constantemente ao caos de interesses e necessidades, indicado e utilizado para o desenvolvimento de softwares em ambiesntes complexos, onde os requisitos mudam com certa frequncia, sendo o caminho utilizado para aumentar produtividade nesses tipos de sistemas.
A Metodologia SCRUM apenas estabelece conjuntos de regras e prticas
de gesto que devem ser adotadas para garantir o sucesso de um projeto. Centrado no trabalho em equipe, melhora a comunicao e maximiza a cooperao, permitindo que cada um faa o seu melhor e se sinta bem com o que faz o que mais tarde se reflete num aumento de produtividade. Englobando processos de engenharia, este mtodo no requer nem fornece qualquer tcnica ou mtodo especfico para a fase de desenvolvimento de software. Segundo (FERREIRA, 2005), as principais caractersticas do SCRUM so:
um processo gil para gerenciar e controlar o desenvolvimento de
projetos; um wrapper para outras prticas de engenharia de software; um processo que controla o caos resultante de necessidades e interesses conflitantes; uma forma de aumentar a comunicao e maximizar a cooperao; uma forma de detectar e remover qualquer impedimento que atrapalhe o desenvolvimento de um produto; escalvel desde projetos pequenos at grandes projetos em toda empresa.
Vocabulrio utilizado no SCRUM:
Backlog: Lista de todas as funcionalidades a serem desenvolvidas durante
o projeto ompleto, sendo bem definido e detalhado no inicio do trabalho, deve ser listado e ordenado por prioridade de execuo; Sprint: Perodo no superior a 30 dias, onde o projeto (ou apenas algumas funcionalidades) desenvolvido; Sprint Planning Meeting: Reunio de planejamento; Sprint Goal: Disparo dos objetivos/metas; Sprint Review Meeting: Reviso da reunio;
Sprint Backlog: Trabalho a ser desenvolvido num Sprint de modo a criar
um produto a apresentar ao cliente. Deve ser desenvolvido de forma incremental, relativa ao Backlog anterior (se existir); Dayling SCRUM: Reunio diria; Scrum: Reunio diria onde so avaliados os progressos do projeto e as barreiras encontradas durante o desenvolvimento; Scrum Meeting: Protocolo a seguir de modo a realizar uma reunio Scrum; Scrum Team: A equipe de desenvolvimento de um Sprint; Scrum Master: Elemento da equipe responsvel pela gesto do projeto e liderar as Scrum Meetings, so normalmente engenheiros de software ou da rea de sistemas. Apesar de ser gestor no tem propriamente autoridade sobre os demais membros da equipe. Product Backlog: Produo do trabalho executado. Product Owner: Proprietrio do produto.
PROCESSO E FUNCIONAMENTO SCRUM
As fases de desenvolvimento SCRUM podem ser divididas basicamente
em trs, so elas: Planejamento: Definio de uma nova funcionalidade requerida pelo sistema baseado no conhecimento do sistema como um todo; Desenvolvimento: Desenvolvimento dessa nova funcionalidade respeitando o tempo previsto, requisitos exigidos e qualidade. Esses itens definem o fim do ciclo de desenvolvimento; Encerramento: Preparao para a entrega do produto persistindo as atividades: Teste Caixa Branca, Teste Caixa Preta, Documentao do Usurio, Treinamento e Marketing. Segundo CRUZ (2006), existem dois tipos de processos: Definidos e Empricos. Processos definidos so aqueles que determinam o que deve ser feito, quando e como. Para um mesmo conjunto de variveis de entrada,
pode-se esperar o mesmo resultado sempre. Um exemplo bem conhecido de
processo definido o RUP (Rational Unified Process) da IBM (Rational). Os processos empricos devem ser utilizados sempre que os processos definidos no forem adequados devido complexidade do projeto, ou seja, sempre que no se conheam todas as variveis de entrada para que possa estabelecer um processo repetvel (com a mesma sada sempre), o Scrum um exemplo deste. Para iniciar o processo Scrum, a primeira coisa a ser definida quais pessoas sero designadas para trabalhar e que iro compor a equipe Scrum. Esta equipe deve ser composta de 6 a 9 membros. Se houver mais membros do que possvel gerir, separam-se vrias equipes Scrum e cada equipe focar-se- numa rea especfica do trabalho. A prxima etapa a fazer apontar o Scrum Master, uma vez que essa pessoa que conduz as Scrum Meetings, mede o progresso empiricamente, toma decises e remove os obstculos do caminho para no desacelerar ou mesmo parar o trabalho em pontos crticos. O Scrum Master fica encarregado de gerenciar e transmitir as informaes do projeto a todos os membros da equipe, ele deve ser capaz de tomar decises imediatas e resolver todos os impedimentos rapidamente, de modo a no estender o tempo da reunio ele que identifica o backlog inicial, que todo o trabalho proeminente para uma rea do produto, tanto imediato e bem definido, como a longo prazo e indefinido. Para identificar o backlog, a primeira coisa a fazer listar todo o trabalho conhecido necessrio fazer e agrup-lo em incrementos que no devem ter durao superior a 30 dias. Se houver reas de trabalho volteis ou que no possam ser completamente definidas para 30 dias, deve ser estabelecido um incremento para um tempo conhecido. Depois disto, preciso listar todo o trabalho proeminente a fazer e definir prioridades para todos os elementos listados. Uma vez terminado, o backlog deve ser assinado pelos membros das equipes e a partir da, s o que foi definido neste documento dever ser cumprido durante o Sprint para cada rea. vital para que o processo funcione cumprir com os trabalhos rigorosamente com base nos pontos restantes do Sprint Backlog. Para isso, preciso estabelecer e conduzir as reunies dirias Scrum onde s equipes se encontra e se atualizam sobre o que se vai fazendo. Isto fornece um foco dirio no trabalho em desenvolvimento. Antes de mais nada, certifique-se de que as reunies se realizem sempre na mesma hora e no mesmo local, evitando gastos na procura diria de um lugar, cada reunio no deve ultrapassar os 30 minutos. Durante este tempo o Scrum Master cumpre o seu papel em colocar as referidas questes e em resolver todas as decises necessrias. Qualquer questo no resolvida dever ser adiada para posteriores reunies. No fim de cada Sprint, deve ser feita uma reunio para reviso e demonstrao do Sprint. Para conduzir estas reunies deve ser eleito um porta-voz que ir redigir algumas questes. Estas questes devem ser resolvidas e registradas nessas reunies, gerando um histrico do grupo no Sprint. Exemplo de questes que podem ser levantadas:
1. Qual o valor acrescentado neste incremento (Demonstrao)?
2. O que foi completado do nosso Sprint Backlog? 3. Qual o feedback por parte do Cliente do produto? 4. O que se aconteceu de relevante no grupo durante o Sprint? 5. Como que cada um se sentiu? 6. O que podemos concluir disso? 7. O que pode ser aplicado para melhorar o prximo processo Sprint?
Explicar perfeitamente as regras para que o processo corra melhor, de
como a equipe deve trabalhar em conjunto, e toda a equipe tem que trabalhar no Sprint. Cada equipe deve demonstrar algo no fim de cada Sprint, uma vez que o objetivo que sigam regras de auto-organizao.
Empresas procuram mtodos geis
As metodologias geis esto disponveis desde a dcada passada, porm foi no ano de 2001 que houve a formalizao com a assinatura do manifesto gil (Manifesto for Agile Software Development - http://agilemanifesto.org/). Inicialmente houve uma desconfiana geral por parte da indstria de software, certamente impulsionada pelas diferenas aos mtodos tradicionais e as questes das dificuldades de quebra de paradigmas por parte das pessoas. Nesta poca tornou-se bastante famosa a metodologia XP (eXtreme Programming), pois propunha sem hipocrisia uma srie de mtodos polmicos, muitos deles questionveis at hoje como por exemplo a programao em pares e o cliente ao lado do desenvolvedor durante o projeto. Lentamente, a indstria de software impulsionada pela necessidade de obter resultados diferentes dos obtidos pelos mtodos tradicionais, verificou que pessoas vlidas estavam propondo mtodos srios e factveis. Desta forma, determinadas prticas geis comearam a ser utilizadas em projetos de software sem a agressividade2 pela adoo plena de uma metodologia gil. Alguns destes mtodos, compreendidos de forma inadequada, causavam uma dificuldade de percepo dos resultados. Um timo exemplo disto a iterao. Iterao (iteration), que em traduo simples quer dizer repetio, confundido com "interao" ou compreendido como processos repetveis.
Na verdadeira definio gil, iterao est mais para processos confiveis
do que processos repetveis. Na lingua inglesa tambm verificamos este desentendimento quando estudamos em textos geis as palavras "repeatable" e "reliable". A confuso entre confivel e repetvel acontece porque muitos gestores de empresas gostam de formalizar processos muito estruturados e precisos (repetveis) no lugar de formalizar processos suficientemente estruturados e flexveis (confiveis). Processos repetveis focam na entrada das atividades, processos confiveis focam no resultado das atividades. Outros mtodos, por oferecerem propostas mais simples de compreenso e apurao de resultado, comearam a chamar a ateno positivamente da indstria de software. Face a isso, iniciou-se um movimento liderado pelas universidades no Brasil (hoje sou consultor de metodologias geis da USP) que objetiva esclarecer os mtodos e gerar contedos prticos que facilitem a implantao de tais propostas metodolgicas. Certificadas de que estes mtodos funcionam, as empresas de software comearam a estudar uma proposta de metodologia classificada como gil, que prope novos mtodos em substituio aos mtodos praticados tradicionalmente. Este critrio de escolha, que em minha opinio est suficientemente maduro, buscou primeiramente resolver as questes acerca da organizao, distribuio e controle das atividades de um projeto de software. Eis a explicao da escolha da metodologia SCRUM pelo mercado de empresas desenvolvedoras de software.
CONCLUSO
Tem-se usado o SCRUM, atualmente, por fornecer um mecanismo de
informaes devidamente atualizado, utilizando a diviso explcita de tarefas dentro da equipe, sendo que qualquer metodologia de processo pode utilizar a filosofia do SCRUM para garantir boas prticas sobre os projetos. Esses so alguns dos benefcios obtidos com o uso da metodologia SCRUM: diminuio dos riscos; maior integrao entre os membros das equipes; rpida soluo de problemas; progresso medido continuamente; os clientes se tornam parte da equipe de desenvolvimento;
entregas freqentes de funcionalidades funcionando;
discusses dirias de status com a equipe; os profissionais de negcios e tecnologias trabalham juntos. Com todo esse entrosamento entre a equipe de desenvolvimento e com a participao ativa dos clientes o rendimento do projeto aumenta e os requisitos e solicitao de alterao passa a ser entendido mais rapidamente, devido ao explcito entrosamento de todos os participantes do desenvolvimento.