101
CBSoft – Salvador – Bahia – Setembro de 2010 Introdução a Métodos Ágeis de Desenvolvimento de Software Daniel Cukier (AgilCoop) twitter.com/danicuki Prof. Dr. Rafael Prikladnicki (PUCRS) twitter.com/rafaelpri

Introdução a Métodos Ágeis de Desenvolvimento de Software

Embed Size (px)

DESCRIPTION

Curso ministrado no evento CBSoft I - Salvador - Bahia por Daniel Cukier e Rafael Prikladnicki

Citation preview

Page 1: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Introdução a Métodos Ágeis de Desenvolvimento de

SoftwareDaniel Cukier (AgilCoop)

twitter.com/danicuki

Prof. Dr. Rafael Prikladnicki (PUCRS)twitter.com/rafaelpri

Page 2: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Quem usa Scrum e XP?

Page 3: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Quem usa Scrum e XP?

Page 4: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

EUA

BR2 anos!

Quem usa Scrum e XP?

Page 5: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Quem usa Scrum e XP?

Page 6: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Quem usa Scrum e XP?

Page 7: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Quem usa Scrum e XP?

Page 8: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Page 9: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Daniel Cukier

15 anos de experiência com desenvolvimento do Software

3 anos como gerente de Desenvolvimento na Locaweb

Membro da Agilcoop desde 2003

Autor do blog www.agileandart.com

Mestre em Ciência da Computação – IME/USP (2009)

Palestra em vários eventos

Encontro Ágil, Oxente Rails, Falando em Ágil, SugarLoafPLoP, etc

Áreas de atuação acadêmica e profissional:

Desenvolvedor e líder técnico em vários projetos de software.

Um dos responsáveis pela implantação de Métodos Ágeis na

Locaweb

Padrões para Introduzir Novas Ideias na Indústria de Software

Outras não menos importantes:

Teatro, música, poesia, meditação

Page 10: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Contexto e experiência na AgilCoop

Cursos de graduação em XP desde 2001

Apresentações SBES, SUCESU, SEPAI, SEBRAE, etc.

Arquivos disponíveis: www.agilcoop.org.br

Assessorias em métodos ágeis

Artigos científicos

Dissertações de Mestrado

Page 11: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Professor da FACIN – PUCRS desde 2004 – www.inf.pucrs.br/~rafael

Coordenador de Gestão de Projetos da AGT/PUCRS

Professor do PPGCC desde 2010/1

Coordenador do GUMA e do SPIN-POA (Sucesu-RS)

Certified ScrumMaster (CSM) e Project Mgmt Professional (PMP)

Mestre em Ciência da Computação – PUCRS (2003)

Doutor em Ciência da Computação – PUCRS (2009)

Áreas de atuação acadêmica e profissional:

Desenvolvimento Distribuído de Software

Gerência de Projetos

Melhoria de Processo de Software

Engenharia de Software Experimental

Lean e Métodos Ágeis para Desenvolvimento de Software

Rafael Prikladnicki

Page 12: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Contexto e experiência na PUCRS

www.inf.pucrs.br/munddos

Criado em 2001

Registrado no CNPq em 2004

Livros publicados em 2007, 2009 e 2010

2 pesquisadores

Formou 11 mestres, 1 doutor

Possui 6 mestrandos, 2 doutorandos

Page 13: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Implantação de práticas de DDS nas empresas

Desenvolvimento de ferramentas para apoiar DDS

Integração de DDS com métodos ágeis

Estudo de maneiras de usar Follow-the-Sun (FTS)

Formação de profissionais e alunos em DDS

Estudo do papel do Brasil no mercado global de TI

www.inf.pucrs.br/munddos

Contexto e experiência na PUCRS

Page 14: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Contexto e experiência na PUCRS

Page 15: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Introdução e motivação

O que são Métodos Ágeis?

Princípios

Problemas com abordagens tradicionais

Alguns métodos ágeis

Conclusão

Agenda

Page 16: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Por que teu projeto termina com sucesso?

Por que teu projeto fracassa?

Discussão em grupo 15 minutos Agrupar problemas

e fracassos em categorias

Dinâmica

Grupo 2

Grupo n

Grupo 1

Grupo 3

Sucesso Fracasso

Ref: Henrik Kniberg

