Gestão Ágil de Projetos
     com SCRUM
          Aula 1
Muito prazer!
• Saulo Arruda (@sauloarruda)
 •   Entusiasta/Praticante/Evangelista de métodos
     ágeis há 6 anos

 •   Instrutor do SENAC há 5 anos e
     desenvolvedor há 12 anos

 •   Co-fundador da Jera

 •   Casado, pai de 2 filhas / Músico e cozinheiro
     amador
Fale sobre você!

• Diga-nos seu nome?
• Sua experiência com desenvolvimento de
  software?
• Onde trabalha/estuda?
• Quer falar mais alguma coisa?
O que teremos?

• Aula 1
 • Introdução ao Desenvolvimento Ágil de
    Software
 • Metodologias Ágeis
 • Práticas Ágeis
O que teremos?

• Aula 2
 • Introdução à engenharia de requisitos
 • Introdução à histórias do usuário
 • Métrica por pontos e estimativas
O que teremos?

• Aula 3
 • Papéis do SCRUM
 • Artefatos do SCRUM
 • Cerimônias do SCRUM
O que teremos?


• Aula 4
 • Executar projeto SCRUM
Mas antes...
O que é Ágil?
O que NÃO É Ágil
Metodologia de
    Desenvolvimento

• 1968 - Engenharia de Software
• 1987 - CMM (Capability and Maturity
  Model)
• 2001 - Agile Manifesto
Manifesto Ágil?

• De 11 a 13 de Fevereiro de 2001, em uma
  estação de Esqui em Utah, 17 pessoas se
  encontraram para conversar, esquiar,
  relaxar, e tentar encontrar um senso
  comum - e claro, COMER!
• Do resultado desse encontro surgiu...
Manifesto para o
desenvolvimento ágil de software
  Estamos descobrindo maneiras melhores de desenvolver
  software fazendo-o nós mesmos e ajudando outros a fazê-
  lo. Através deste trabalho, passamos a valorizar:


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


  Ou seja, mesmo havendo valor nos itens à direita,
  valorizamos mais os itens à esquerda.
Os Autores
•   Kent Beck
                       •   Arie van Bennekum
•   Ward Cunningham
                       •   James Grenning
•   Andrew Hunt
                       •   Jon Kern
•   Robert C. Martin
                       •   Ken Schwaber
•   Dave Thomas
                       •   Alistair Cockburn
•   Mike Beedle
                       •   Jim Highsmith
•   Margin Fowler
                       •   Brian Marick
•   Ron Jeffries
                       •   Jeff Sutherland
•   Steve Mellor
Os Autores
•   Kent Beck
                       • Arie van Bennekum
•   Ward Cunningham
                       • James Grenning
•   Andrew Hunt
                       • Jon Kern
•   Robert C. Martin
                       • Ken Schwaber
•   Dave Thomas
                       • Alistair Cockburn
•   Mike Beedle
                       • Jim Highsmith
•   Margin Fowler
                       • Brian Marick
•   Ron Jeffries
                       • Jeff Sutherland
•   Steve Mellor
Princípios
Por trás do Manifesto Ágil, foi criada uma lista de 12
           princípios que são seguidos...
1º Princípio
   Nossa maior
    prioridade é
satisfazer o cliente,
através da entrega
    adiantada e
    contínua de
 software de valor.
2º Princípio
 Aceitar mudanças
    de requisitos,
 mesmo no fim do
 desenvolvimento.
 Processos ágeis se
     adequam a
mudanças, para que
o cliente possa tirar
      vantagens
    competitivas.
3º Princípio
  Entregar software
  funcionando com
freqüencia, na escala
   de semanas até
     meses, com
   preferência aos
    períodos mais
       curtos.
4º Princípio
      Pessoas
   relacionadas à
     negócios e
 desenvolvedores
devem trabalhar em
     conjunto e
    diariamente,
  durante todo o
 curso do projeto.
