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
Quem somos?Quem somos?
Jamile AlvesDionatan Moura
Ágil e Software Ágil e Software Livre?Livre?
Métodos ÁgeisMétodos Ágeis● Manifesto Ágil● Lean Software Development● Kanban● Scrum● eXtreme Programming
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
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
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
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
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
Usar ÁgilUsar ÁgilVSVS
Ser ÁgilSer Ágil
Lean Software DevelopmentLean Software Development
Lean Software DevelopmentLean Software Development
O que é valor?O que é valor?
Lean Software DevelopmentLean Software Development
Mas o que é valor em software livre?
http://www.fsf.org/working-together/gang
Trabalho x ValorTrabalho x Valor
Trabalho com desperdício oculto
Trabalho com valor agregado
Trabalho com desperdício evidente
● 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
● Desperdícios
● Trabalho incompleto (estoque)● Funcionalidades extras (superprodução)● Reaprendizado● Processos extras (superprocessamento)● Troca de Tarefas● Espera● Defeito
Lean Software DevelopmentLean Software Development
KanbanKanban
http://fabrica.ms.senac.br
● Visualiza o fluxo de trabalho● WIP: Work In Progress● Sistema Puxado (Pull)
ScrumScrum
http://epf.eclipse.org
Backlogdo Produto
Backlogda Sprint
ReuniãoDiária
Entrega24 horas
1-4semanas
Extreme ProgrammingExtreme Programming
Propriedade Propriedade coletivacoletiva
Extreme ProgrammingExtreme Programming
http://agilecoach.typepad.com/
Extreme ProgrammingExtreme ProgrammingModelo de Histórias de UsuárioModelo de Histórias de Usuário
<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
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
http://driverlayer.com/img/we%20deliver/20/any
Extreme ProgrammingExtreme ProgrammingPequenas EntregasPequenas Entregas
https://oblogdoalves.wordpress.com/category/piadas/
Extreme ProgrammingExtreme ProgrammingProjeto SimplesProjeto Simples
● Código consistente● Encoraja a propriedade coletiva
Extreme ProgrammingExtreme ProgrammingPadrões de CodificaçãoPadrões de Codificação
http://en.wikipedia.org
Extreme ProgrammingExtreme ProgrammingTrabalho em ParesTrabalho em Pares
http://martinfowler.com/books/refactoringBook.jpg
Extreme ProgrammingExtreme ProgrammingRefatoraçãoRefatoração
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
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
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
http://martinfowler.com
Serviços
Unidade
UI
Extreme ProgrammingExtreme ProgrammingAutomatização de TestesAutomatização de Testes
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
http://mario.wikia.com
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
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)
Clean CodeClean Code
E sim, é possível!E sim, é possível!
Case Case do do
ModusModus
E o Segredo:E o Segredo:
FeedbackFeedbackConstante!Constante!
http://www.samatters.com
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