Desenvolvimento de sistemas

Fernando Lino
E-mail: fernandolinox@gmail.com
Site: http://flinox.blogspot.com

quinta-feira, 18 de novembro de 2010

Scrum, uma metodologia de desenvolvimento ágil.

A metodologia SCRUM assume-se como uma metodologia extremamente ágil e flexível. 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 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. 

Antes de mais nada vamos aos jargões SCRUM:
Backlog Lista de todas as funcionalidades a serem desenvolvidas durante o projeto completo, sendo bem definido e detalhado no inicio do trabalho, deve ser listado e ordenado por prioridade de execução.

Sprint
Período não superior à 30 dias, onde o projeto (ou apenas 
algumas funcionalidades) é desenvolvido.

Sprint Backlog
Trabalho à 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).

Scrum Reunião
diária onde são avaliados os progressos do projeto e 
as barreiras encontradas durante o desenvolvimento.

Scrum Meeting Rules 
Protocolo a seguir de modo a realizar uma reunião Scrum.

Scrum Team
A equipe de desenvolvimento de um Sprint.

Scrum Master
Elemento da equipa responsável pela gestão do projeto e lid
erar as Scrum Meetings, são normalmente engenheiros de software ou da área de sistemas. Apesar de ser gestor não tem propriamente autoridade sobre os demais membros da equipe. É incentivada a auto-gestão.

Figura que representa as etapas do processo Scrum.

As fases de desenvolvimento SCRUM podem ser divididas basicamente em três, são elas:

Planejamento: Definição 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: Preparação para a entrega do produto persistindo as atividades: Teste Caixa Branca, Teste Caixa Preta, Documentação do Usuário, Treinamento e Marketing. 


Antes de entrar no detalhe de como funciona o processo scrum é interessante saber que existem dois tipos de processos de desenvolvimento: Definidos e Empíricos. 

Processos definidos são aqueles que determinam o que deve ser feito, quando e como. Para um mesmo conjunto de variáveis 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 empíricos devem ser utilizados sempre que os processos definidos não forem adequados devido à complexidade do projeto, ou seja, sempre que não se conheçam todas as variáveis de entrada para que possa 
estabelecer um processo repetível (com a mesma saída sempre), o Scrum é um exemplo deste. 

Para iniciar o processo Scrum, a primeira coisa a ser definida é quais pessoas serão designadas para trabalhar e que irão compor a equipe Scrum. Esta equipe deve ser composta de 6 a 9 membros. Se houver mais membros do que é possível gerir, separam-se várias equipes Scrum e cada equipe ficará focada numa área específica do trabalho.  

A próxima etapa a fazer é apontar o Scrum Master, uma vez que é essa pessoa que conduz as Scrum Meetings, mede o progresso empiricamente, toma decisões e remove os obstáculos do caminho para não desacelerar ou mesmo parar o trabalho em pontos críticos. O  Scrum Master  fica encarregado de gerenciar e transmitir as 
informações do projeto a todos os membros da equipe, ele deve ser capaz de tomar decisões imediatas e resolver todos os impedimentos rapidamente, de modo a não estender o tempo da reunião. É 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 necessário fazer e agrupá-lo em incrementos que não devem ter duração superior a 30 dias. Se houver áreas de trabalho voláteis ou que não 
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 reuniões diárias Scrum onde às equipes se encontra e se atualizam sobre o que se vai fazendo. Isto fornece um foco diário no trabalho em desenvolvimento. Antes de mais nada, certifique-se de que as reuniões se realizem sempre na mesma hora e no mesmo local, evitando gastos na procura diária de um lugar, cada reunião não deve ultrapassar 30 minutos. Durante este tempo o Scrum Master cumpre o seu papel em colocar as referidas questões e em resolver todas as decisões necessárias. Qualquer questão não resolvida 
deverá ser adiada para posteriores reuniões. No fim de cada Sprint, deve ser feita uma reunião para revisão e demonstração do Sprint. Para conduzir estas reuniões deve ser eleito um porta-voz que irá redigir algumas 
questões. Estas questões devem ser resolvidas e registradas nessas reuniões, gerando um histórico do grupo no  Sprint. 

Exemplo de questões que podem ser levantadas:  

1. Qual o valor acrescentado neste incremento (Demonstração)? 
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 próximo 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-organização. 

Nenhum comentário:

Postar um comentário