5º Princípio
Construir projetos
    ao redor de
     indivíduos
motivados. Dando a
 eles o ambiente e
suporte necessário,
e confiar que farão
    seu trabalho.
6º Princípio
  O Método mais
eficiente e eficaz de
      transmitir
informações para, e
 por dentro de um
       time de
desenvolvimento, é
   através de uma
  conversa cara a
         cara.
7º Princípio
Software funcional é
 a medida primária
   de progresso.
8º Princípio
  Processos ágeis
  promovem um
     ambiente
  sustentável. Os
  patrocinadores,
desenvolvedores e
usuários, devem ser
capazes de manter
 indefinidamente,
passos constantes.
9º Princípio
Contínua atenção à
excelência técnica e
   bom design,
aumenta a agilidade.
10º Princípio
Simplicidade: a arte
  de maximizar a
   quantidade de
 trabalho que não
precisou ser feito.
11º Princípio
   As melhores
    arquiteturas,
requisitos e designs
emergem de times
 auto-organizáveis.
12º Princípio
   Em intervalos
 regulares, o time
 reflete em como
 ficar mais efetivo,
então, se ajustam e
   otimizam seu
comportamento de
      acordo.
Métodos Ágeis

• Ciclo de Vida Iterativo
• Planejamento Adaptivo
• Iterações Curtas com Duração Fixa
• Alguns exemplos: eXtreme Programming,
  SCRUM, ICONIX, Agile UP, Open UP
Unified Process
Unified Process
• Unified Process (UP) ou Processo Unificado
  não é simplesmente um processo, mas um
  framework que pode ser customizado
  para projetos e empresas específicas.
• Exemplos de Processos baseados no UP:
  Agile UP, Basic UP, Enterprise UP, Essential UP,
  Open UP, Rational UP (RUP), Oracle Unified
  Method (OUM).

                                                     [2][3]
Características do
    Unified Process
• Iterativo e Incremental
• Dirigido por Casos de Uso
• Centrado na Arquitetura
• Focado nos Riscos

                              [2][3]
Ciclo de Vida do UP

• Um projeto UP é dividido em 4 fases
 • Iniciação (ou Concepção)
 • Elaboração
 • Construção
 • Transição
                                        [2][3]
Processo Unificado
Iniciação

• Definir o escopo e fronteiras
• Identificação dos Casos de Uso
• Identificação da Arquitetura candidata
• Estimativa de riscos, custos e prazos

                                          [2][3]
Elaboração

• Refinar Casos de Uso
• Definir e validar da Arquitetura
• Elaborar cronograma e custos para a
  Construção
• Identificar e mitigar Riscos

                                        [2][3]
Construção
• Implementação do código-fonte do
  software
• Lançar builds contendo um conjunto de
  funcionalidades
• Executar testes unitários, funcionais, de
  aceitação
• Atualização do cronograma e lista de riscos
                                                [2][3]
Transição

• Lançamento da versão final do software
• Instalação em ambiente de produção
• Testes de carga e stress
• Treinamento dos usuários

                                          [2][3]
Discilplinas do UP


• Uma disciplina mostra todas as atividades
  que você deve realizar para produzir um
  determinado conjunto de artefatos
Modelagem de
        Negócios

• Entendimento da estrutura e problemas
  atuais do cliente;
Requisitos

• Entender e descrever o escopo do
  problema que o software deve resolver;
Análise e Projeto

• Transformar requisitos em um projeto
  (design);
Codificação

• Implementar e testar classes em termos de
  componentes e integrar os resultados;
Teste


• Localizar e documentar defeitos;
Implantação


• Configurar e distribuir software;
Disciplinas gerenciais

• Gestão de Configuração e
  Mudanças: identificação e restrição de
  mudanças em itens de configuração;
• Gestão de Projeto: planejar, executar e
  monitorar o projeto;
Práticas do UP
•   Processo iterativo (iterações curtas com
    duração fixa), evolutivo e adaptativo;
