SlideShare una empresa de Scribd logo
1 de 44
Metodologias Ágeis de Desenvolvimento de Software Por Emerson Henrique, Luciano Almeida e Márcio Lins
Quem somos? Emerson Henrique Aluno concluinte do curso de Ciência da Computação Analista Desenvolvedor da Ativasystems Luciano Almeida Graduado em Gestão de Sistemas de Informação Possui MBA em Novas Tecnologias Cursa Especialização em Gerenciamento de Projetos Professor, Consultor, Agilista e Owner do SCRUM Paraíba Márcio Lins Analista Programador  da Construtora Alliance Trabalha com AdvPL (Protheus) E cursa Sistemas para Internet 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 2
Sumário Introdução Caos AgileManifesto.org Metodologias Ágeis XP SCRUM SCRUM + XP Conclusão 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 3
Introdução Projetos de Construção Civil São geralmente construídos como planejados Clientes acompanham a evolução Se algo dá errado, faz-se um relatório Projetos de Software Precisam suportar mudanças nas regras de negócio Clientes só vêem algo funcionando perto do fim ou em prazos longos Se algo dá errado, se esquece ou mascara o erro 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 4
Introdução Algumas empresas adotam metodologias de desenvolvimento e práticas extremamente formais e controladoras, porém ainda não conseguem obter qualidade. Por quê? Pouca preocupação com as pessoas e a interação entre elas Pouca comunicação com o cliente Custos muito altos Excesso de formalismo Qual a consequência disso? Alta rotatividade No fim o software não serve mais Projeto cancelado Prazos estourados 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 5
Introdução Além disso muitas empresas vivem em uma situação de total descontrole e falta de qualidade, e não são nada ágeis, vivem o ... 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 6
... CAOS 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 7
CAOS Situação perturbadora, desmotivante; Utilizando processo definido ou não; Altos riscos nos projetos; Custos muito altos; Projetos sem boa qualidade interna e externa. Mas esse problema não é novo, em 2001, 17 caras lançaram o ... 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 8
... Agilemanifesto.org O que é isso? Um manifesto que criticava algumas mitos/práticas da engenharia de software e  da gerência de projetos adotadas por  abordagens tradicionalistas Foi assinado por 17 pessoas envolvidas com desenvolvimento de software, dentre eles consultores e programadores experientes 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 9 Robert C. Martin Steve Mellor Ken Schwaber Jeff Sutherland Dave Thomas James Grenning Jim Highsmith Andrew Hunt Ron Jeffries Jon Kern Brian Marick Kent Beck Mike Beedle Arie van Bennekum AlistairCockburn WardCunningham Martin Fowler
... Agilemanifesto.org Indivíduos e interação entre eles mais que processos e ferramentas Software em funcionamento mais que documentação abrangente Colaboração com o cliente mais que negociação de contratos Responder a mudanças mais que seguir um plano 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 10
Agilemanifesto.org 12 princípios por traz do Manifesto Ágil Satisfazer o cliente As mudanças são bem vindas Entrega periódica de funcionalidade Todos juntos Indivíduos Motivados Conversas face a face Medida primária é o software trabalhado Manter um ritmo constante sempre Atenção contínua, excelência técnica e bom projeto Simplicidade Equipes auto-organizáveis ou auto-gerenciáveis Reflexão de melhoria regularmente 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 11
Metodologias XP – eXtreme Programming SCRUM LEAN CRYSTAL FDD ... 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 12
XP – EXtremeProgramming Começou a engatinhar 1987 e a se estruturar em 1996 com o projeto C3 da Chrysler Criado pro Kent Beck, que utilizou pela primeira vez em conjunto as práticas que formam a estrutura do Extreme Programming nesse projeto da Chrysler “Jeito leve, eficiente, de baixo risco, flexível, previsível, científico e divertido de desenvolver software” – Kent Beck 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 13
XP – EXtremeProgramming Valores: Comunicação Simplicidade Feedback Coragem Abordagem Incremental 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 14
XP – EXtremeProgramming12 Práticas Planejamento Entregas Frequêntes Metáfora Projeto Simples Testes Programação em pares 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 15 ,[object Object]
Propriedade Coletiva
Integração Contínua
40 horas semanais de trabalho
Cliente presente
Padronização do Código,[object Object]
XP – EXtremeProgrammingJogo de Planejamento Como? Definição de histórias Valor de negócio das histórias Definição de releases Estimativa com base nas experiências anteriores Observação de riscos Medições de progresso 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 17
XP – EXtremeProgrammingEntregas Frequêntes Consiste em colocar o sistema em produção com frequência, em prazos curtos, normalmente de dois ou três meses. Objetivos: Feedbacks rápidos do cliente e para o cliente Aceitação de mudanças rápidas e sem burocracia 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 18
XP – EXtremeProgrammingMetáfora Utilizam as metáforas para inserir a estrutura conceitual do negócio Objetivos: Facilidade de entendimento e compreensão Envolvidos compreendem o que se quer, mesmo não dominando a linguagem do negócio 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 19
XP – EXtremeProgrammingProjeto Simples Projete um software do jeito que o usuário espera: Primeiro que funcione E funcione corretamente Que seja fácil de utilizar (modelo mental coerente) E que possa evoluir com o tempo 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 20
XP – EXtremeProgrammingDesenvolvimento Orientado a Testes Partindo do pressuposto que achar as causas do bug é mais difícil e demorado que corrigir Então vamos evitar o problema Evitar problema é mais inteligente que resolver TDD  (TestDrivenDevelopment) consiste em escrever um mecanismo de teste  automatizado antes de codificar cada história e cada método do sistema (BECK, 2000) 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 21
XP – EXtremeProgrammingDesenvolvimento Orientado a Testes “O XP se concentra sobretudo em dois tipos de testes: o  teste de unidade e o teste de aceitação.  O primeiro tenta assegurar que cada componente do sistema funcione corretamente.  O segundo procura testar a interação entre os componentes, as quais dão origem às funcionalidades.” [BECK, 2000 apud TELLES, 2005] 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 22
XP – EXtremeProgrammingProgramação em Par Dois programadores continuamente  colaborando no mesmo projeto, algoritmo, código e teste. Diminui erros de código, permite a refatoração instantânea, aprendizado contínuo, etc. 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 23
XP – EXtremeProgrammingRefatoração A “refatoração é o processo de fazer mudanças em um código existente e funcional sem alterar seu comportamento externo. [...]” [ASTELS, 2003 apud TELLES,2005 Objetivos: Enxugar o código (Tornar simples e claro) Melhor a eficiência do código Minimizar chances de introduzir bugs Garantias Melhoria interna contínua 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 24
XP – EXtremeProgrammingPropriedade Coletiva O desenvolvedor tem acesso a todo o código O código é de todos os desenvolvedores e qualquer um pode melhorar até aquilo que não fez As alterações podem causar erros.  Por segurança, é indicado adotar essa prática apenas quando se tem testes de regressão automatizados 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 25
XP – EXtremeProgrammingIntegração Contínua Os pares trabalham de forma isolada, mas integram o que produzem diversas vezes ao dia. Objetivos: Identificar conflitos cedo, para evitar futuras falhas de integração Consequência: Identificação quase que instantânea de conflito, já que se produz pouco código em poucas horas 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 26
XP – EXtremeProgrammingTrabalho em 40 horas semanais Hora extra é exceção Em atividade de 40 horas semanais já ocorre a diminuição do fator foco Pressões não aumentam o fator foco, pelo contrário diminuem 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 27
XP – EXtremeProgrammingCliente presente “O melhor e mais participativo cliente não será capaz de obter o software desejado se a equipe de desenvolvimento não implementar corretamente o que é pedido e a melhor equipe não será capaz de produzir o software certo se o cliente não for capaz de especificá-lo adequadamente e prover feedback ao longo do projeto.” [TELLES, 2005] Junte-os e terá: Feedbacks mais rápidos Mudanças rápidas sem burocracia 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 28
XP – EXtremeProgrammingPadronização de código É importante definir um padrão de codificação no inicio do projeto Objetivo: Familiarizar todos com o como o mesmo padrão de código (código legível a todos) Simplificar a comunicação  E tornar o código coletivo 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 29
SCRUM O nome é originado da organização de uma equipe de Rugby para o reinicio da partida. Formalizado e implantado no desenvolvimento de software em 1995 por Ken Shwaber A função primária do Scrum é ser utilizado para o gerenciamento de projetos de desenvolvimento de software 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 30
SCRUM O que é de fato? É um framework de desenvolvimento de produto, sobre um ciclo de vida interativo e incremental Objetivos: Acompanhamento contínuo Iterações curtas Retorno mais rápido SCRUM NÃO É A BALA DE PRATA! “Não garante sozinho o sucesso de um projeto” 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 31
SCRUM Quais são os papeis envolvidos? ProductOwner (PO) ScrumTeam ScrumMaster 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 32
SCRUMPapel do ProductOwner Conhece o produto e as necessidades do cliente Representa o cliente Define os requisitos do produto, bem como sua importância e urgência É responsável pelo retorno do investimento 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 33
SCRUMPapel do ScrumMaster É o líder servidor Responsável por remover os impedimentos do time Por remover interferências externas E por garantir o uso correto do Scrum Ensina Scrum aos envolvidos 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 34
SCRUMPapel do ScrumTeam Fazem parte do Scrumteam todos os desenvolvedores, arquitetos, analistas, ... que participam do projeto O time é auto-gerenciável e multifuncional ou multidisciplinar  (pessoas com diferentes aptidões) Decidem junto com o PO o que entra no Sprint E são responsáveis pelas estimativas de esforço 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 35
SCRUMCerimônias São elas: Planejamentos de Sprint Revisões de Sprint Retrospectivas de Sprint Reuniões diárias 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 36
SCRUMArtefatos ProductBacklog Lista priorizada de requisitos (Lista mutável) SprintBacklog Itens que serão feitos na Sprint (Lista não mutável) BurndownCharts O trabalho acumulado ou realizado (atualizados diariamente durante um Sprint) 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 37
SCRUMExemplo de BurndownChart 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 38
SCRUMExemplo de BurndownChart 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 39
SCRUM + XP Scrum não define técnicas de Engenharia de Software Foi construído inicialmente para o desenvolvimento de software Porém, é um framework para gerenciamento do desenvolvimento de um produto Por isso uma parceria de sucesso no desenvolvimento de software é: SCRUM + XP (Algumas práticas) 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 40

Más contenido relacionado

La actualidad más candente

Metodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareMetodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareLuciano Almeida
 
Métricas Em Fabricas De Software
Métricas Em Fabricas De SoftwareMétricas Em Fabricas De Software
Métricas Em Fabricas De SoftwareLuiz Borba
 
Introdução a Modelagem
Introdução a ModelagemIntrodução a Modelagem
Introdução a ModelagemRodrigo Branas
 
Palestra Modelagem Ágil - Manoel Pimentel
Palestra Modelagem Ágil -  Manoel PimentelPalestra Modelagem Ágil -  Manoel Pimentel
Palestra Modelagem Ágil - Manoel PimentelManoel Pimentel Medeiros
 
Comparativo entre Processos Ágeis
Comparativo entre Processos ÁgeisComparativo entre Processos Ágeis
Comparativo entre Processos ÁgeisDaniel Ferreira
 
Extreme Programming (XP) e Scrum
Extreme Programming (XP) e ScrumExtreme Programming (XP) e Scrum
Extreme Programming (XP) e ScrumRafael Souza
 
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaMetodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaFernando Palma
 
Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À Demanda...
Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À       Demanda...Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À       Demanda...
Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À Demanda...Luiz Lemos
 
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane FidelixModelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane FidelixCris Fidelix
 
Aula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREAula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREErnesto Bedrikow
 
Cinco motivos para você não adotar metodologias ágeis - Rafael Prikladnicki F...
Cinco motivos para você não adotar metodologias ágeis - Rafael Prikladnicki F...Cinco motivos para você não adotar metodologias ágeis - Rafael Prikladnicki F...
Cinco motivos para você não adotar metodologias ágeis - Rafael Prikladnicki F...Flávio Steffens
 

La actualidad más candente (20)

Métodos Ágeis
Métodos ÁgeisMétodos Ágeis
Métodos Ágeis
 
Metodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareMetodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de Software
 
Métodos ágeis
Métodos ágeisMétodos ágeis
Métodos ágeis
 
Métricas Em Fabricas De Software
Métricas Em Fabricas De SoftwareMétricas Em Fabricas De Software
Métricas Em Fabricas De Software
 
Métodos Ágeis - Aula02
Métodos Ágeis - Aula02Métodos Ágeis - Aula02
Métodos Ágeis - Aula02
 
Introdução a Modelagem
Introdução a ModelagemIntrodução a Modelagem
Introdução a Modelagem
 
Modelagem Ágil
Modelagem ÁgilModelagem Ágil
Modelagem Ágil
 
Palestra Modelagem Ágil - Manoel Pimentel
Palestra Modelagem Ágil -  Manoel PimentelPalestra Modelagem Ágil -  Manoel Pimentel
Palestra Modelagem Ágil - Manoel Pimentel
 
Comparativo entre Processos Ágeis
Comparativo entre Processos ÁgeisComparativo entre Processos Ágeis
Comparativo entre Processos Ágeis
 
Modelagem Ágil
Modelagem ÁgilModelagem Ágil
Modelagem Ágil
 
APS - RAD x Ágeis
APS - RAD x ÁgeisAPS - RAD x Ágeis
APS - RAD x Ágeis
 
Extreme Programming (XP) e Scrum
Extreme Programming (XP) e ScrumExtreme Programming (XP) e Scrum
Extreme Programming (XP) e Scrum
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaMetodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À Demanda...
Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À       Demanda...Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À       Demanda...
Scrum: Uma Nova Abordagem No Desenvolvimento De Software Face À Demanda...
 
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane FidelixModelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
 
Aula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREAula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWARE
 
Cinco motivos para você não adotar metodologias ágeis - Rafael Prikladnicki F...
Cinco motivos para você não adotar metodologias ágeis - Rafael Prikladnicki F...Cinco motivos para você não adotar metodologias ágeis - Rafael Prikladnicki F...
Cinco motivos para você não adotar metodologias ágeis - Rafael Prikladnicki F...
 
Métodos Ágeis
Métodos ÁgeisMétodos Ágeis
Métodos Ágeis
 

Similar a Metodologias Ágeis Software

Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Rennan Martini
 
Leds zeppellin infraestrutura de apoio ao desenvolvimento
Leds zeppellin   infraestrutura de apoio ao desenvolvimentoLeds zeppellin   infraestrutura de apoio ao desenvolvimento
Leds zeppellin infraestrutura de apoio ao desenvolvimentoledsifes
 
Métodos Ágeis para Desenvolvimento de Software
Métodos Ágeis para Desenvolvimento de SoftwareMétodos Ágeis para Desenvolvimento de Software
Métodos Ágeis para Desenvolvimento de Softwarealexandre_malaquias
 
O uso de metodos ageis no desenvolvimento de software
O uso de metodos ageis no desenvolvimento de softwareO uso de metodos ageis no desenvolvimento de software
O uso de metodos ageis no desenvolvimento de softwareEverton vitor
 
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)André Dias
 
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilEngenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilRebecca Betwel
 
