SCRUM - Uma abordagem prática

sexta-feira, 29 de fevereiro de 2008

Metodologias Ágeis vem ganhando um espaço mais do que merecido no meio da comunidade, e vem sendo adotado de forma acelerada por grandes empresas, como Microsoft, Xerox, IBM, etc..
As vezes seguir a risca metodologias como RUP nem sempre é a melhor opção para as empresas que possuem um tempo escasso para entregar o software com qualidade em prazos cada vez mais curtos, foi quando nos dias 11 a 13 de Fevereiro de 2001, caras como Martin Fowler, Kent Beck, Alistair Cockburn, Ward Cunningham e Ken Schwaber se reuniram em resort de ski em Snowbird (Utah) para mudar o rumo do desenvolvimento de software, foi nesta reunião que nasceu o XP, Scrum, DSDM, Crystal, FDD, e outras metodologias que visam "desburocratizar" o desenvolvimento de software, entre as metologias propostas esta o Scrum idealizado por Ken Schwaben, que vem ganhando cada vez mais adeptos.
Esse post é um tutorial prático de SCRUM, para que se interessarem no assunto recomendo o livro Agile Project Management with Scrum de Ken Schwaben
OBS> Esse tutorial é fortemente baseado no documento pdf Scrum And Xp From The Trenches e no livro Agile Project Management with Scrum de Ken Schwaben.



O que é Scrum ? SCRUM é uma metodologia (ou Framework de acordo com o criador Ken Schwaber) onde a espinha dorsal é que chamamos de Sprint. Que nada mais é do uma lista de objetivos ou requisitos bem definidos cujo time de desenvolvimento irá trabalhar focado em um período de 30 dias.


Papéis no Scrum ?
No Scrum existem 3 papéis que devem estar bem definidos, que são:


Product OwnerScrum MasterScrum Team
É o "cliente" focal, responsável por reunir todas as mudanças planejadas para o produto e priorizar as funcionalidades possíveis. Administra o Backlog do Produto e assegura que o Scrum Team esta trabalhando com as tarefas certas na perspectiva do negócio.O Scrum Master lidera o time de desenvolvimento, resolve possíveis impedimentos e trabalha para assegurar que o time possui a ferramentas e condições necessárias para alcançar os objetivos estabelecidos pelo Sprint. Realiza reuniões diárias “Daily Scrum” com o Scrum Team para o acompanhamento das atividades.São os membros que formam o time de desenvolvedores, designers, consiste de 5 a 9 pessoas. Interagem com o Product Owner para determinar o objetivo do Sprint e priorizar as funcionalidades, e quebrar o Sprint em tarefas detalhadas.
O time é auto organizável e tem a responsabilidade conjunta pelos resultados.









O Product Owner é responsável por compilar todas as requisições e especificações no documento chamado Product Backlog, essas mudanças são referentes ao produto, como novas funções e correções de bugs. As prioridades devem ser feitas durante a criação de cada tarefa.
Em um período de 30 dias, é feito uma reunião que será definido o Sprint Backlog de acordo com os itens do product backlog levantado pelo Product Owner, ou seja, de acordo com os itens de maior prioridade é criado o Sprint Backlog que a equipe terá a responsabilidade de terminar até o próximo Sprint.
Uma vez com o Sprint definido, o Scrum Master diariamente faz o “Daily Scrum”, que é uma reunião com o Scrum Team cujo propósito é eliminar qualquer impedimento. Cada integrante deve responder a 3 perguntas:
1º O que você fez desde a ultima reunião ?
2º O que você vai fazer entre esse e a próxima reunião ?
3º Tem algo impedindo você de efetuar a sua tarefa ?


Qual é o critério para decidir a história que será incluída no Sprint ?

* Base da conversa
* Cálculo de Velocidade
Base da conversa, é ideal quando a equipe não possui histórico de sprints, ou seja, para equipes que nunca trabalharam com Scrum e não possuem dados estátiscos para realizar o calculo de velocidade.
A conversa gira em torno dos desenvolvedores, onde o Scrum Master pergunta para cada membro do time quanto tempo uma atividade do Backlog demora para ser desenvolvida (em horas), e com base nisso as horas necessárias para o projeto.
Quando já passou por alguns ciclos com Sprints, é utilizado o Cálculo de Velocidade é uma medida em cima do “total do trabalho feito”, onde cada item recebe um peso de acordo com a sua estimativa inicial.
.