Page 17: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Motivação

Page 18: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Como ganhar dinheiro resolvendo problemas que voce não conhece,

com pessoas desconhecidas, em um

tempo curto e com poucos recursos (e se

divertindo)?

Motivação

Page 19: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Tenho como produzir 100 aviões em 10 minutos?

Quantos aviões 10 pessoas produzem em 10 minutos?

Tenho, mas:

- Vou verificar tudo ao final

- Posso ter baixa qualidade

- Posso ter retrabalho

- Posso não ter entendido o escopo

Então por que deixar tudo para o final?

Page 20: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Tenho como produzir 100 aviões em 10 minutos?

E se produzirmos um pouco a cada 2 minutos?

E se melhorarmos a cada ciclo?

E se o cliente fornecer feedback a cada ciclo?

E se a equipe encontrar a melhor forma de trabalhar?

Quantos aviões 10 pessoas produzem em 10 minutos?

Page 21: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Gráfico de Burndown

0

50

100

150

200

250

300

Objetivo Sprint 1 Sprint 2 Sprint 3 Sprint 4 Sprint 5

Sprints

Aviões restantes

Motivação

Page 22: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Gráfico de Burndown

0

50

100

150

200

250

Objetivo Sprint 1 Sprint 2 Sprint 3 Sprint 4 Sprint 5

Sprints

Aviões restantes

Motivação

Page 23: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Sociedade demandagrande quantidade de sistemas/aplicações

software complexo, sistemas distribuídos, heterogêneos

requisitos mutantes (todo ano, todo mês, todo dia)

Mas, infelizmente,não há gente suficiente para desenvolver

tanto software com qualidade

Novos ventos no desenvolvimento de software

Page 24: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Resultado dos projetos em 2004

Relatório do Chaos (Chaos Report)

Page 25: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Resultado dos projetos em 2004

Relatório do Chaos (Chaos Report)

1994 2004

Projetos não concluídos------------ 31%

Projetos bem sucedidos----- 16%

Estouro médio de custo-----------------------> 180%

Estouro médio de prazo-----------------------> 164%

Projetos não concluídos------- 18%

Projetos bem sucedidos----------- 29%

Estouro médio de custo----------------- 56%

Estouro médio de prazo------------------------- 84%

Page 26: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Evitar desperdício

Estudo do The Standish Group conclui (Chaos Report): Pesquisa sobre a utilização das funcionalidades do software ...

Mais de 64% de um sistema de software quase nunca não é utilizado!

Mais de 64% de um sistema de software quase nunca não é utilizado!

Page 27: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Com métodos tradicionais/clássicos de desenvolvimentoSupõem que é possível prever o futuroPouca interação com os clientesÊnfase em burocracias

(documentos, formulários, processos, controles rígidos, etc.)

Avaliação do progresso baseado na evolução da burocracia e não do código

Com softwareGrande quantidade de errosFalta de flexibilidade

Problemas

Page 28: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Melhores TecnologiasPadrões de Projeto (reutilização de idéias)Componentes (reutilização de código)Middleware/frameworks (aumenta a

bstração)

Melhores MetodologiasMétodos Ágeis (o foco deste mini-curso)outras... (abordados em outros cursos de

ES)

Como resolver o impasse?

Page 29: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Erro comum: olhar para software como apenas um desses itens e ignorar os demais

O que é desenvolvimento de software?

(Gabriel)Arte

(Knuth)Artesanato

(Cockburn)Poesia

(Humphreys)Disciplina

(Meyer)Engenharia

(Jacobson)ModelagemPor Alistair Cockburn:

Page 30: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Agile is not a set of practices, but a

core set of beliefs and principles

Jim Highsmith

O que são métodos ágeis?

Page 31: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Retorno de investimentoInovação

Melhoria de processoPessoasCultura

ComunicaçãoAdaptação x Antecipação

Princípios

Page 32: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Movimento iniciado por programadores experientes e consultores em desenvolvimento de software.

Questionam e se opõem a uma série de mitos e práticas adotadas em abordagens tradicionais de Engenharia de Software e Gerência de Projetos.

Manifesto Ágil:Assinado por 17 desenvolvedores em Utah

em fevereiro/2001. http://agilemanifesto.org

Histórico

Page 33: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Processos e ferramentasProcessos e ferramentas