Estudo de ferramentas em Software Livre para gestão ágil de projetos de desen...
Estudo de ferramentas em Software Livre para gestão ágil de projetos de desen...Estudo de ferramentas em Software Livre para gestão ágil de projetos de desen...
Estudo de ferramentas em Software Livre para gestão ágil de projetos de desen...Keila Freitas
 
Introdução: eXtreme Programming
Introdução: eXtreme ProgrammingIntrodução: eXtreme Programming
Introdução: eXtreme ProgrammingDenis L Presciliano
 
XP Programming
XP ProgrammingXP Programming
XP ProgrammingCJR, UnB
 
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwareAdolfo Neto
 
Introdução às metodologias ágeis
Introdução às metodologias ágeisIntrodução às metodologias ágeis
Introdução às metodologias ágeisComunidade Tá safo!
 

Similar a Metodologias Ágeis Software (20)

eXtreme Programming (XP)
eXtreme Programming (XP)eXtreme Programming (XP)
eXtreme Programming (XP)
 
Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)
 
Programacao Extrema
Programacao ExtremaProgramacao Extrema
Programacao Extrema
 
Leds zeppellin infraestrutura de apoio ao desenvolvimento
Leds zeppellin   infraestrutura de apoio ao desenvolvimentoLeds zeppellin   infraestrutura de apoio ao desenvolvimento
Leds zeppellin infraestrutura de apoio ao desenvolvimento
 
