métodos Ágeis para desenvolvimento de software livre

Post on 07-Aug-2015

230 Views

Category:

Software

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related