42
Métodos Ágeis para Métodos Ágeis para Desenvolvimento de Desenvolvimento de Software Livre Software Livre Dionatan Moura Jamile Alves Porto Alegre, 09 de julho de 2015

Métodos Ágeis para Desenvolvimento de Software Livre

Embed Size (px)

Citation preview

Page 1: Métodos Ágeis para Desenvolvimento de Software Livre

Métodos Ágeis para Métodos Ágeis para Desenvolvimento de Desenvolvimento de

Software LivreSoftware Livre

Dionatan MouraJamile Alves

Porto Alegre, 09 de julho de 2015

Page 2: Métodos Ágeis para Desenvolvimento de Software Livre

Quem somos?Quem somos?

Jamile AlvesDionatan Moura

Page 3: Métodos Ágeis para Desenvolvimento de Software Livre

Ágil e Software Ágil e Software Livre?Livre?

Page 4: Métodos Ágeis para Desenvolvimento de Software Livre

Métodos ÁgeisMétodos Ágeis● Manifesto Ágil● Lean Software Development● Kanban● Scrum● eXtreme Programming

Page 5: Métodos Ágeis para Desenvolvimento de Software Livre

Manifesto ÁgilManifesto ÁgilValoresValores

● Indivíduos e interaçõesmais que processos e ferramentas

● Software em funcionamentomais que documentação abrangente

● Colaboração com o clientemais que negociação de contratos

● Responder a mudançasmais que seguir um plano

http://www.agilemanifesto.org

Page 6: Métodos Ágeis para Desenvolvimento de Software Livre

Manifesto ÁgilManifesto ÁgilPrincípiosPrincípios

● Nossa maior prioridade é satisfazer o cliente através da entrega contínua e adiantada de software com valor agregado.

● Mudanças nos requisitos são bem-vindas, mesmo tardiamente no desenvolvimento. Processos ágeis tiram vantagem das mudanças visando vantagem competitiva para o cliente.

● Entregar frequentemente software funcionando, de poucas semanas a poucos meses, com preferência à menor escala de tempo.

http://www.agilemanifesto.org

Page 7: Métodos Ágeis para Desenvolvimento de Software Livre

Manifesto ÁgilManifesto ÁgilPrincípiosPrincípios

● Pessoas de negócio e desenvolvedores devem trabalhar diariamente em conjunto por todo o projeto.

● Construa projetos em torno de indivíduos motivados. Dê a eles o ambiente e o suporte necessário e confie neles para fazer o trabalho.

● O método mais eficiente e eficaz de transmitir informações para e entre uma equipe de desenvolvimento é através de conversa face a face.

● Software funcionando é a medida primária de progresso.

http://www.agilemanifesto.org

Page 8: Métodos Ágeis para Desenvolvimento de Software Livre

Manifesto ÁgilManifesto ÁgilPrincípiosPrincípios

● Os processos ágeis promovem desenvolvimento sustentável. Os patrocinadores, desenvolvedores e usuários devem ser capazes de manter um ritmo constante indefinidamente.

● Contínua atenção à excelência técnica e bom design aumenta a agilidade.

● Simplicidade--a arte de maximizar a quantidade de trabalho não realizado--é essencial.

http://www.agilemanifesto.org

Page 9: Métodos Ágeis para Desenvolvimento de Software Livre

Manifesto ÁgilManifesto ÁgilPrincípiosPrincípios

● As melhores arquiteturas, requisitos e designs emergem de equipes auto-organizáveis.

● Em intervalos regulares, a equipe reflete sobre como se tornar mais eficaz e então refina e ajusta seu comportamento de acordo.

http://www.agilemanifesto.org

Page 10: Métodos Ágeis para Desenvolvimento de Software Livre

Usar ÁgilUsar ÁgilVSVS

Ser ÁgilSer Ágil

Page 11: Métodos Ágeis para Desenvolvimento de Software Livre

Lean Software DevelopmentLean Software Development

Page 12: Métodos Ágeis para Desenvolvimento de Software Livre

Lean Software DevelopmentLean Software Development

O que é valor?O que é valor?

Page 13: Métodos Ágeis para Desenvolvimento de Software Livre

Lean Software DevelopmentLean Software Development

Mas o que é valor em software livre?

http://www.fsf.org/working-together/gang

Page 14: Métodos Ágeis para Desenvolvimento de Software Livre

Trabalho x ValorTrabalho x Valor

Trabalho com desperdício oculto

Trabalho com valor agregado

Trabalho com desperdício evidente

Page 15: Métodos Ágeis para Desenvolvimento de Software Livre

● Sete Princípios

● Eliminar desperdícios● Incluir a qualidade no processo● Amplificar aprendizado● Decidir tão tarde quanto possível● Entregar rápido● Empoderar o time● Ver o todo

Lean Software DevelopmentLean Software Development

Page 16: Métodos Ágeis para Desenvolvimento de Software Livre

● Desperdícios

● Trabalho incompleto (estoque)● Funcionalidades extras (superprodução)● Reaprendizado● Processos extras (superprocessamento)● Troca de Tarefas● Espera● Defeito

Lean Software DevelopmentLean Software Development

Page 17: Métodos Ágeis para Desenvolvimento de Software Livre

KanbanKanban

http://fabrica.ms.senac.br

● Visualiza o fluxo de trabalho● WIP: Work In Progress● Sistema Puxado (Pull)

Page 18: Métodos Ágeis para Desenvolvimento de Software Livre

ScrumScrum

http://epf.eclipse.org

Backlogdo Produto

Backlogda Sprint

ReuniãoDiária

Entrega24 horas

1-4semanas

Page 19: Métodos Ágeis para Desenvolvimento de Software Livre