Documentação abrangenteDocumentação abrangente

Negociação de contratoNegociação de contrato

Plano pré-estabelecidoPlano pré-estabelecido

mais mais importante importante

queque

Agile Manifesto (2001)

Indivíduos e interaçõesIndivíduos e interações

Software funcionandoSoftware funcionando

Colaboração do clienteColaboração do cliente

Resposta às mudançasResposta às mudanças

http://agilemanifesto.org

Kent Beck James Grenning Robert C. Martin Mike Beedle Jim Highsmith Steve Mellor Arie van Bennekum Andrew Hunt Ken Schwaber Alistair Cockburn Ron Jeffries Jeff Sutherland Ward Cunningham Jon Kern Dave Thomas Martin Fowler Brian Marick

Page 34: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

O mais importante é o software funcionando Periodicamente a equipe deve refletir sobre

como se tornar mais efetivo Profissionais motivados Suporte às necessidades da equipe e

ambiente necessário para desenvolvimento das atividades

Confiança no trabalho da equipe

Alguns princípios

Page 35: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

O gerente de projeto concorda em prosseguir sem que todos os requisitos estejam bem definidos

Os desenvolvedores concordam em prosseguir sem ter todos os requisitos documentados

Os membros da equipe sabem que alguém vai ajudar quando ocorrerem problemas

Em um projeto ágil ideal...

Page 36: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Os gerentes percebem que não precisam dizer à equipe o que fazer, ou garantir o que vai ser feito

A equipe percebe que ninguém vai dizer o que fazer, isto faz parte do trabalho da equipe

Não existem mais a impressão de divisão (testers and programmers), todos são desenvolvedores

Em um projeto ágil ideal...

Page 37: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Mudança de Postura

Equipe

Equipe

Equipe

Equipe

GP

Equipe

Equipe

Equipe

Equipe

GP

Tradicional Ágil

Cross-funcional

Auto-organização

Page 38: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

0. Levantamento de Requisitos

1. Análise de Requisitos

2. Desenho da Arquitetura

3. Implementação

4. Testes

5. Produção / Manutenção

Enquanto isso, num projeto tradicional...

Page 39: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

É necessário fazer uma análise de requisitos profunda e detalhada antes de projetar a arquitetura do sistema

É necessário fazer um estudo minucioso e elaborar uma descrição detalhada da arquitetura antes de começar a implementá-la

É necessário testar o sistema completamente antes de mandar a versão final para o cliente

Premissas básicas do modelo tradicional

Page 40: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Cascata é como uma bala de canhão

Page 41: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Interface

Cliente

Servidor

BD

C

Iterativo = não espere ter tudo correto na primeira vezIncremental = construa em ”pedaços” verticais (features) ao invés de horizontais (camadas)

Desenvolvimento monolítico

1

2

3

4

1

Desenvolvimento incremental

2 3

Talvez não sejanecessário construiro resto

C

Interface

Cliente

Servidor

BD

Iterativo e Incremental

Ref: Henrik Kniberg

Page 42: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Iterativo e Incremental

Produto?

Page 43: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

O que muda?

Custodamudança

Intensidade e stress

Tempo

Tempo Tempo

Entrega de valor

TransparênciaEnvolvimento

do cliente

Tempo

Ref: Henrik Kniberg

Tradicional

Ágil

Page 44: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Metodologias ágeis são uma tentativa de refinar

as metodologias iterativas, tirando o foco

do processo em si e dando mais ênfase para a contribuição das pessoas

Page 45: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Metodologias ágeis é uma febre? Uma onda

passageira?

É o início de uma mudança na forma de trabalho...

Page 46: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Evitar incerteza x Gerenciar para incerteza

Ref: Luiz Cláudio Parzianello

Page 47: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

O paradoxo da multitarefa

Ref: Henrik Kniberg

Visão tradicional “Tudo é importante, vamos fazer tudo ao mesmo tempo!”

Visão ágil “Prioriza e foca naquilo que é mais importante!”

Jan Feb Mar Abr Mai Jun Jul

Jan Feb Mar Abr Mai Jun Jul

A B C

Page 48: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Métodos tradicionais O planejamento deve propiciar a prevenção de

mudanças

Métodos ágeis A mudança é incorporada ao escopo

