Desenvolvimento Ágil de
      Software
   Diógenes Walison de Araujo
       @diogeneswaraujo
            #AgiDC
Desenvolvimento de
  software é um
 knowledge work
Planejamento
  Negociação
  Priorização
    Análise
Programação
     Teste
 Implantação
   Suporte
Manutenção
   Pesquisa
   Evolução
    Criação
Desenvolvimento de software é
   processo inventivo e com
    alto índice de mudança



 Incerteza é inevitável em
    projetos de software
Modelo Cascata (Waterfall)
               Pontos Fortes

               Documentação produzida em cada fase
               do ciclo

               Limitações

               Exige a definição em detalhes dos
               requisitos nos estágios inicias do
               processo, dificultando a resposta a
               mudança

               Dificuldade de apresentar o estado
               atual do projeto para cliente, versão do
               sistema somente nos estágios finais do
               processo

               Ciclo bloqueante
Modelo evolucionário e iterativo




Pontos Fortes                         Limitações

Adaptativo                            Não suporta contratos baseado em
Entregas rápidas para o cliente       especificação
Engajamento dos usuários do sistema   Mudança contínua no software
no processo de desenvolvimento
Feedback contínuo
Metodologias tradicionais

EVO – Evolutionary Project Management
UP – Unified Process
RUP – Rational Unified Process
Estrutura das metodologias


              Ciclo de Vida
              Atividades
              Artefatos
              Pápeis
              Boas práticas
Porque novas
abordagens ?
Burocrática e prescritiva


  Abordagem preditiva
Documentação abrangente
  Orientado a processo
 Orientado a ferramenta
Eliminar desperdício
Utilizar maior parte do
     tempo para o
 desenvolvimento e
  teste do software
Responder
rapidamente
 a mudança
Novos Métodos
DSDM - Dynamic Solutions Delivery Model
XP – Extreme Programming
Adaptive Software Development
Scrum
Crystal
FDD - Feature Driven Development
Lean Development
Kanban
Movimento Ágil de Desenvolvimento
          de Software
- Fevereiro 2001, Utah – USA

- Representantes de XP, Scrum, DSDM, ASD, Crystal,
FDD, Pragmatic Programming

- Alternativas para processos dirigidos ao
documentação extensiva e processos rigorosos

- Manifesto Ágil e Princípios Ágil
Manifesto para Desenvolvimento Ágil de
                   Software

   Indivíduos e interações 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
12 Princípios do Manifesto Ágil
 #1 Satisfazer o cliente através da entrega    #7 Software funcionando é a medida primária
contínua e adiantada de software com valor                     de progresso
                  agregado

#2 Mudanças nos requisitos são bem-vindas,        #8 Os patrocinadores, desenvolvedores e
 mesmo tardiamente no desenvolvimento            usuários devem ser capazes de manter um
                                                              ritmo constante
   #3 Entregar frequentemente software           #9 Contínua atenção à excelência técnica e
                funcionando                                     bom design

 #4 Pessoas de negócio e desenvolvedores
 devem trabalhar em conjunto por todo o                 #10 Simplicidade é essencial
                 projeto

#5 Construa projetos em torno de indivíduos      #11 As melhores arquiteturas, requisitos e
                motivados                      designs emergem de equipes auto-organizáveis

                                                #12 Em intervalos regulares, a equipe reflete
   #6 O método mais eficiente e eficaz de        sobre como se tornar mais eficaz e então
transmitir informações é através de conversa   refina e ajusta seu comportamento de acordo
                 face a face
Práticas Ágeis




By Samuel Crescêncio
Métodos ágeis são
  adaptivos ao
invés de preditivo
Métodos ágeis são orientados a
pessoas ao invés de orientado a
           processo
Agilidade é a habilidade
 de criar e responder a
       mudança,
afim de produzir ganhos
  em um ambiente de
        negócio
Para se tornar Ágil
    é preciso :

  Transparência
  Comunicação
     Gestão
  Alinhamento
   Aprendizado
Perguntas
Ser ágil depende de
Obrigado !
Referências
Agile and Iterative Development: A Manager’s Guide, Craig Larman

Agile Software Development Ecosystems, Jim Highsmith

Software Engineering , 8ed, Ian Sommerville

Software Engineering – A Practitioners Approach, 6ed, Roger Presman

http://agilemanifesto.org/

http://martinfowler.com/articles/newMethodology.html