•   Enfrentar problemas de alto risco e valor antes;
•   Envolver continuamente os usuários (avaliação e
    feedback);
•   Construir uma aquitetura central nas iterações
    iniciais;
•   Verificar continuamente a qualidade;
Ciclo de vida
SCRUM
Scrum?

• SCRUM não é um processo;
• SCRUM não é uma metodologia;
• SCRUM é um framework;
• SCRUM confia em um time auto-
  organizado e multi-disciplinar.
Três Papéis

• Product owner: responsável pela área
  de negócio do projeto
• ScrumMaster: garante que o time está
  funcional e produtivo
• Time: time auto-organizável que realiza o
  trabalho
Quatro cerimônias
• Planejamento do Sprint: o time se
  encontra com o product owner e
  determina o escopo da entrega
• Daily scrum: o time se encontra
  diariamente para atualizar-se
• Sprint reviews: o time demonstra para
  o product owner o que foi feito
• Sprint retrospective: o time busca
  formas de melhorar o produto e processo
Três artefatos

• Product Backlog: lista de
  funcionalidades ou tarefas
• Sprint Backlog: lista de itens que serão
  entregues na sprint quebrados em tarefas
• Burndown chart: gráfico de trabalho
  restante
eXtreme Programming
eXtreme Programming
• Valores
 • Comunicação: diálogos presenciais
 • Coragem: mudanças são bem vindas
 • Feedback: descobrir problemas cedo
 • Respeito: ouvir e compreender
 • Simplicidade: fazer o que é necessário
eXtreme Programming
• Princípios
  • Auto-semelhança   •   Melhoria
  • Benefício Mútuo   •   Oportunidade
  • Diversidade       •   Passos de Bebê
  • Economia          •   Qualidade
  • Falha             •   Redundância
  • Fluidez           •   Reflexão
  • Humanismo         •   Responsabilidade Aceita
eXtreme Programming
• Papéis
 • Analistas de Teste      • Programadores
 • Arquitetos              • Recursos Humanos
 • Designers de            • Redatores Técnicos
     Interação
                           • Usuários
 •   Executivos
 •   Gerentes de Projeto
 •   Gerentes de Produto
eXtreme Programming
• Práticas Primárias
  • Ambiente Informativo   •   Folga
  • Build de Dez Minutos   •   Histórias
  • Ciclo Semanal          •   Integração Contínua
  • Ciclo Trimestral       •   Programação em Par
  • Desenvolvimento        •   Sentar-se Junto
      Orientado a Testes
                           •   Trabalho Energizado
  •   Design Incremental
  •   Equipe Integral
eXtreme Programming
• Práticas Corolárias
  • Análise da Raiz do Problema   •   Envolvimento do
  • Base de Código Unificada           Cliente Real

  • Código Coletivo               •   Equipes que Encolhem

  • Código e Testes               •   Implantação Diária

  • Continuidade da Equipe        •   Implantação
                                      Incremental
  • Contrato de Escopo            •   Pagar por Uso
    Negociável
Práticas Ágeis
                               Organização
   Deploy
Automatizado
                                    Time                                 Releases
                                                                         Curtos
               Programação                            Retrospectivas
                 em Pares       Individual
                                                          Daily
    Teste                                                              Propriedade
                 Métricas          Refatoração          Stand-ups
Automatizado                                                             Coletiva
               de Velocidade
                                                        Iterações
                                 Design Simples
 Padrão de       Histórias                                                Equipe
                do Usuário                               Ritmo
  Código                         Desenvovimento        Sustentável     co-localizada
                                Dirigido por Testes
                Histórias                               Kick-off
                na Parede                              da Iteração
 Integração                                                               Cliente
  Contínua                                                             co-localizado
Quais você usa?
                               Organização
   Deploy
Automatizado
                                    Time                                 Releases
                                                                         Curtos
               Programação                            Retrospectivas
                 em Pares       Individual
                                                          Daily
    Teste                                                              Propriedade
                 Métricas          Refatoração          Stand-ups