Razões Necessidades de negócio Novas oportunidades Mudanças de legislação Requisitos incompletos

O que muda?

Page 49: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

A atitude dos desenvolvedores de software seria completamente diferente:

Tomaríamos as grandes decisões o mais tarde possível

Implementaríamos agora somente o que precisamos agora

Não implementaríamos flexibilidade desnecessária (não anteciparíamos necessidades)

E se fosse essa a realidade?

Page 50: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Orientação a Objetos: facilita e cria oportunidades para mudanças

Técnicas de Refatoração

Testes automatizados: nos dão segurança quando fazemos mudanças

Prática / cultura de mudanças: aprendemos técnicas e adquirimos experiência em lidar com código mutante

E essa é a nova realidade (em muitos casos)

Page 51: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Adaptative Software Development (ASD) Jim Highsmith

Crystal Clear (Crystal) Alistar Cockburn

Extreme Programming (XP) Kent Beck, Eric Gamma

Scrum Ken Schwaber, Jeff Sutherland, Mark Beedle

Lean Software Development Mary e Tom Poppendieck

Feature Driven Development (FDD) Peter Coad, Jeff DeLuca

Test Drive Development (TDD) Kanban

Principais Métodos Ágeis

Page 52: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Agile Project Management – Jim Highsmith, 2008

Agile Enterprise Framework

Governança e Portfólio

Gerência de Projeto

Gerência de Iterações

Práticas Técnicas

ROI, Progresso, Risco, Investimento

Release, aquisição, PMBOK, externo

Interno, Scrum

XP, FDD, etc

Mudança de perspectiva

Page 53: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

1. David Rico (2008) Survey de artigos acadêmicos e científicos

publicados

2. VersionOne (2008) Survey online com mais de 3.000 pessoas

3. QSMA (Michael Mah 2008) Comparação rigorosa de 26 projetos ágeis com

uma base de 7.500 projetos “tradicionais” Equipes ágeis variando entre 26 e 1.000 pessoas

4. Dr. Dobb’s Journal (2008) Survey online com 642 pessoas

Métodos ágeis funcionam?

Page 54: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Fonte: Mah 2008.

Agile projects are 16% more productive at a statistically significant level of confidence.

Métodos ágeis funcionam?

Page 55: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Satisfação no trabalho Após 15 meses de adoção do Scrum, 86% dos

colabroadores da Salesforce.com estavam tendo um “good time” ou o “best time”

Apenas 40% disseram isto antes de adotar Scrum 92% recomendariam métodos ágeis para outras pessoas

Time to Market VersionOne

• 64% disseram que o time to market melhorou• 23% disseram que melhorou significativamente

Michael Mah• Projetos ágeis tem um time to market 37% mais rápido

com um nível de confiança estatisticamente significante

Métodos ágeis funcionam?

Page 56: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Fonte: Mah 2008.

Métodos ágeis funcionam?

Page 57: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Melhoria na satisfação dos stakeholders Dr. Dobb’s

• 47% disseram que a satisfação foi “somewhat higher”• 31% disseram que foi “much higher”

Version One

ImprovedSignificantly

Improved

Enhanced ability to manage changing priorities

41% 51%

Improved project visibility 42% 41%

Improved alignment of IT and business goals

39% 27%

Reduced project risk 48% 17%

Métodos ágeis funcionam?

Page 58: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

5 motivos para NÃO usar métodos ágeis?

Page 59: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Cinco Motivos para não usar Métodos Ágeis

Motivo 1Motivo 1

Eu sei e defino Eu sei e defino todos os requisitos todos os requisitos no início do projetono início do projeto

Não preciso de ciclos iterativos

Qual projeto de software possui todos os requisitos definidos (corretamente) no início?

Page 60: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Cinco Motivos para não usar Métodos Ágeis

Motivo 2Motivo 2

Os objetivos do Os objetivos do meu projeto estão meu projeto estão

muito claros muito claros desde o iníciodesde o início

O cliente descobre o que quer ao longo do caminho

Page 61: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Cinco Motivos para não usar Métodos Ágeis

Motivo 3Motivo 3

Meu projeto Meu projeto envolve baixa envolve baixa

incertezaincerteza

Qual projeto de software envolve baixa incerteza?

Page 62: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Cinco Motivos para não usar Métodos Ágeis