http://prezi.com/w6pjte9n4bsq/the-lean-pyramid/

http://www.softwareresults.us/2010/02/software-development-knowledge-
    work.html

Desenvolvimento ágil de software

  • 1.
    Desenvolvimento Ágil de Software Diógenes Walison de Araujo @diogeneswaraujo #AgiDC
  • 2.
    Desenvolvimento de software é um knowledge work
  • 3.
    Planejamento Negociação Priorização Análise Programação Teste Implantação Suporte Manutenção Pesquisa Evolução Criação
  • 4.
    Desenvolvimento de softwareé processo inventivo e com alto índice de mudança Incerteza é inevitável em projetos de software
  • 5.
    Modelo Cascata (Waterfall) Pontos Fortes Documentação produzida em cada fase do ciclo Limitações Exige a definição em detalhes dos requisitos nos estágios inicias do processo, dificultando a resposta a mudança Dificuldade de apresentar o estado atual do projeto para cliente, versão do sistema somente nos estágios finais do processo Ciclo bloqueante
  • 6.
    Modelo evolucionário eiterativo Pontos Fortes Limitações Adaptativo Não suporta contratos baseado em Entregas rápidas para o cliente especificação Engajamento dos usuários do sistema Mudança contínua no software no processo de desenvolvimento Feedback contínuo
  • 7.
    Metodologias tradicionais EVO –Evolutionary Project Management UP – Unified Process RUP – Rational Unified Process
  • 8.
    Estrutura das metodologias Ciclo de Vida Atividades Artefatos Pápeis Boas práticas
  • 9.
  • 10.
    Burocrática e prescritiva Abordagem preditiva Documentação abrangente Orientado a processo Orientado a ferramenta
  • 11.
  • 12.
    Utilizar maior partedo tempo para o desenvolvimento e teste do software
  • 13.
  • 14.
    Novos Métodos DSDM -Dynamic Solutions Delivery Model XP – Extreme Programming Adaptive Software Development Scrum Crystal FDD - Feature Driven Development Lean Development Kanban
  • 15.
    Movimento Ágil deDesenvolvimento de Software - Fevereiro 2001, Utah – USA - Representantes de XP, Scrum, DSDM, ASD, Crystal, FDD, Pragmatic Programming - Alternativas para processos dirigidos ao documentação extensiva e processos rigorosos - Manifesto Ágil e Princípios Ágil
  • 16.
    Manifesto para DesenvolvimentoÁgil de Software Indivíduos e interações 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
  • 17.
    12 Princípios doManifesto Ágil #1 Satisfazer o cliente através da entrega #7 Software funcionando é a medida primária contínua e adiantada de software com valor de progresso agregado #2 Mudanças nos requisitos são bem-vindas, #8 Os patrocinadores, desenvolvedores e mesmo tardiamente no desenvolvimento usuários devem ser capazes de manter um ritmo constante #3 Entregar frequentemente software #9 Contínua atenção à excelência técnica e funcionando bom design #4 Pessoas de negócio e desenvolvedores devem trabalhar em conjunto por todo o #10 Simplicidade é essencial projeto #5 Construa projetos em torno de indivíduos #11 As melhores arquiteturas, requisitos e motivados designs emergem de equipes auto-organizáveis #12 Em intervalos regulares, a equipe reflete #6 O método mais eficiente e eficaz de sobre como se tornar mais eficaz e então transmitir informações é através de conversa refina e ajusta seu comportamento de acordo face a face
  • 18.
  • 19.
    Métodos ágeis são adaptivos ao invés de preditivo
  • 20.
    Métodos ágeis sãoorientados a pessoas ao invés de orientado a processo
  • 21.
    Agilidade é ahabilidade de criar e responder a mudança, afim de produzir ganhos em um ambiente de negócio
  • 22.
    Para se tornarÁgil é preciso : Transparência Comunicação Gestão Alinhamento Aprendizado
  • 23.
  • 24.
  • 25.
  • 26.
    Referências Agile and IterativeDevelopment: A Manager’s Guide, Craig Larman Agile Software Development Ecosystems, Jim Highsmith Software Engineering , 8ed, Ian Sommerville Software Engineering – A Practitioners Approach, 6ed, Roger Presman http://agilemanifesto.org/ http://martinfowler.com/articles/newMethodology.html http://prezi.com/w6pjte9n4bsq/the-lean-pyramid/ http://www.softwareresults.us/2010/02/software-development-knowledge- work.html