Como estimar a velocidade ?
Resp: A maneira mais simples de estimar a velocidade é verificar o histórico do time. Qual foi a velocidade do time nos últimos Sprints ? Então assumir que a velocidade será a mesma para o último Sprint, mas isso só funciona se o time já tive feito alguns Sprints antes.
Outra maneira de calcular é através de cálculo de recurso. Por exemplo, vamos assumir que estamos planejando um Sprint de 3 semanas (15 dias) com um time de 4 pessoas. O recurso João ficará dois dias de folga, Zezinho apenas 50%, colocando tudo isso no papel ficará:
RecursosDisponibilidade
em dias
Zezinho7Esta não é ainda nossa estimativa de velocidade,
a nossa unidade de estimativa são os pontos de estória, que no nosso caso corresponde ao “dias
de recurso ideal”.
Wagner15
João13
Trainee15
Total50 Dias de Recurso disponível para este Sprint
Estimamos que a velocidade estimada será menor que 50. Mas quanto menos ? Utilizamos o termo “Fator Foco” para isso:
Fórmula para velocidade estimada do Sprint:
(Dias de Recurso Disponível) * (Fator Foco) = (Velocidade Estimada)
Fator Foco é uma estimativa de como o time esta focado no Projeto. Um fator foco baixo significa que o time espera encontrar vários inconvenientes. A melhor maneira de determinar um Fator Foco concreto é analisando o ultimo Sprint, ou melhor, a média dos últimos Sprints.
Fator Foco do último Sprint:
(Fator Foco) = (Velocidade Atual) .
(Dias de Recurso Disponível)

Velocidade atual é a soma da estimativa inicial de todas as estórias que foram finalizadas no Sprint anterior. Por exemplo, no ultimo Sprint complemos 18 pontos em um time de 3 pessoas, trabalhando por 3 semanas para um total de 45 Dias de Recurso. Vamos calcular o novo Sprint baseado nestes dados, para complicar imagine que chegou mais um recurso (Trainee), que totalizando dá 50 Dias de Recurso com treinamentos, feriados, etc...
Fator Foco do último Sprint:(40%) =(18 Pontos de estória)
(45 Dias de Recurso)
Velocidade Estimada Sprint:(50 Dias de Recurso) * (40%) = (20 Pontos estória)
Desta maneira a velocidade estimada para o próximo Sprint é de 20 pontos de estória. Isso significa que o time deve adicionar estórias para o Sprint até o mesmo chegar perto de 20 pontos.

Index Cards: O que são ?
As reuniões de planejamento são gastas lidando com estórias do Product Backlog. Fazendo estimativas, priorizando-os, discutindo-os.
Scrum propõe uma maneira muito mais ágil de expor os problemas que serão discutidos que são os Index Cards. Na verdade para cada item do backlog é criado um cartão e estes cartões são expostos em um mural.
EX:

** Estas informações serão as mesmas do Product Backlog que podem ser armazenadas em arquivo Excel
Os cartões deverão conter as seguintes informações **:
ID: Identificador único
Nome: Descrição curta da estória.
Importância: Grau de importância da estória. Ex: 10–50. Alto: Mais importante.
Estimativa inicial: Estimativa do time de quanto trabalho é preciso, a medida é feita por pontos de estória que corresponde a “Dias de Recurso”
Demonstração:Uma descrição de alto nível de como será feito a demo do Sprint.
Observação: Outras informações...
Quebrando estórias em tarefas:
A diferença entre estórias e tarefas, é que estórias são as funções que o Product Owner solicitou e que espera que elas sejam entregues.
Desmembramos as estórias em tarefas unitárias de modo a distribuir as atividades do desenvolvimento da estória para toda a equipe.
Ex:

No nosso exemplo o quadro branco (consulta de clientes) seria a estória (item de Sprint) e os post its amarelos as tarefas deste item de backlog.

Gráfico Burndown de acompanhamento diário.






Na linha vertical, colocamos a quantidade de pontos de estória, que é a quantidade de trabalho que deve ser feito para este Sprint através do cálculo de velocidade por atividade, é a velocidade estimada de todo o Sprint. Na linha horizontal, marcamos o primeiro dia do Sprint, nor exemplo 1º de Augusto, e esperamos terminar este Sprint no dia 19 de Junho, a linha tracejada indica a estimativa de trabalho. A linha azul indica o trabalho realizado, no exemplo o gráfico nos mostra que no dia 16 ainda temos aproximadamente 15 pontos de estória de trabalho para fazer. O gráfico é atualizado diariamente durante o Daily Scrum.