Motivo 4Motivo 4

Minha estimativa Minha estimativa está toda definida está toda definida

e com índice de e com índice de erro muito baixoerro muito baixo

Em qual projeto de software consigo ter estimativas precisas?

Page 63: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Cinco Motivos para não usar Métodos Ágeis

Motivo 5Motivo 5

Meu processo é Meu processo é rígido e controlado rígido e controlado (comando-controle)(comando-controle)

As tarefas são delegadas, equipes ficam desmotivadas mais facilmente

Qual equipe gosta de trabalhar desmotivada?

Page 64: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Cinco Motivos para não usar Métodos Ágeis

Requisitos definidos desde o inícioRequisitos definidos desde o inícioObjetivos claros desde o inícioObjetivos claros desde o início

Comando-controleComando-controleBaixa incertezaBaixa incerteza

Estimativas precisasEstimativas precisas

Qual projeto de desenvolvimento de Qual projeto de desenvolvimento de software possui estas software possui estas

características?características?

Page 65: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

E os Cinco Motivos?

Requisitos definidos desde o inícioRequisitos definidos desde o inícioObjetivos claros desde o inícioObjetivos claros desde o início

Comando-controleComando-controleBaixa incertezaBaixa incerteza

Estimativas precisasEstimativas precisas

Qual projeto de desenvolvimento de Qual projeto de desenvolvimento de software possui estas software possui estas

características?características?

Entao NÃO faz sentido NÃO usar

Entao NÃO faz sentido NÃO usar

metodologias ágeis na grande

metodologias ágeis na grande

maioria dos casos.

maioria dos casos.

Mas não APENAS metodologias

Mas não APENAS metodologias

ágeis!!!ágeis!!!

Page 66: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

SCRUM

Page 67: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Scrum - Jogada de Rugby

Page 68: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Ref.:3rd Annual ”State of Agile Development” Survey June-July 20083061 respondentes, 80 países

Quem usa Scrum?

Page 69: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

69

Req

uisi

tos

Longe de um acordo

Perto de um acordo

TecnologiaPerto da certeza Longe da certeza

Simples

Complicado

Complexo

Anarquia

Ref. : Strategic Management and Organizational Dynamics by Ralph Stacey, in Agile Software Development With Scrum by Ken Schwaber and Mike Beedle.

Mesmo que o produto seja complexo...

... Tente manter uma

iteração simples

Como resolver

Page 70: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Adaptativo

E

C D

A

Planejado

Tradicional

Ágil

Sem 1 Sem 2 Sem 3 Sem 4

B

C D

A

Sem 1 Sem 2 Sem 3 Sem 4

B

Sem 5 Sem 6 Sem 7 Sem 8

D

A

Sem 1 Sem 2 Sem 3 Sem 4

B

Sem 5 Sem 6 Sem 7 Sem 8

A B

Page 71: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Ênfase: processo empírico

Princípio Características desconhecidas Prioridades devem ser consideradas Escopo irá mudar!

Essência do SCRUM Inspeção

• Verificar o que foi feito no período

Adaptação• Melhorar o processo

Planejar Planejar o sprint

Desenvolver Realizar o sprint

Inspecionar (check) Sprint review e retrospectiva

Adaptar Lições para o próximo planejamento

PLAN

DO

ACT

CHECK

Page 72: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

O Framework do Scrum

Page 73: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Planejamento e preparação

Product Owner e Cliente Visão do produto

Requisitos funcionais e não funcionais Restrições e User stories (prática do XP)

Criação do product backlog Conjunto de funcionalidades do sistema Priorização das funcionalidades

Preparação da base necessária para o desenvolvimeto Mecanismos de comunicação e coordenação Formação das equipes

Page 74: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

User Stories

User stories Identificação de atores envolvidos Como um [papel do usuário]

quero [funcionalidade]para [valor de negócio]

I.N.V.E.S.T. (independente, negociável, valorizável, estimável, small e testável)

Quebrar grandes e juntar pequenas Definição do conceito de DONE (testes)

• Diferentes perspectivas

Prioridades das user stories• Valor entre 1 e 150?

• Must have

• Should have

• Could have

Page 75: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Desenvolvimento

Product Owner, ScrumMaster e Equipe Análise e organização do Product Backlog