Métodos Ágeis para Desenvolvimento de Software
Métodos Ágeis para Desenvolvimento de SoftwareMétodos Ágeis para Desenvolvimento de Software
Métodos Ágeis para Desenvolvimento de Software
 
O uso de metodos ageis no desenvolvimento de software
O uso de metodos ageis no desenvolvimento de softwareO uso de metodos ageis no desenvolvimento de software
O uso de metodos ageis no desenvolvimento de software
 
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
 
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilEngenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
 
38484931 questionario-es
38484931 questionario-es38484931 questionario-es
38484931 questionario-es
 
Estudo de ferramentas em Software Livre para gestão ágil de projetos de desen...
Estudo de ferramentas em Software Livre para gestão ágil de projetos de desen...Estudo de ferramentas em Software Livre para gestão ágil de projetos de desen...
Estudo de ferramentas em Software Livre para gestão ágil de projetos de desen...
 
Agile explicacao 18
Agile explicacao 18Agile explicacao 18
Agile explicacao 18
 
Tudo são Dados - PHP Conference 2008
Tudo são Dados - PHP Conference 2008Tudo são Dados - PHP Conference 2008
Tudo são Dados - PHP Conference 2008
 
Introdução: eXtreme Programming
Introdução: eXtreme ProgrammingIntrodução: eXtreme Programming
Introdução: eXtreme Programming
 