Extreme ProgrammingExtreme Programming

Page 20: Métodos Ágeis para Desenvolvimento de Software Livre

Propriedade Propriedade coletivacoletiva

Extreme ProgrammingExtreme Programming

Page 21: Métodos Ágeis para Desenvolvimento de Software Livre

http://agilecoach.typepad.com/

Extreme ProgrammingExtreme ProgrammingModelo de Histórias de UsuárioModelo de Histórias de Usuário

Page 22: Métodos Ágeis para Desenvolvimento de Software Livre

<Título> Como um <papel de usuário> Eu quero <objetivo> Para que <razão de negócio>

Extreme ProgrammingExtreme ProgrammingHistórias de UsuárioHistórias de Usuário

Page 23: Métodos Ágeis para Desenvolvimento de Software Livre

Critério de Aceitação XDado que <pré-condição A> E <pré-condição B> Quando <ação> Então <resultado>

Extreme ProgrammingExtreme ProgrammingCritérios de AceitaçãoCritérios de Aceitação

Page 24: Métodos Ágeis para Desenvolvimento de Software Livre

http://driverlayer.com/img/we%20deliver/20/any

Extreme ProgrammingExtreme ProgrammingPequenas EntregasPequenas Entregas

Page 25: Métodos Ágeis para Desenvolvimento de Software Livre

https://oblogdoalves.wordpress.com/category/piadas/

Extreme ProgrammingExtreme ProgrammingProjeto SimplesProjeto Simples

Page 26: Métodos Ágeis para Desenvolvimento de Software Livre

● Código consistente● Encoraja a propriedade coletiva

Extreme ProgrammingExtreme ProgrammingPadrões de CodificaçãoPadrões de Codificação

Page 27: Métodos Ágeis para Desenvolvimento de Software Livre

http://en.wikipedia.org

Extreme ProgrammingExtreme ProgrammingTrabalho em ParesTrabalho em Pares

Page 28: Métodos Ágeis para Desenvolvimento de Software Livre

http://martinfowler.com/books/refactoringBook.jpg

Extreme ProgrammingExtreme ProgrammingRefatoraçãoRefatoração

Page 29: Métodos Ágeis para Desenvolvimento de Software Livre

RegrasRegrasI. Escrever novo código somente se já existir um teste automatizado falhando

II. Eliminar duplicação

Extreme ProgrammingExtreme ProgrammingTDD – Desenvolvimento Guiado por TestesTDD – Desenvolvimento Guiado por Testes

Page 30: Métodos Ágeis para Desenvolvimento de Software Livre

Escreva um teste para o próximo

pedaço da funcionalidade.

3 PassosEscreva código funcional até o teste passar.

Refatore o código novo (e antigo) até ficar bem estruturado.

http://www.pro-tools-expert.com

Extreme ProgrammingExtreme ProgrammingTDD – Desenvolvimento Guiado por TestesTDD – Desenvolvimento Guiado por Testes

Page 31: Métodos Ágeis para Desenvolvimento de Software Livre

http://agileinaflash.blogspot.com.br/2009/02/red-green-refactor.html

Mantra do TDDMantra do TDD

Extreme ProgrammingExtreme ProgrammingTDD – Desenvolvimento Guiado por TestesTDD – Desenvolvimento Guiado por Testes

Page 32: Métodos Ágeis para Desenvolvimento de Software Livre

http://martinfowler.com

Serviços

Unidade

UI

Extreme ProgrammingExtreme ProgrammingAutomatização de TestesAutomatização de Testes

Page 33: Métodos Ágeis para Desenvolvimento de Software Livre

http://www.in2it.be

Ferramenta de gerência de configuração

Time de desenvolvimento

StakeholdersIntegração contínua

Ambiente dehomologação

Ambiente deprodução

Monitoramentocontínuo

Extreme ProgrammingExtreme ProgrammingIntegração ContínuaIntegração Contínua

Page 34: Métodos Ágeis para Desenvolvimento de Software Livre

http://mario.wikia.com

Page 35: Métodos Ágeis para Desenvolvimento de Software Livre

MVP e MMPMVP e MMP

MMP (Minimum Marketable Product – Produto Mínimo MMP (Minimum Marketable Product – Produto Mínimo Comercializável)Comercializável)MVP (Minimum Value Product – Produto Viável Mínimo)MVP (Minimum Value Product – Produto Viável Mínimo)

http://www.romanpichler.com

Page 36: Métodos Ágeis para Desenvolvimento de Software Livre

Dívidas TécnicasDívidas Técnicas(Technical Debt)(Technical Debt)

http://www.andrejkoelewijn.com/

Negócio(Visível)

Valor +

Valor -

Técnico(Invisível)

Page 37: Métodos Ágeis para Desenvolvimento de Software Livre

Clean CodeClean Code

Page 38: Métodos Ágeis para Desenvolvimento de Software Livre

E sim, é possível!E sim, é possível!

Page 39: Métodos Ágeis para Desenvolvimento de Software Livre

Case Case do do

ModusModus

Page 40: Métodos Ágeis para Desenvolvimento de Software Livre

E o Segredo:E o Segredo:

Page 41: Métodos Ágeis para Desenvolvimento de Software Livre

FeedbackFeedbackConstante!Constante!

http://www.samatters.com

Page 42: Métodos Ágeis para Desenvolvimento de Software Livre

Métodos Ágeis paraMétodos Ágeis paraDesenvolvimento de Software LivreDesenvolvimento de Software Livre

Dionatan MouraJamile Alves

Porto Alegre, 09 de julho de 2015

Dionatan Moura● @dionatanmoura

● www.dionatanmoura.com

Jamile Alves● @jsmalves

Slideshttp://www.slideshare.net/dionatanmoura