Refinamento das funcionalidades Estimativas Escolha das funcionalidades para o sprint Formalização do sprint backlog Identificação das tarefas Organização da taskboard

2-4 hs 2-4 hs

Page 76: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Desenvolvimento

Estimativas Tempo e/ou complexidade? Fibonacci

• 1, 2, 3, 5, 8, 13, 21…

Planning poker• As duas estratégias de uso de planning poker

• Jogar as cartas para cada estória

• Colocar cada estória embaixo de uma carta

Algumas práticas utilizadas:• Pontos para funcionalidades e horas para tarefas

• 1-day tasks (máximo 2 e mínimo 1/2)

• Considerar tarefas como teste, pesquisas, documentação, etc.

Page 77: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Desenvolvimento

Tempo ou Complexidade 4 pessoas trabalhando 4 semanas Equipe: 640 horas 2 junior, 2 senior

• Produzem 25 pontos de complexidade

4 pessoas trabalhando 4 semanas Equipe: 640 horas 4 senior

• Produzem 60 pontos de complexidade

Page 78: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Planning poker

1Muito pequeno!

2 3 5

8 13 21 40

Férias!

Mais detalhes!

Nem idéia!

Intervalo!

Page 79: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Planning poker

Planning Poker na PRÁTICA!

Avaliar distância entre

Argentina e Mongólia Chile e Itália Japão e Austrália Índia e Alemanha EUA e Rússia Ucrânia e China

Page 80: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

VALOR

COMPLEXIDADEAltaBaixa

Alta

Baixa

UStory1

UStory2

UStory3

UStory4

Priorização e classificação do backlog

Page 81: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

40 3030 2830 3130 30

Estimado Realizado

40 3040 3040 30

40 3050 3060 30

40 3535 3030 25

302520

Calibrando a velocidade

Estimado Realizado

Estimado Realizado Estimado Realizado

Page 82: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Calibrando a velocidade

Início da sprint

8

5

3

5

5

5

3

5

5

8

Backlogdo produto

8

5

3

5

5

Backlogda sprint

Final da sprint

8

5

3

5

5

Feito!

Feito!

Feito!Quase

Nem iniciamos

Velocidadereal =

18

Backlogda sprint

Velocidadeestimada =

26

Page 83: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Administrate users

Administrate users

Register new user

Register new user

Edit existing user

Edit existing user

Delete userDelete user

Find userFind user

100 simultaneous users

100 simultaneous users

Operations manual

Operations manual

As a helpdesk operator I want to see

who is logged in

As a helpdesk operator I want to see

who is logged in

View Invoice in HTML, PDF, or

Excel format

View Invoice in HTML, PDF, or

Excel format

100 simultaneous users

100 simultaneous users

Operations manual

Operations manual

As a helpdesk operator I want to see who is logged

in

As a helpdesk operator I want to see who is logged

in

View Invoice in HTML, PDF, or

Excel format

View Invoice in HTML, PDF, or

Excel format

Register new user

Register new user

Edit existing user

Edit existing user

Delete userDelete user

Find userFind user

100 simultaneous users

100 simultaneous users

Operations manual

Operations manual

As a helpdesk operator I want to see

who is logged in

As a helpdesk operator I want to see

who is logged in

View Invoice in HTML, PDF, or

Excel format

View Invoice in HTML, PDF, or

Excel format

Dividindo user stories

Page 84: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Dividindo user stories

Administrate users

Administrate users

Register new user

Register new user

Edit existing user

Edit existing user

Delete userDelete user

Find userFind user

User admin

User admin

User admin

User admin

Do GUI designDo GUI design

Write failing test

Write failing test

Do integration test

Do integration test

Create DB schema

Create DB schema

Write server-side logic

Write server-side logic

Write form validationWrite form validation

Dividir

Quebrar em tarefas durante a reunião de sprint planning

13

5

3

8

2

Ref: Henrik Kniberg

Como priorizar itens do backlog?

Como planejar as tarefas?

Page 85: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Desenvolvimento

ScrumMaster e Equipe Dia-a-dia do SCRUM

Sprint• 2 semanas a 4 semanas

Daily meetings (Daily Scrum) Impedimentos

• Obstáculos ao trabalho da equipe

Manter a taskboard• Burndown

• Tarefas e estimativas