Automatizado                                                             Coletiva
               de Velocidade
                                                        Iterações
                                 Design Simples
 Padrão de       Histórias                                                Equipe
                do Usuário                               Ritmo
  Código                         Desenvovimento        Sustentável     co-localizada
                                Dirigido por Testes
                Histórias                               Kick-off
                na Parede                              da Iteração
 Integração                                                               Cliente
  Contínua                                                             co-localizado
A seguir...


• Histórias do Usuário
• Métricas por Pontos (velocidade)

SCRUM - Aula1

  • 1.
    Gestão Ágil deProjetos com SCRUM Aula 1
  • 2.
    Muito prazer! • SauloArruda (@sauloarruda) • Entusiasta/Praticante/Evangelista de métodos ágeis há 6 anos • Instrutor do SENAC há 5 anos e desenvolvedor há 12 anos • Co-fundador da Jera • Casado, pai de 2 filhas / Músico e cozinheiro amador
  • 3.
    Fale sobre você! •Diga-nos seu nome? • Sua experiência com desenvolvimento de software? • Onde trabalha/estuda? • Quer falar mais alguma coisa?
  • 4.
    O que teremos? •Aula 1 • Introdução ao Desenvolvimento Ágil de Software • Metodologias Ágeis • Práticas Ágeis
  • 5.
    O que teremos? •Aula 2 • Introdução à engenharia de requisitos • Introdução à histórias do usuário • Métrica por pontos e estimativas
  • 6.
    O que teremos? •Aula 3 • Papéis do SCRUM • Artefatos do SCRUM • Cerimônias do SCRUM
  • 7.
    O que teremos? •Aula 4 • Executar projeto SCRUM
  • 8.
  • 12.
    O que NÃOÉ Ágil
  • 16.
    Metodologia de Desenvolvimento • 1968 - Engenharia de Software • 1987 - CMM (Capability and Maturity Model) • 2001 - Agile Manifesto
  • 17.
    Manifesto Ágil? • De11 a 13 de Fevereiro de 2001, em uma estação de Esqui em Utah, 17 pessoas se encontraram para conversar, esquiar, relaxar, e tentar encontrar um senso comum - e claro, COMER! • Do resultado desse encontro surgiu...
  • 18.
    Manifesto para o desenvolvimentoágil de software Estamos descobrindo maneiras melhores de desenvolver software fazendo-o nós mesmos e ajudando outros a fazê- lo. Através deste trabalho, passamos a valorizar: 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 Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda.
  • 19.
    Os Autores • Kent Beck • Arie van Bennekum • Ward Cunningham • James Grenning • Andrew Hunt • Jon Kern • Robert C. Martin • Ken Schwaber • Dave Thomas • Alistair Cockburn • Mike Beedle • Jim Highsmith • Margin Fowler • Brian Marick • Ron Jeffries • Jeff Sutherland • Steve Mellor
  • 20.
    Os Autores • Kent Beck • Arie van Bennekum • Ward Cunningham • James Grenning • Andrew Hunt • Jon Kern • Robert C. Martin • Ken Schwaber • Dave Thomas • Alistair Cockburn • Mike Beedle • Jim Highsmith • Margin Fowler • Brian Marick • Ron Jeffries • Jeff Sutherland • Steve Mellor
  • 21.
    Princípios Por trás doManifesto Ágil, foi criada uma lista de 12 princípios que são seguidos...
  • 22.
    1º Princípio Nossa maior prioridade é satisfazer o cliente, através da entrega adiantada e contínua de software de valor.
  • 23.
    2º Princípio Aceitarmudanças de requisitos, mesmo no fim do desenvolvimento. Processos ágeis se adequam a mudanças, para que o cliente possa tirar vantagens competitivas.
  • 24.
    3º Princípio Entregar software funcionando com freqüencia, na escala de semanas até meses, com preferência aos períodos mais curtos.
  • 25.
    4º Princípio Pessoas relacionadas à negócios e desenvolvedores devem trabalhar em conjunto e diariamente, durante todo o curso do projeto.
  • 26.
    5º Princípio Construir projetos ao redor de indivíduos motivados. Dando a eles o ambiente e suporte necessário, e confiar que farão seu trabalho.
  • 27.
    6º Princípio O Método mais eficiente e eficaz de transmitir informações para, e por dentro de um time de desenvolvimento, é através de uma conversa cara a cara.
  • 28.
    7º Princípio Software funcionalé a medida primária de progresso.
  • 29.
    8º Princípio Processos ágeis promovem um ambiente sustentável. Os patrocinadores, desenvolvedores e usuários, devem ser capazes de manter indefinidamente, passos constantes.
  • 30.
    9º Princípio Contínua atençãoà excelência técnica e bom design, aumenta a agilidade.
  • 31.
    10º Princípio Simplicidade: aarte de maximizar a quantidade de trabalho que não precisou ser feito.
  • 32.
    11º Princípio As melhores arquiteturas, requisitos e designs emergem de times auto-organizáveis.
  • 33.
    12º Princípio Em intervalos regulares, o time reflete em como ficar mais efetivo, então, se ajustam e otimizam seu comportamento de acordo.
  • 34.
    Métodos Ágeis • Ciclode Vida Iterativo • Planejamento Adaptivo • Iterações Curtas com Duração Fixa • Alguns exemplos: eXtreme Programming, SCRUM, ICONIX, Agile UP, Open UP
  • 36.
  • 37.
    Unified Process • UnifiedProcess (UP) ou Processo Unificado não é simplesmente um processo, mas um framework que pode ser customizado para projetos e empresas específicas. • Exemplos de Processos baseados no UP: Agile UP, Basic UP, Enterprise UP, Essential UP, Open UP, Rational UP (RUP), Oracle Unified Method (OUM). [2][3]
  • 38.
    Características do Unified Process • Iterativo e Incremental • Dirigido por Casos de Uso • Centrado na Arquitetura • Focado nos Riscos [2][3]
  • 39.
    Ciclo de Vidado UP • Um projeto UP é dividido em 4 fases • Iniciação (ou Concepção) • Elaboração • Construção • Transição [2][3]
  • 40.
  • 42.
    Iniciação • Definir oescopo e fronteiras • Identificação dos Casos de Uso • Identificação da Arquitetura candidata • Estimativa de riscos, custos e prazos [2][3]
  • 43.
    Elaboração • Refinar Casosde Uso • Definir e validar da Arquitetura • Elaborar cronograma e custos para a Construção • Identificar e mitigar Riscos [2][3]
  • 44.
    Construção • Implementação docódigo-fonte do software • Lançar builds contendo um conjunto de funcionalidades • Executar testes unitários, funcionais, de aceitação • Atualização do cronograma e lista de riscos [2][3]
  • 45.
    Transição • Lançamento daversão final do software • Instalação em ambiente de produção • Testes de carga e stress • Treinamento dos usuários [2][3]
  • 46.
    Discilplinas do UP •Uma disciplina mostra todas as atividades que você deve realizar para produzir um determinado conjunto de artefatos
  • 47.
    Modelagem de Negócios • Entendimento da estrutura e problemas atuais do cliente;
  • 48.
    Requisitos • Entender edescrever o escopo do problema que o software deve resolver;
  • 49.
    Análise e Projeto •Transformar requisitos em um projeto (design);
  • 50.
    Codificação • Implementar etestar classes em termos de componentes e integrar os resultados;
  • 51.
    Teste • Localizar edocumentar defeitos;
  • 52.
    Implantação • Configurar edistribuir software;
  • 53.
    Disciplinas gerenciais • Gestãode Configuração e Mudanças: identificação e restrição de mudanças em itens de configuração; • Gestão de Projeto: planejar, executar e monitorar o projeto;
  • 54.
    Práticas do UP • Processo iterativo (iterações curtas com duração fixa), evolutivo e adaptativo; • Enfrentar problemas de alto risco e valor antes; • Envolver continuamente os usuários (avaliação e feedback); • Construir uma aquitetura central nas iterações iniciais; • Verificar continuamente a qualidade;
  • 55.
  • 56.
  • 57.
    Scrum? • SCRUM nãoé um processo; • SCRUM não é uma metodologia; • SCRUM é um framework; • SCRUM confia em um time auto- organizado e multi-disciplinar.
  • 58.
    Três Papéis • Productowner: responsável pela área de negócio do projeto • ScrumMaster: garante que o time está funcional e produtivo • Time: time auto-organizável que realiza o trabalho
  • 59.
    Quatro cerimônias • Planejamentodo Sprint: o time se encontra com o product owner e determina o escopo da entrega • Daily scrum: o time se encontra diariamente para atualizar-se • Sprint reviews: o time demonstra para o product owner o que foi feito • Sprint retrospective: o time busca formas de melhorar o produto e processo
  • 60.
    Três artefatos • ProductBacklog: lista de funcionalidades ou tarefas • Sprint Backlog: lista de itens que serão entregues na sprint quebrados em tarefas • Burndown chart: gráfico de trabalho restante
  • 62.
  • 63.
    eXtreme Programming • Valores • Comunicação: diálogos presenciais • Coragem: mudanças são bem vindas • Feedback: descobrir problemas cedo • Respeito: ouvir e compreender • Simplicidade: fazer o que é necessário
  • 64.
    eXtreme Programming • Princípios • Auto-semelhança • Melhoria • Benefício Mútuo • Oportunidade • Diversidade • Passos de Bebê • Economia • Qualidade • Falha • Redundância • Fluidez • Reflexão • Humanismo • Responsabilidade Aceita
  • 65.
    eXtreme Programming • Papéis • Analistas de Teste • Programadores • Arquitetos • Recursos Humanos • Designers de • Redatores Técnicos Interação • Usuários • Executivos • Gerentes de Projeto • Gerentes de Produto
  • 66.
    eXtreme Programming • PráticasPrimárias • Ambiente Informativo • Folga • Build de Dez Minutos • Histórias • Ciclo Semanal • Integração Contínua • Ciclo Trimestral • Programação em Par • Desenvolvimento • Sentar-se Junto Orientado a Testes • Trabalho Energizado • Design Incremental • Equipe Integral
  • 67.
    eXtreme Programming • PráticasCorolárias • Análise da Raiz do Problema • Envolvimento do • Base de Código Unificada Cliente Real • Código Coletivo • Equipes que Encolhem • Código e Testes • Implantação Diária • Continuidade da Equipe • Implantação Incremental • Contrato de Escopo • Pagar por Uso Negociável
  • 68.
    Práticas Ágeis Organização Deploy Automatizado Time Releases Curtos Programação Retrospectivas em Pares Individual Daily Teste Propriedade Métricas Refatoração Stand-ups Automatizado Coletiva de Velocidade Iterações Design Simples Padrão de Histórias Equipe do Usuário Ritmo Código Desenvovimento Sustentável co-localizada Dirigido por Testes Histórias Kick-off na Parede da Iteração Integração Cliente Contínua co-localizado
  • 69.
    Quais você usa? Organização Deploy Automatizado Time Releases Curtos Programação Retrospectivas em Pares Individual Daily Teste Propriedade Métricas Refatoração Stand-ups Automatizado Coletiva de Velocidade Iterações Design Simples Padrão de Histórias Equipe do Usuário Ritmo Código Desenvovimento Sustentável co-localizada Dirigido por Testes Histórias Kick-off na Parede da Iteração Integração Cliente Contínua co-localizado
  • 70.
    A seguir... • Históriasdo Usuário • Métricas por Pontos (velocidade)