Estudo sobre Desenvolvimento de Software
Utilizando o Framework Ágil Scrum
Andre Scarmagnani1 , Fabricio C. Mota1 , Isaac da Silva1 , Matheus de C. Madalozzo1 ,
Regis S. Onishi1 , Luciano S. Cardoso1
1
UDC ANGLO – Faculdade Anglo Americano (FAA)
Av. Paraná, 5661, CEP: 85868-030 – Foz do Iguaçu – PR – Brasil
{andre-scar, caceres.mota, shindionishi}@hotmail.com, [email protected],
[email protected], [email protected]
Abstract. Agile development methodologies has been outstanding every day, but
these are still not widespread in academia. The purpose of this article, as well
as disseminating this issue and provide support for future research is to demonstrate a simple and objective way, operation, features, vocabulary and application of the scrum framework in a work environment.
Resumo. As metodologias de desenvolvimento ágil vem se destacando a cada
dia, porém essas ainda são pouco difundidas no meio acadêmico. O objetivo
deste artigo, além de difundir esse assunto e servir de apoio para futuras pesquisas, é demonstrar de maneira simples e objetiva, o funcionamento, as caracterı́sticas, o vocabulário e a aplicação do framework scrum em um ambiente de
trabalho.
1. Introdução
Atualmente, os negócios atuam em um ambiente sujeito a mudanças constantes, como
novas oportunidades de mercados, diferentes condições econômicas e o surgimento de
produtos e serviços concorrentes. Para quase todas as operações de negócios é essencial
que um novo software seja desenvolvido e, para maior competitividade, deve ser em curto
prazo. O desenvolvimento ágil muitas vezes é requisito fundamental para a criação de
softwares a fim de que consigam atender mais prontamente as demandas do cliente.
Segundo [Sommerville 2006], os processos de desenvolvimento ágil de software
são projetados para criar softwares úteis rapidamente. Geralmente, são processos iterativos nos quais a especificação, o projeto, o desenvolvimento e o teste são intercalados.
O software não é desenvolvido e disponibilizado integralmente, mas em uma série de
incrementos, onde cada incremento inclui uma nova funcionalidade do sistema.
Na engenharia de software existem modelos que trabalham de forma ágil nos processos, com semelhanças entre as abordagens filosóficas e práticas. Dentro dessa abordagem surgiu o manifesto para o desenvolvimento ágil de software, cujo o objetivo era
descobrir melhores maneiras de desenvolver software [Beck et al. 2001]. Uma das maneiras encontradas foi a utilização do framework Scrum que foi desenvolvido por Jeff
Sutherland na década de 90.
2. Conceitos de Scrum
O framework Scrum utilizado para gestão de desenvolvimento de software complexos.
Essa ferramenta não é um processo para construir produto, mas sim um framework no
qual pode ser empregado vários processos ou técnicas, tendo uma eficácia relativa das
práticas de gerenciamento e desenvolvimento de softwares.
O Scrum é formado pelos times do Scrum, associados a papeis, eventos, artefatos
e regras. Cada uma dessas associações dentro do framework servem a um proposito e é
importante para o sucesso do Scrum.
O framework tem sua fundamentação nas boas práticas que foram adquiridas
através da realização de vários projetos e que tiveram seus processos de maior sucesso
documentados, empregando uma abordagem iterativa e incremental para aperfeiçoar a
previsão e o controle de riscos. Três pilares apoiam a implementação de controle de processo empı́rico:
• Transparência – Aspectos significativos do processo devem estar visı́veis aos responsáveis pelos resultados.
• Inspeção – Os usuários Scrum devem, frequentemente, inspecionar os artefatos
Scrum e o progresso em direção a detectar variações.
• Adaptação – Se um inspetor identifica que um processo se desviou para fora dos
limites aceitáveis, e que o produto resultado será inaceitável, o processo ou o
material sendo produzido deve ser ajustado o mais breve possı́vel.
O Scrum possui quatro eventos formais, contidos dentro dos limites da Sprint1 ,
para inspeção e adaptação, conforme mostra na figura 1 [Sutherland and Schwaber 2011]
Figura 1. Ciclo da sprint. (Fonte: Adaptada de [Schwaber and Beedle 2002]).
3. O Time
O time Scrum é composto pelo product owner, o time de desenvolvimento e o scrum
master, os integrantes do time Scrum são auto-organizáveis, ou seja, escolhem qual a
melhor forma para completarem seu trabalho, em vez de serem dirigidos por outros de
fora do time. São multifuncionais pois possuem todas as competências necessárias para
completar o trabalho sem depender de outros de fora da equipe. O modelo de time no
Scrum é projetado para aperfeiçoar a flexibilidade, criatividade e produtividade.
A Entrega dos produtos é feita de forma iterativa e incremental, o que resulta em
mais oportunidades de realimentação [Sutherland and Schwaber 2011].
1
Abordado na seção 5.1
3.1. Product Owner
O Product Owner (PO), ou dono do produto é o responsável por maximizar o valor do
produto e do trabalho da equipe de Desenvolvimento e é a única pessoa responsável por
gerenciar o Product Backlog[Sutherland and Schwaber 2011]. O PO está ligado à visão
de negócio do projeto, ele representa o interesse das pessoas que investem no desenvolvimento do produto[Neto 2012].
Sua maior responsabilidade é gerenciar o Product Backlog que inclui:
• Ordenar os itens do Product Backlog de acordo com a visão de prioridade do
cliente;
• Garantir a transparência do Product Backlog;
• Aceitar ou rejeitar os resultados dos trabalhos;
• Decidir o momento de liberação do produto ou de suas versões funcionais para o
cliente.
3.2. Time de Desenvolvimento
O time de desenvolvimento consiste de profissionais que transformam o Product Backlog
em um produto funcional. É esse time que desenvolve as versões incrementais do produto
”pronto”que são entregues ao final de cada Sprint.
O tamanho ideal do time é pequeno o suficiente para se manter ágil e
grande o suficiente para ser capaz de completar uma parcela significativa do trabalho
[Sutherland and Schwaber 2011].
Também espera-se que time possua um caráter auto-gerenciável, com o comprometimento e uma postura multifuncional dos membros representando um fator crucial
para o sucesso do projeto.
3.3. Scrum Master
O scrum master é o gerente do projeto, o responsavel por garantir que a equipe siga de
maneira adequada as práticas da scrum e também responsável por eliminar os obstáculos
que impedem o bom funcionamento do Scrum.
4. Eventos Scrum
O Scrum utiliza os eventos prescritos parar criar uma rotina e minimizar a necessidade
de reuniões não definidas no Scrum. Os eventos podem terminar quando o propósito for
alcançado, ou seja, disponibiliza o tempo adequado aos processos e evita possı́veis perdas
[Sutherland and Schwaber 2011].
4.1. Sprint
A parte fundamental do Scrum é a Sprint, no qual uma versão incremental potencialmente utilizável do produto é criada. Suas durações são coerentes em todo o esforço de
desenvolvimento e iniciam uma após a outra, com intervalos não maiores que um mês.
Durante a Sprint não são feitas mudanças que possam colocar em perigo o objetivo
da Sprint. As metas de qualidade não diminuem e o escopo pode ser renegociado entre o
Product Owner e o Time de Desenvolvimento de acordo com o que foi aprendido.
Cada Sprint tem a definição do que é para ser construı́do, um plano projetado e
flexı́vel que irá guiar a construção, o trabalho e o resultado do produto. O intervalo entre
uma Sprint e outra for muito longo, aumentam os riscos de erros e prejuı́zos. Sprints
rápidas permitem uma previsão que garante a correção e adaptação do progresso em
direção ao objetivo, pelo menos a cada mês.
O objetivo da Sprint é satisfeito através da implementação do Backlog do produto,
que por sua vez, fornece ao time de desenvolvimento o porquê de estar construindo o
incremento, criado durante a reunião de planejamento da Sprint. O time de desenvolvimento implementa a funcionalidade e tecnologia no intuito de satisfazer o objetivo da
Sprint, se o trabalho for finalizado por ser diferente do esperado pelo time de desenvolvimento, então eles contam com o Product Owner para negociar o escopo do backlog
[Sutherland and Schwaber 2011].
4.2. Reunião de Planejamento da Sprint
Em [Schwaber and Beedle 2002], o trabalho a ser realizado na Sprint é planejado na
reunião de planejamento. Este plano é criado com o trabalho colaborativo de todo o
time Scrum.
O Scrum Master garante que o evento ocorra e que os participantes entendam seu
propósito, ensinando o time Scrum a manter-se dentro dos limites do time-box. A reunião
de planejamento da Sprint responde as seguintes questões:
• O que pode ser entregue como resultado do incremento da próxima Sprint?
• Como o trabalho necessário para entregar o incremento será realizado?
4.3. Reunião Diária
As reuniões diárias do scrum são realizadas para que o time de desenvolvimento, possa
inspecionar o trabalho das reuniões posteriores, e prever o próximo trabalho que deverá
ser feito. De acordo com [Sutherland and Schwaber 2011], durante a reunião os desenvolvedores esclarecem:
• O que eu fiz ontem que ajudou o time de desenvolvimento a atender a meta da
Sprint?
• O que eu farei hoje para ajudar o time de desenvolvimento atender a meta da
Sprint?
• Eu vejo algum obstáculo que impeça a mim ou o time de desenvolvimento no
atendimento da meta da Sprint?
O time de desenvolvimento utiliza as reuniões para inspecionar o processo em
direção ao objetivo. O Scrum Master assegura que a equipe de desenvolvimento tenha a
reunião, porém a equipe é responsável por conduzi-la.
As reuniões diárias melhoram as comunicações, eliminam outras reuniões, identificam e removem impedimentos para o desenvolvimento, destacam e promovem rápidas
tomadas de decisão, e melhoram o nı́vel de conhecimento do time de desenvolvimento.
4.4. Revisão da Sprint
A revisão é executada no final, para inspecionar o incremento e adaptar o Backlog do
produto se necessário. Qualquer mudança no Backlog do produto durante a Sprint, os
participantes colaboram nas próximas coisas que podem ser feitas para otimizar. Esta é
uma reunião informal, não uma reunião de status, e a apresentação do incremento destinase a motivar e obter comentários e promover a colaboração.
O resultado da reunião de revisão da Sprint é um Backlog do produto revisado, que define o provável Backlog do produto para a próxima Sprint. O Backlog
do produto pode também ser ajustado completamente para atender novas oportunidades
[Sutherland and Schwaber 2011].
4.5. Retrospectiva da Sprint
Segundo [Sutherland and Schwaber 2011], a retrospectiva da Sprint serve para que o time
Scrum inspecione a si próprio e crie formas de melhorias que são aplicadas na próxima
Sprint. Esta retrospectiva ocorre antes da reunião de planejamento e depois da revisão
da Sprint. A Retrospectiva da Sprint consiste em inspecionar como a última Sprint foi,
identificar suas melhorias e melhorar no modo que o Time Scrum faz seu trabalho.
5. Artefatos do Scrum
Os artefatos do Scrum representam o trabalho ou o valor para o fornecimento de transparência e oportunidades para inspeção e adaptação. São especificamente projetados para
maximizar a transparência das informações chave de modo que todos tenham o mesmo
entendimento dos artefatos [Sutherland and Schwaber 2011].
5.1. Backlog do Produto
O Backlog do Produto é uma lista ordenada por prioridade de tudo que deve ser necessário
no produto, e é uma origem única dos requisitos para qualquer mudança a ser feita no
produto, sendo de responsabilidade do Product Owner.
O Product Owner deve influenciar o time, ajudando no entendimento e nas decisões, porém o time de Desenvolvimento é responsável por todas as estimativas, assim
as pessoas que irão realizar o trabalho fazem a estimativa final.
O Product Owner acompanha o trabalho restante pelo menos a cada reunião
de revisão da Sprint, para isso, compara com trabalho que restava quando ocorreu a
reunião de revisão anterior, para avaliar o progresso do trabalho previsto e finalizar no
prazo previsto. Esta informação deve ser transparente para todas as partes interessadas
[Sutherland and Schwaber 2011].
5.2. Backlog da Sprint
O Backlog da Sprint é um conjunto de itens da Backlog do Produto selecionados para a
Sprint, juntamente com o plano de entrega do incremento do produto.
Ele torna mais visı́vel o trabalho que o time de Desenvolvimento identifica como
necessário para atingir o objetivo da Sprint.
O Backlog da Sprint serve como um plano que contém detalhes suficientes para
que as mudanças no progresso sejam entendidas durante a Reunião Diária. O time de
desenvolvimento modifica o Backlog ao longo de toda a Sprint, e o Backlog vai surgindo
durante a Sprint. Este surgimento ocorre quando o time de desenvolvimento trabalha
segundo o plano e aprende mais sobre o trabalho necessário para alcançar o objetivo da
Sprint [Sutherland and Schwaber 2011].
5.3. Incremento
O incremento é a soma de todos os itens do Backlog do produto completados durante
a Sprint e o valor dos incrementos de todas as Sprints anteriores. Ao final da Sprint um
novo incremento deve estar “Pronto”, o que significa que deve estar na condição utilizável
e atender a definição de “Pronto” do time Scrum, independente do Product Owner decidir
por liberá-lo realmente ou não [Schwaber and Beedle 2002].
6. Transparência do Artefato
Decisões para otimizar o valor e controlar os riscos são feitos com base no estado dos artefatos. Na medida em que a transparência é plena, estas decisões tem uma base sólida. Na
medida em que os artefatos não são completamente transparentes, estas decisões podem
conter falhas, valores podem diminuir e riscos podem aumentar.
O trabalho do Scrum Master é trabalhar com o time Scrum para aumentar a
transparência dos artefatos. Este trabalho geralmente envolve aprendizagem, convencimento e mudança. Transparência não ocorre de um dia para o outro, mas é um caminho
[Sutherland and Schwaber 2011].
6.1. Definição de “Pronto”
Quando o item do Backlog do Produto ou um incremento é descrito como “Pronto”, todos devem entender o que o “Pronto” significa. Embora, isso varie significativamente
para cada time Scrum, os integrantes devem ter um entendimento compartilhado do que
significa o trabalho estar completo, assegurando a transparência. Esta é a “Definição de
Pronto” para o time Scrum e é usado para assegurar quando o trabalho de incremento do
produto está completo.
A mesma definição orienta o time de desenvolvimento no conhecimento de quantos itens do Backlog do produto podem ser selecionados durante a reunião de planejamento da Sprint. O propósito de cada Sprint é entregar incrementos de funcionalidades
potencialmente utilizáveis que aderem à definição atual de “Pronto” do time Scrum.
O time de desenvolvimento entrega um incremento de funcionalidade do produto a
cada Sprint. Este incremento é utilizável, assim o Product Owner pode escolher liberá-lo
imediatamente. Se a definição de “Pronto” para um incremento é parte das convenções,
padrões ou diretrizes de desenvolvimento da organização, todos os times Scrum devem
segui-la. Se “Pronto” para um incremento não é uma convenção de desenvolvimento
da organização, o time de desenvolvimento do time Scrum deve criar uma definição
de “Pronto” apropriada para o produto. Se há múltiplos times Scrum trabalhando no
lançamento do sistema ou produto, os times de desenvolvimento de todos os times Scrum
devem mutuamente acordar uma definição de “Pronto”.
Cada incremento é adicionado a todos os incrementos anteriores e completamente
testado, garantindo que todos os incrementos funcionem juntos.
Com um time Scrum maduro, é esperado que a sua definição de
“Pronto” seja expandida para incluir critérios mais rigorosos de alta qualidade
[Sutherland and Schwaber 2011].
7. Conclusão
O Scrum é geralmente voltado ao desenvolvimento de software mas pode ser aplicado em
qualquer área.
É um framework simples, criado para tornar ágil a realização de projetos complexos, tal como os que necessitam de mudanças rápidas durante o desenvolvimento, e
mesmo assim, proporcionando a entrega de resultados de alta qualidade. Sendo assim,
dentro do gerenciamento ágil de projetos, o Scrum é um dos que mais se destaca.
Existem alguns benefı́cios obtidos com o uso do framework scrum, tais como:
Diminuição dos riscos, maior integração entre os membros das equipe, rápida solução de
problemas, progresso medido continuamente, os clientes se tornam parte da equipe de
desenvolvimento, entregas frequentes de funcionalidades funcionando, discussões diárias
de status com a equipe, os profissionais de negócios e tecnologias trabalham juntos. Com
todo esse entrosamento entre a equipe de desenvolvimento e com a participação ativa
dos clientes o rendimento do projeto aumenta e os requisitos e solicitação de alteração
passa a ser entendido mais rapidamente, devido ao explı́cito entrosamento de todos os
participantes do desenvolvimento.
Referências
Beck, K., Beedle, M., van Bennekum, A., Cockburn, A., Cunningham, W., Fowler, M.,
Grenning, J., Highsmith, J., Hunt, A., Jeffries, R., Kern, J., Marick, B., Martin, R. C.,
Mellor, S., Schwaber, K., Sutherland, J., and Thomas, D. (2001). Manifesto for agile
software development. http://www.agilemanifesto.org. Acessado em: 22 maio de
2014.
Neto, C. (2012). Conhecendo o scrum. http://www.devmedia.com.br/conhecendo-oscrum/25744. Acessado em: 26 maio de 2014.
Schwaber, K. and Beedle, M. (2002). Agile software development with scrum. Prentice
Hall, 1th edition.
Sommerville, I. (2006). Engenharia de Software. Pearson, 8th edition.
Sutherland, J. and Schwaber, K. (2011). The scrum guide. Retrieved from www.scrum.org.
Download

Estudo sobre Desenvolvimento de Software Utilizando o