• Tarefas não-planejadas

Page 86: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

O Gráfico de Burndown

5

10

15

20

Trabalho que resta na sprint

(pontos de user story)

Dias da sprint

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Gráfico de Burndown de uma Sprint de duas semanas

Vamos terminar antes

Page 87: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

O Gráfico de Burndown

5

10

15

20

Trabalho que resta na sprint

(pontos de user story)

Dias da sprint

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Gráfico de Burndown de uma Sprint de duas semanas

Não vamos conseguir cumprir

a meta desta sprint

Page 88: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

O Gráfico de Burndown

5

10

15

20

Trabalho que resta na sprint

(pontos de user story)

Dias da sprint

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Não estamos atualizando o gráfico de burndown

Gráfico de Burndown de uma Sprint de duas semanas

Page 89: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

O Gráfico de Burndown

100

200

300

400

Trabalho que resta no projeto(pontos de user

story)

Nro de sprints

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

O projeto vai terminarentre os sprints 14 e 16

Gráfico de Burndown da release ou do projeto

Page 90: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Desenvolvimento

Daily Meetings (Daily Scrum) Reunião diária de 15 minutos Mantém equipe informada e integrada

• O que você fez ontem?

• O que pretende fazer para amanhã?

• Quais são seus impedimentos?

Questões técnicas • No final da reunião

Não se resolve problema, apenas se identifica

Page 91: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Desenvolvimento

Para ajudar na execução (taskboard)

Page 92: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Sprint review

Cliente, PO, SM e Team Apresentação do produto Foco no QUE foi feito e não COMO foi feito Aceite formal e feedback do cliente Melhoria na forma de priorização?

Page 93: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Próximo sprint

Lições aprendidas Alimentam o próximo sprint

• Velocidade da equipe

• Erros x acertos

• Previsto x realizado

• Fator de foco da equipe

Repositório de lições Disseminação na empresa

Usar parte do sprint anterior para planejar o próximo sprint

Lições aprendidas

Page 94: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Cancel

Gift wrap

Return

Sprint2-4 semanas

???

Objetivo do Sprint

Backlog da Sprint

Produto a ser entregue

(ou seu incremento)

Backlogdo produto

CuponsEmbrulho

Cupons

Cancelar

24 horas

Fluxo do Scrum

Sprint Planning 1 Sprint Planning 2

Daily Scrum

Sprint Review Retrospectiva

Page 95: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

XP

Page 96: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Lembram disto?

Como Métodos Ágeis podem ajudar a resolver ou minimizar os motivos de fracasso identificados?

Dinâmica

Grupo 2

Grupo n

Grupo 1

Grupo 3

Sucesso Fracasso

Ref: Henrik Kniberg

Page 97: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Conclusões

Quando temos problema em cronograma, modelos tradicionais cortam testes, modelos ágeis cortam histórias. Um reduz a qualidade, o outro reduz o escopo.

A questão não é documentar, é entender. Não existem melhores práticas. Existem boas práticas

para determinadas situações. Entregue hoje. Adapte amanhã. Adaptação é uma resposta à mudança. Equipes auto-gerenciáveis não são equipes sem

liderança, são equipes com outro estilo de liderança. Uso de técnicas como Refatoração, Testes, Modelagem

Ágil são fundamentais para constante mudança do código

Plans are nothing; Planning is everything

Page 98: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

twitter.com/danicukitwitter.com/rafaelpri

Page 99: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Dinâmica

Analista Projetista Programador Testador Cliente

Ref: Luiz Cláudio Parzianello

Æ Œ

Page 100: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Dinâmica

Æ…

Æ Œ Æ Æ…

Æ Œ™ Æ Œ Æ Œ…

Æ Œ™ Æ Œ™…

Ref: Luiz Cláudio Parzianello

Æ Æ Œ Æ Œ™… … … …

Pequenos Lotes

Grandes Lotes

Page 101: Introdução a Métodos Ágeis de Desenvolvimento de Software

CBSoft – Salvador – Bahia – Setembro de 2010

Qual é o arranjo logístico mais rápido?

Qual equipe apresentou o maior esforço por projeto?

Quais as vantagens de cada abordagem?

Quais as desvantagens de cada abordagem?

Qual a justificativa para manter os grandes lotes?

Dinâmica