Indicadores:De acordo com o gráfico podemos tomar algumas decisões, e saber diariamente o que esta acontecendo no projeto, se está dentro do prazo, etc...

Dissecando o quadro indicador:


Retrospectiva
Ao final de cada Sprint é ideal a equipe e o Scrum Master e discutir o que cada um achou da Sprint e dar suas opiniões. A idéia central se resume na seguinte pergunta: O que podemos melhorar no próximo Sprint ?
No quadro no exemplo, temos 3 colunas:
1ºBom (Good): Se tivéssemos que fazer outra Sprint, faríamos da mesma maneira.
2ºPoderíamos fazer melhor (Could have been better): Se tivéssemos que fazer outra Sprint, faríamos de maneira diferente..
3º Melhorias (Improvements): Idéias concretas que poderíamos implementar no futuro

Exemplo de um quadro de sugestões / análise:


É possível ainda mesclar Scrum com XP, o que torna o trabalho ainda mais produtivo, em tempo oportuno mostrarei algumas das técnicas utilizadas..

SouJava no Campus Party 2008

terça-feira, 19 de fevereiro de 2008

A Participação do SouJava garantiu o entretenimento da galera durante todo o evento, eu tive a felicidade de encontrar os amigos, participar e colaborar um pouco deste grande projeto, e registrá-los, segue algumas fotos do evento.









John "Maddog" Hall - um dos fundados do movimento Open Source Internacional.





















Bruno Souza o "JavaMan" e Fernando o "Mago dos Fantoches"


















Mauricio Leal, o grande MM (Mobile Man) :D


















Tirando uma onda com o brinquedinho do Bruno, o mascote Juggy.



























Minha princesa linda.










No evento da sexta de madruga fiz uma apresentação da Plataforma de Desenvolvimento NetBeans, e no Sabado um Hands-On para alguns participantes, foi uma grande experiência, pois a palestra foi no improviso e mesmo sem ter preparado material algum a palestra acabou rolando quase duas horas..




No começo fiquei um pouco nervoso, mas depois o negócio fluiu...
Falei sobre Arquitetura Modular, um pouco sobre o desenvolvimento interno do NetBeans, o Bruno falou sobre o NetBeans Innovators Grant...
Um pouco mais de uma hora falando parece que foi pouco para abordar meio que superficialmente a arquitetura da plataforma NetBeans.












Infelizmente a plataforma NetBeans não é muito divulgada no Brasil, tirando algumas iniciativas de caras como o Bruno Souza e a Globalcode.. vamos torcer para que isso mude, e que a comunidade do Brasil represente bem, pelo menos com alguns projetos na iniciativa da Sun com os Grants....


No dia seguinte fizemos um Hands On, onde criamos um Wizard para o NetBeans e uma entrada de menu para demostrar o poder e a simplicidade na criação de funcionalidades ricas na Plataforma NetBeans.


É isso aí galera, ano que vem tem mais..

Certificação SCBCD 5 (CX-310-091) - Guia de Estudo

sexta-feira, 15 de fevereiro de 2008

Recentemente tive a felicidade de passar a prova da certificação SCBCD 5.0 com o score de 75%.. não fui muito bem em JPA, pois acabei subestimando a esta parte por conta da experiência que tenho com persistência, enfim ao todo foram 61 perguntas tive e fui avaliado nas seguintes seções:
---------------------------------------------------------------

  • EJB 3.0 Overview
  • General EJB 3.0 Enterprise Bean Knowledge
  • EJB 3.0 Session Bean Component Contract & Lifecycle
  • EJB 3.0 Message-Driven Bean Component Contract
  • Java Persistence API Entities
  • Java Persistence Entity Operations
  • Persistence Units and Persistence Contexts
  • Java Persistence Query Language
  • Transactions
  • Exceptions
  • Security Management
---------------------------------------------------------------

Como fiquei alguns meses me preparando para esta prova, tive a oportunidade de conhecer as melhores fontes na Web para a preparação desta certificação tão almejada.

Mocks (Simulados):

JavaBeat - http://www.javabeat.net/javabeat/scbcd5/mocks/

Esse site possui 4 mocks bem interessantes,..