XP Programming
XP ProgrammingXP Programming
XP Programming
 
eXtreme Programming
eXtreme ProgrammingeXtreme Programming
eXtreme Programming
 
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
 
Trabalho xp
Trabalho xpTrabalho xp
Trabalho xp
 
Apresentação TCC I - IES/SC 2013
Apresentação TCC I - IES/SC 2013Apresentação TCC I - IES/SC 2013
Apresentação TCC I - IES/SC 2013
 
Introdução às metodologias ágeis
Introdução às metodologias ágeisIntrodução às metodologias ágeis
Introdução às metodologias ágeis
 
Agile2011 140902173318-phpapp02
Agile2011 140902173318-phpapp02Agile2011 140902173318-phpapp02
Agile2011 140902173318-phpapp02
 

Metodologias Ágeis Software

  • 1. Metodologias Ágeis de Desenvolvimento de Software Por Emerson Henrique, Luciano Almeida e Márcio Lins
  • 2. Quem somos? Emerson Henrique Aluno concluinte do curso de Ciência da Computação Analista Desenvolvedor da Ativasystems Luciano Almeida Graduado em Gestão de Sistemas de Informação Possui MBA em Novas Tecnologias Cursa Especialização em Gerenciamento de Projetos Professor, Consultor, Agilista e Owner do SCRUM Paraíba Márcio Lins Analista Programador da Construtora Alliance Trabalha com AdvPL (Protheus) E cursa Sistemas para Internet 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 2
  • 3. Sumário Introdução Caos AgileManifesto.org Metodologias Ágeis XP SCRUM SCRUM + XP Conclusão 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 3
  • 4. Introdução Projetos de Construção Civil São geralmente construídos como planejados Clientes acompanham a evolução Se algo dá errado, faz-se um relatório Projetos de Software Precisam suportar mudanças nas regras de negócio Clientes só vêem algo funcionando perto do fim ou em prazos longos Se algo dá errado, se esquece ou mascara o erro 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 4
  • 5. Introdução Algumas empresas adotam metodologias de desenvolvimento e práticas extremamente formais e controladoras, porém ainda não conseguem obter qualidade. Por quê? Pouca preocupação com as pessoas e a interação entre elas Pouca comunicação com o cliente Custos muito altos Excesso de formalismo Qual a consequência disso? Alta rotatividade No fim o software não serve mais Projeto cancelado Prazos estourados 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 5
  • 6. Introdução Além disso muitas empresas vivem em uma situação de total descontrole e falta de qualidade, e não são nada ágeis, vivem o ... 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 6
  • 7. ... CAOS 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 7
  • 8. CAOS Situação perturbadora, desmotivante; Utilizando processo definido ou não; Altos riscos nos projetos; Custos muito altos; Projetos sem boa qualidade interna e externa. Mas esse problema não é novo, em 2001, 17 caras lançaram o ... 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 8
  • 9. ... Agilemanifesto.org O que é isso? Um manifesto que criticava algumas mitos/práticas da engenharia de software e da gerência de projetos adotadas por abordagens tradicionalistas Foi assinado por 17 pessoas envolvidas com desenvolvimento de software, dentre eles consultores e programadores experientes 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 9 Robert C. Martin Steve Mellor Ken Schwaber Jeff Sutherland Dave Thomas James Grenning Jim Highsmith Andrew Hunt Ron Jeffries Jon Kern Brian Marick Kent Beck Mike Beedle Arie van Bennekum AlistairCockburn WardCunningham Martin Fowler
  • 10. ... Agilemanifesto.org Indivíduos e interação entre eles mais que processos e ferramentas Software em funcionamento mais que documentação abrangente Colaboração com o cliente mais que negociação de contratos Responder a mudanças mais que seguir um plano 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 10
  • 11. Agilemanifesto.org 12 princípios por traz do Manifesto Ágil Satisfazer o cliente As mudanças são bem vindas Entrega periódica de funcionalidade Todos juntos Indivíduos Motivados Conversas face a face Medida primária é o software trabalhado Manter um ritmo constante sempre Atenção contínua, excelência técnica e bom projeto Simplicidade Equipes auto-organizáveis ou auto-gerenciáveis Reflexão de melhoria regularmente 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 11
  • 12. Metodologias XP – eXtreme Programming SCRUM LEAN CRYSTAL FDD ... 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 12
  • 13. XP – EXtremeProgramming Começou a engatinhar 1987 e a se estruturar em 1996 com o projeto C3 da Chrysler Criado pro Kent Beck, que utilizou pela primeira vez em conjunto as práticas que formam a estrutura do Extreme Programming nesse projeto da Chrysler “Jeito leve, eficiente, de baixo risco, flexível, previsível, científico e divertido de desenvolver software” – Kent Beck 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 13
  • 14. XP – EXtremeProgramming Valores: Comunicação Simplicidade Feedback Coragem Abordagem Incremental 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 14
  • 15.
  • 18. 40 horas semanais de trabalho
  • 20.
  • 21. XP – EXtremeProgrammingJogo de Planejamento Como? Definição de histórias Valor de negócio das histórias Definição de releases Estimativa com base nas experiências anteriores Observação de riscos Medições de progresso 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 17
  • 22. XP – EXtremeProgrammingEntregas Frequêntes Consiste em colocar o sistema em produção com frequência, em prazos curtos, normalmente de dois ou três meses. Objetivos: Feedbacks rápidos do cliente e para o cliente Aceitação de mudanças rápidas e sem burocracia 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 18
  • 23. XP – EXtremeProgrammingMetáfora Utilizam as metáforas para inserir a estrutura conceitual do negócio Objetivos: Facilidade de entendimento e compreensão Envolvidos compreendem o que se quer, mesmo não dominando a linguagem do negócio 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 19
  • 24. XP – EXtremeProgrammingProjeto Simples Projete um software do jeito que o usuário espera: Primeiro que funcione E funcione corretamente Que seja fácil de utilizar (modelo mental coerente) E que possa evoluir com o tempo 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 20
  • 25. XP – EXtremeProgrammingDesenvolvimento Orientado a Testes Partindo do pressuposto que achar as causas do bug é mais difícil e demorado que corrigir Então vamos evitar o problema Evitar problema é mais inteligente que resolver TDD (TestDrivenDevelopment) consiste em escrever um mecanismo de teste automatizado antes de codificar cada história e cada método do sistema (BECK, 2000) 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 21
  • 26. XP – EXtremeProgrammingDesenvolvimento Orientado a Testes “O XP se concentra sobretudo em dois tipos de testes: o teste de unidade e o teste de aceitação. O primeiro tenta assegurar que cada componente do sistema funcione corretamente. O segundo procura testar a interação entre os componentes, as quais dão origem às funcionalidades.” [BECK, 2000 apud TELLES, 2005] 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 22
  • 27. XP – EXtremeProgrammingProgramação em Par Dois programadores continuamente colaborando no mesmo projeto, algoritmo, código e teste. Diminui erros de código, permite a refatoração instantânea, aprendizado contínuo, etc. 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 23
  • 28. XP – EXtremeProgrammingRefatoração A “refatoração é o processo de fazer mudanças em um código existente e funcional sem alterar seu comportamento externo. [...]” [ASTELS, 2003 apud TELLES,2005 Objetivos: Enxugar o código (Tornar simples e claro) Melhor a eficiência do código Minimizar chances de introduzir bugs Garantias Melhoria interna contínua 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 24
  • 29. XP – EXtremeProgrammingPropriedade Coletiva O desenvolvedor tem acesso a todo o código O código é de todos os desenvolvedores e qualquer um pode melhorar até aquilo que não fez As alterações podem causar erros. Por segurança, é indicado adotar essa prática apenas quando se tem testes de regressão automatizados 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 25
  • 30. XP – EXtremeProgrammingIntegração Contínua Os pares trabalham de forma isolada, mas integram o que produzem diversas vezes ao dia. Objetivos: Identificar conflitos cedo, para evitar futuras falhas de integração Consequência: Identificação quase que instantânea de conflito, já que se produz pouco código em poucas horas 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 26
  • 31. XP – EXtremeProgrammingTrabalho em 40 horas semanais Hora extra é exceção Em atividade de 40 horas semanais já ocorre a diminuição do fator foco Pressões não aumentam o fator foco, pelo contrário diminuem 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 27
  • 32. XP – EXtremeProgrammingCliente presente “O melhor e mais participativo cliente não será capaz de obter o software desejado se a equipe de desenvolvimento não implementar corretamente o que é pedido e a melhor equipe não será capaz de produzir o software certo se o cliente não for capaz de especificá-lo adequadamente e prover feedback ao longo do projeto.” [TELLES, 2005] Junte-os e terá: Feedbacks mais rápidos Mudanças rápidas sem burocracia 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 28
  • 33. XP – EXtremeProgrammingPadronização de código É importante definir um padrão de codificação no inicio do projeto Objetivo: Familiarizar todos com o como o mesmo padrão de código (código legível a todos) Simplificar a comunicação E tornar o código coletivo 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 29
  • 34. SCRUM O nome é originado da organização de uma equipe de Rugby para o reinicio da partida. Formalizado e implantado no desenvolvimento de software em 1995 por Ken Shwaber A função primária do Scrum é ser utilizado para o gerenciamento de projetos de desenvolvimento de software 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 30
  • 35. SCRUM O que é de fato? É um framework de desenvolvimento de produto, sobre um ciclo de vida interativo e incremental Objetivos: Acompanhamento contínuo Iterações curtas Retorno mais rápido SCRUM NÃO É A BALA DE PRATA! “Não garante sozinho o sucesso de um projeto” 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 31
  • 36. SCRUM Quais são os papeis envolvidos? ProductOwner (PO) ScrumTeam ScrumMaster 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 32
  • 37. SCRUMPapel do ProductOwner Conhece o produto e as necessidades do cliente Representa o cliente Define os requisitos do produto, bem como sua importância e urgência É responsável pelo retorno do investimento 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 33
  • 38. SCRUMPapel do ScrumMaster É o líder servidor Responsável por remover os impedimentos do time Por remover interferências externas E por garantir o uso correto do Scrum Ensina Scrum aos envolvidos 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 34
  • 39. SCRUMPapel do ScrumTeam Fazem parte do Scrumteam todos os desenvolvedores, arquitetos, analistas, ... que participam do projeto O time é auto-gerenciável e multifuncional ou multidisciplinar (pessoas com diferentes aptidões) Decidem junto com o PO o que entra no Sprint E são responsáveis pelas estimativas de esforço 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 35
  • 40. SCRUMCerimônias São elas: Planejamentos de Sprint Revisões de Sprint Retrospectivas de Sprint Reuniões diárias 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 36
  • 41. SCRUMArtefatos ProductBacklog Lista priorizada de requisitos (Lista mutável) SprintBacklog Itens que serão feitos na Sprint (Lista não mutável) BurndownCharts O trabalho acumulado ou realizado (atualizados diariamente durante um Sprint) 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 37
  • 42. SCRUMExemplo de BurndownChart 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 38
  • 43. SCRUMExemplo de BurndownChart 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 39
  • 44. SCRUM + XP Scrum não define técnicas de Engenharia de Software Foi construído inicialmente para o desenvolvimento de software Porém, é um framework para gerenciamento do desenvolvimento de um produto Por isso uma parceria de sucesso no desenvolvimento de software é: SCRUM + XP (Algumas práticas) 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 40
  • 45. Conclusão SCRUM é uma excelente alternativa para empresas que estão no CAOS É interessante para equipes pequenas, onde a comunicação possa funcionar de forma tranquila XP define boas práticas que contribuem para uma boa comunicação e para a prevenção de problemas Ambas se preocupam e melhoria contínua da qualidade, através de avaliação contínua do trabalho e do processo 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 41
  • 46. Dúvidas? 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 42
  • 47. REFERÊNCIAS BECK, Kent. Extreme Programming explained: embrace change. 1. ed. Reading, MA: Addison-Wesley, 2000. 190 p. TELLES, ViníciusMagalhães. UM ESTUDO DE CASO DA ADOÇÃO DAS PRÁTICA E VALORES DO EXTREME PROGRAMMING. 2005. KINIBERG, Herink. Scrum e XP direto das Trincheiras. 2008. Disponível em: <http://www.infoq.com/br/minibooks/scrum-xp-from-the-trenches> <http://improveit.com.br/scrum> Acesso em: 21/10/2009 <http://www.adaptworks.com.br/scrum/> Acesso em: 21/10/2009 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 43
  • 48. Contatos Emerson Henrique emerson.hss@gmail.com http://emersonhss.wordpress.com http://twitter.com/emersonhss Luciano Almeida lucianohgalmeida@gmail.com http://twitter.com/lucianohenrique Márcio Lins slackware.20@gmail.com http://twitter.com/marciolins SCRUM PARAÍBA http://scrumpb.org/ 10/12/2009 Metodologias Ágeis de Desenvolvimento de Software 44