Existem também softwares comerciais ($$) de simulados conforme os links que segue, mas o 3 possuem uma versão demo para download, com várias questões, vale a pena baixar pelo menos a versão demo pois as questões são bem similares ao exame real.


Resumos (Notes) de estudo

Esse site (Java Boot) é ótimo pois oferece um material completo de cada tópico abordados nos objetos, ALTAMENTE RECOMENDADO.

Java Boot -http://java.boot.by/scbcd5-guide/

Livros:

Bom eu li todo o livro Enterprise JavaBeans 3.0 (5th.Edition)


Outro otimo livro para estudo é o Mastering Enterprise JavaBeans 3.0 que pode ser baixado FREE neste link no site ServerSide.com

E li alguns capítulos do Java EE Tutorial 5 da Sun, mais precisamente os capítulos:

Capítulo 1 - Overview.
Leitura que fornece um overview da arquitetura de servidores Java EE, os tipos de serviços que os servidores que são certificados devem implementar, e conceitos de aplicações distríbuidas, os papéis do devenvolvimento (Bean Provider, Application Assemblem, Deployer, etc...) é bom conhecer bem estes papéis, pois caiu na prova não uma, mas várias questões que exigem o conhecimento dos papéis no desenvolvimento de software corporativo. Depois vamos pular para o Capítulo 20, que aborda o assunto de EJBs em uma visão macro, é interessante estudar também o Capítulo 21, que ensina como iniciar o desenvolvimento em EJB, o Capítulo 22 que apresenta códigos de exemplo para Session Beans, o Capítulo 23 que aborda de maneira prática Message Driven Beans, os Capítulos 24, 25, 26 e 27 que aborda Java Persistence API, é bom estudar também segurança nos Capítulos 28 e 29 se você não conhece JMS, não é prioritário saber para o exame mas como o exame aborda MDB recebendo mensagens de JMS é bom ler o capítulo 31 e 32 que é feito um pente fino, outro capítulo muito importante é o Capítulo 33 que aborda transações (Transactions) , e por fim os Capítulos 34 e 35 que abordam JNDI ENC e Conectores respectivamente..


Segue o link que pode ser baixado no site da Sun ou pode ser navegado online neste link: Tutorial Java EE 5.

Outro site muito importante para quem deseja tirar qualquer certificação é o JavaRanch, o link para SCBCD 5 é o http://faq.javaranch.com/java/ScbcdLinks#scbcd50


É isso aí, Boa Sorte e com todo esse material, com certeza a diversão é garantida !!!!

NetBeans Innovators Grants

sábado, 9 de fevereiro de 2008

A Sun esta lançando o programa "NetBeans Innovators Grants", é a grande chance de tirar aquele projeto engavetado é ganhar uma graninha extra..
Na verdade, NetBeans Grant é um processo que fornece grants para desenvolvedores que desejam trabalhar em seu projeto open source. Como isso funciona ? Um total de 10 grandes projetos serão escolhidos e premiados com um grant de US$ 11,500 dólares, e outros 10 projetos de pequeno porte serão escolhidos e receberão um grant de US$ 2,000 com a possibilidade de receber até US$ 5,000 dólares se o seu projeto for um bom projeto..

O que eu preciso fazer ?
Fácil, é só submeter uma proposta de um projeto qualquer, contanto que seja relacionado ao desenvolvimento do NEtBeans (claro !!!) , e demonstrar como suas idéias irão ajudar a melhorar o Projeto NetBeans, e um grupo de experts (talvez o Dream Team do NetBeans) irão avaliar as melhores idéias e serão selecionados os melhores projetos. Se o seu projeto for aprovado você irá receber o grant de acordo com o tamanho do seu projeto. Mas espera aí, isso não quer dizer que você vai sair com a grana toda no mão, para receber a grana é preciso terminar e entregar o projeto até o prazo final

Prazos

Abertura de submissões
1 de Fevereiro 2008
Fim da entrega das submissões
3 de Março 2008
Anúncio dos juízes dos projetos aprovados que irão receber os grants 1 de Abril 2008
Entrega final do projeto - o dinheiro do grant é pago para projetos finalizados4 de Agosto 2008
Juízes anunciam possíveis prêmios extras em dinheiro - Prêmios Ouro e Prata - e o pagamento dos projetos finalizados
1 de Setembro 2008




Link e fonte http://www.netbeans.org/grant/

Diversão garantida !!!!