B
 D
 U
 F
Gilmar Pupo
  @gpupo
Big       B
Design    D
Up        U
Front     F
         Gilmar Pupo
           @gpupo
Sobre @gpupo
• Desenvolvedor e consultor em GTI
• Dependente de documentação, bookmarks e
  anotações
• Doctrine ORM, Symfony, Perl, Bash, Linux,
  jQuery e o que funcionar...
• Membro e co-fundador do #maisagil
• Empreendedor no @hotellinux

         www.gilmar.eti.br   www.gpupo.com




                                             Times ágeis. @gpupo
BDUF/BRUF
Big design up front (BDUF).
Big requirements up front (BRUF).




                                    Times ágeis. @gpupo
BDUF/BRUF
Aprendemos e acreditamos na metáfora da
construção de prédios, suas plantas e seus operários




                                            Times ágeis. @gpupo
BDUF/BRUF
Aprendemos e acreditamos na metáfora da
construção de prédios, suas plantas e seus operários




                                            Times ágeis. @gpupo
BDUF/BRUF
Aprendemos e acreditamos na metáfora da
construção de prédios, suas plantas e seus operários




                                            Times ágeis. @gpupo
BDUF/BRUF
E o sonho se realiza...




                           Times ágeis. @gpupo
BDUF/BRUF
               “The
               Project
               Management
               Triangle”

               Ou

               “Iron triangle”




            Times ágeis. @gpupo
BDUF/BRUF
                                                    “The




                 Previsibilidade
                                                    Project
                                                    Management
                                                    Triangle”

                                                    Ou

                                                    “Iron triangle”




Risco reduzido                     Garantia de entrega




                                               Times ágeis. @gpupo
BDUF/BRUF
  Pontes normalmente são entregues no
prazo, dentro do orçamento e “não caem”




                                Times ágeis. @gpupo
BDUF/BRUF
   Pontes normalmente são entregues no
 prazo, dentro do orçamento e “não caem”

                    X

 Softwares raramente são entregues no prazo
ou dentro do orçamento. E normalmente eles
                 tem bugs




                                  Times ágeis. @gpupo
Pesquisa do The
          Standish Group
                    Foco de identificar:

●   As falhas dos projetos de software
●   Os maiores fatores que influenciam estas falhas
●   Os pontos chave que podem reduzir estas falhas




                                           Times ágeis. @gpupo
BDUF/BRUF




            Times ágeis. @gpupo
BDUF/BRUF

Projetos cancelados                             Projeto dentro do prazo,
ou não utilizados                               dentro do orçamento e
                                               com boa parte do escopo




          Projeto funcionando, mas entregue
         sem atender ou custo, ou esforço ou
                 com o escopo parcial


                                                       The Standish Group Chaos Report




                                                            Times ágeis. @gpupo
Standish Group  EUA
• > 250 bilhões de dólares cada ano
  no desenvolvimento de software
• custo médio de um projeto em uma
  grande empresa é de 2.3 milhões
  de dólares




                            Times ágeis. @gpupo
Standish Group  EUA
• custo médio de um projeto em uma
  empresa média é de 1.4 milhões de
  dólares
• 434 mil dólares para uma empresa
  pequena




                           Times ágeis. @gpupo
E a grande maioria destes
       projetos falha.


      Os projetos de
desenvolvimento de software
       estão no caos
E a grande maioria destes
       projetos falha.


      Os projetos de
desenvolvimento de software
       estão no caos
trocam-se processos e nomes
trocam-se processos e nomes


    E os os projetos de
desenvolvimento de software
    continuam no caos
BDUF – BRUF
 Uma década e os mesmos erros.


Tem algo errado?




                                 Times ágeis. @gpupo
BDUF – BRUF     Fatores de fracasso
●   Requisitos Incompletos: 13.1%
●   Falta de envolvimento do usuário: 12.4%
●   Falta de recursos: 10.6%
●   Expectativas não realistas 9.9%
●   Falta de apoio executivo: 9.3%
●   Mudanças de requisitos: 8.7%
●   Falta de planejamento: 8.1%
●   Não precisa mais daquilo: 7.5%
●   Falta de gestão da TI: 6.2%
●   Analfabetismo tecnológico: 4.3%

                                          Times ágeis. @gpupo
BDUF   Fatores médio de fracasso
●Falta de insumos do usuário: 12.8%
●Requisitos & Especificações incompletas: 12.3%
●Mudanças nos requisitos & especificações: 11.8%
●Falta de apoio executivo: 7.5%
●Ambiente tecnológico incompleto: 7.0%
●Falta de recursos: 6.4%
●Expectativas irrealistas: 5.9%
●Objetivos nebulosos: 5.3%
●Ciclos (tempo) irrealistas: 4.3%
●Novas tecnologias: 3.7%

                                         Times ágeis. @gpupo
Evolutionary design

“With evolutionary design, you
  expect the design to evolve
 slowly over the course of the
   programming exercise…”
Evolutionary design

   “There's no design at the
beginning. You begin by coding
      a small amount of
  functionality, adding more
 functionality, and letting the
   design shift and shape!”

        Martin Fowler
“Gerenciando o desenvolvimento de
grandes sistemas de software” -
Winston W. Royce, em 1970.
BDUF/BRUF




            Times ágeis. @gpupo
BDUF – BRUF // motivos
1)Mistakenly compare software development to civil
engineering
2)Get motivated to do so by the business
3)Think comprehensive requirements documentation
means something
4)Don't know any better
5)Are overly specialized
6)Believe programmers don't have the skills to model
themselves
7)They got sidetracked by traditional data
professionals.

                                             Times ágeis. @gpupo
BDUF – BRUF // impacto
1)It reduces your willingness to embrace
evolving requirements

2)It increases the chance of poor decisions

3)It increases the chance your vision will be
ignored

4)It decreases morale


                                        Times ágeis. @gpupo
BDUF – BRUF // impacto




                 Times ágeis. @gpupo
Escopo fechado
• A incompetência sempre é do
  desenvolvedor (?!)




                            Times ágeis. @gpupo
Escopo fechado
•   Garantias geram desperdícios
•   Software não é igual
•   Software não é prédio
•   Você não sabe o tempo




                               Times ágeis. @gpupo
BDUF   Fatores Sucesso
●Envolvimento do usuário: 15.9%
●Apoio executivo: 13.9%
●Declaração de requisitos clara e limpa: 13%
●Planejamento apropriado: 9.6%
●Expectativas realistas: 8.2%
●Milestones pequenos: 7.7%
●Equipe competente: 7.2%
●Propriedade: 5.3%
●Visão e objetivos claros: 2.9%
●Trabalho duro e equipe focada: 2.4%

                                           Times ágeis. @gpupo
BDUF – BRUF // solução
1)You still need to do some initial envisioning up front,
including both requirements envisioning and
architectural envisioning

2)You're still doing some initial up front modeling, it's
just that you are doing so in an effective and agile
manner.

3)You should create very slim, high-level models early
in the project which overview the scope of the effort
and identify a likely architectural strategy.


                                                 Times ágeis. @gpupo
“Gerenciando o desenvolvimento de
grandes sistemas de software” -
Winston W. Royce, em 1970.
Arte
Arte




       Possível fazer por blocos?
Funcionalidades
   não são
 commodities
Existe um ciclo de
aprendizado
Lean
●   Levar a tomada de decisão para o chão da fábrica

●   Empowerment

●   Autonomia




                                            Times ágeis. @gpupo
Lean
●   Levar a tomada de decisão para o chão da fábrica

●   Empowerment

●   Autonomia




                                            Times ágeis. @gpupo
Escopo aberto
• Princípio de Pareto
• 20% entregue,
• Menor frustação na quebra de
  espectativas




                             Times ágeis. @gpupo
Some Design Up Front is
        Good
Like a horse with blinders on,
avoiding some degree of Big
Design Up Front (BDUF) can
force your team and project into
tunnel vision, because… If you
don’t look at what you’re building
in its entirety, it is harder to see
the big picture, to have to that ah-
hah moment that leads to a break
through, to maintain conceptual
integrity, or have a successful
project.

                                       Times ágeis. @gpupo
Design
●
  Faça o justo necessário:
não faça aquém nem além do
que deve ser feito na iteração
●  Refatoração : sempre que
puder melhore o código



                         Times ágeis. @gpupo
Big problem

“When you're up against a big
problem it's easy to get stuck
— you'll overthink the problem,
spend days or weeks worrying
  about it and sketching out
   solution after solution.”
Big problem

“Sketching is great, but at the
end of the day we've found it's
better to get something done.
   That means focusing on
      something small. “
            Jonathan Smiley - ZURB
Comece
algo
pequeno
Evoluá-o



     Comece
     algo
     pequeno
Design
● Foco nas tarefas que
agregam valor na visão do
cliente
●   Fazer o simples e depois
evoluir o código de acordo
com a necessidade


                        Times ágeis. @gpupo
Estimativas




               building a plan
                you and your
                customer can
                work with and
                    believe in

              Times ágeis. @gpupo
Estimativas
parar de tentar obter algo que as estimativas iniciais
não pode dar (precisão e exatidão) e focar no que
realmente importa:

 a construção de um plano que você
e seu cliente pode trabalhar e
acreditar dentro




                                              Times ágeis. @gpupo

Big design up front (BDUF)

  • 1.
    B D U F Gilmar Pupo @gpupo
  • 2.
    Big B Design D Up U Front F Gilmar Pupo @gpupo
  • 3.
    Sobre @gpupo • Desenvolvedore consultor em GTI • Dependente de documentação, bookmarks e anotações • Doctrine ORM, Symfony, Perl, Bash, Linux, jQuery e o que funcionar... • Membro e co-fundador do #maisagil • Empreendedor no @hotellinux www.gilmar.eti.br www.gpupo.com Times ágeis. @gpupo
  • 4.
    BDUF/BRUF Big design upfront (BDUF). Big requirements up front (BRUF). Times ágeis. @gpupo
  • 5.
    BDUF/BRUF Aprendemos e acreditamosna metáfora da construção de prédios, suas plantas e seus operários Times ágeis. @gpupo
  • 6.
    BDUF/BRUF Aprendemos e acreditamosna metáfora da construção de prédios, suas plantas e seus operários Times ágeis. @gpupo
  • 7.
    BDUF/BRUF Aprendemos e acreditamosna metáfora da construção de prédios, suas plantas e seus operários Times ágeis. @gpupo
  • 8.
    BDUF/BRUF E o sonhose realiza... Times ágeis. @gpupo
  • 9.
    BDUF/BRUF “The Project Management Triangle” Ou “Iron triangle” Times ágeis. @gpupo
  • 10.
    BDUF/BRUF “The Previsibilidade Project Management Triangle” Ou “Iron triangle” Risco reduzido Garantia de entrega Times ágeis. @gpupo
  • 11.
    BDUF/BRUF Pontesnormalmente são entregues no prazo, dentro do orçamento e “não caem” Times ágeis. @gpupo
  • 12.
    BDUF/BRUF Pontes normalmente são entregues no prazo, dentro do orçamento e “não caem” X Softwares raramente são entregues no prazo ou dentro do orçamento. E normalmente eles tem bugs Times ágeis. @gpupo
  • 13.
    Pesquisa do The Standish Group Foco de identificar: ● As falhas dos projetos de software ● Os maiores fatores que influenciam estas falhas ● Os pontos chave que podem reduzir estas falhas Times ágeis. @gpupo
  • 14.
    BDUF/BRUF Times ágeis. @gpupo
  • 15.
    BDUF/BRUF Projetos cancelados Projeto dentro do prazo, ou não utilizados dentro do orçamento e com boa parte do escopo Projeto funcionando, mas entregue sem atender ou custo, ou esforço ou com o escopo parcial The Standish Group Chaos Report Times ágeis. @gpupo
  • 16.
    Standish Group EUA • > 250 bilhões de dólares cada ano no desenvolvimento de software • custo médio de um projeto em uma grande empresa é de 2.3 milhões de dólares Times ágeis. @gpupo
  • 17.
    Standish Group EUA • custo médio de um projeto em uma empresa média é de 1.4 milhões de dólares • 434 mil dólares para uma empresa pequena Times ágeis. @gpupo
  • 18.
    E a grandemaioria destes projetos falha. Os projetos de desenvolvimento de software estão no caos
  • 19.
    E a grandemaioria destes projetos falha. Os projetos de desenvolvimento de software estão no caos
  • 20.
  • 21.
    trocam-se processos enomes E os os projetos de desenvolvimento de software continuam no caos
  • 22.
    BDUF – BRUF Uma década e os mesmos erros. Tem algo errado? Times ágeis. @gpupo
  • 23.
    BDUF – BRUF Fatores de fracasso ● Requisitos Incompletos: 13.1% ● Falta de envolvimento do usuário: 12.4% ● Falta de recursos: 10.6% ● Expectativas não realistas 9.9% ● Falta de apoio executivo: 9.3% ● Mudanças de requisitos: 8.7% ● Falta de planejamento: 8.1% ● Não precisa mais daquilo: 7.5% ● Falta de gestão da TI: 6.2% ● Analfabetismo tecnológico: 4.3% Times ágeis. @gpupo
  • 24.
    BDUF Fatores médio de fracasso ●Falta de insumos do usuário: 12.8% ●Requisitos & Especificações incompletas: 12.3% ●Mudanças nos requisitos & especificações: 11.8% ●Falta de apoio executivo: 7.5% ●Ambiente tecnológico incompleto: 7.0% ●Falta de recursos: 6.4% ●Expectativas irrealistas: 5.9% ●Objetivos nebulosos: 5.3% ●Ciclos (tempo) irrealistas: 4.3% ●Novas tecnologias: 3.7% Times ágeis. @gpupo
  • 25.
    Evolutionary design “With evolutionarydesign, you expect the design to evolve slowly over the course of the programming exercise…”
  • 26.
    Evolutionary design “There's no design at the beginning. You begin by coding a small amount of functionality, adding more functionality, and letting the design shift and shape!” Martin Fowler
  • 27.
    “Gerenciando o desenvolvimentode grandes sistemas de software” - Winston W. Royce, em 1970.
  • 28.
    BDUF/BRUF Times ágeis. @gpupo
  • 29.
    BDUF – BRUF// motivos 1)Mistakenly compare software development to civil engineering 2)Get motivated to do so by the business 3)Think comprehensive requirements documentation means something 4)Don't know any better 5)Are overly specialized 6)Believe programmers don't have the skills to model themselves 7)They got sidetracked by traditional data professionals. Times ágeis. @gpupo
  • 30.
    BDUF – BRUF// impacto 1)It reduces your willingness to embrace evolving requirements 2)It increases the chance of poor decisions 3)It increases the chance your vision will be ignored 4)It decreases morale Times ágeis. @gpupo
  • 31.
    BDUF – BRUF// impacto Times ágeis. @gpupo
  • 32.
    Escopo fechado • Aincompetência sempre é do desenvolvedor (?!) Times ágeis. @gpupo
  • 33.
    Escopo fechado • Garantias geram desperdícios • Software não é igual • Software não é prédio • Você não sabe o tempo Times ágeis. @gpupo
  • 34.
    BDUF Fatores Sucesso ●Envolvimento do usuário: 15.9% ●Apoio executivo: 13.9% ●Declaração de requisitos clara e limpa: 13% ●Planejamento apropriado: 9.6% ●Expectativas realistas: 8.2% ●Milestones pequenos: 7.7% ●Equipe competente: 7.2% ●Propriedade: 5.3% ●Visão e objetivos claros: 2.9% ●Trabalho duro e equipe focada: 2.4% Times ágeis. @gpupo
  • 35.
    BDUF – BRUF// solução 1)You still need to do some initial envisioning up front, including both requirements envisioning and architectural envisioning 2)You're still doing some initial up front modeling, it's just that you are doing so in an effective and agile manner. 3)You should create very slim, high-level models early in the project which overview the scope of the effort and identify a likely architectural strategy. Times ágeis. @gpupo
  • 36.
    “Gerenciando o desenvolvimentode grandes sistemas de software” - Winston W. Royce, em 1970.
  • 37.
  • 38.
    Arte Possível fazer por blocos?
  • 39.
    Funcionalidades não são commodities
  • 40.
    Existe um ciclode aprendizado
  • 42.
    Lean ● Levar a tomada de decisão para o chão da fábrica ● Empowerment ● Autonomia Times ágeis. @gpupo
  • 43.
    Lean ● Levar a tomada de decisão para o chão da fábrica ● Empowerment ● Autonomia Times ágeis. @gpupo
  • 44.
    Escopo aberto • Princípiode Pareto • 20% entregue, • Menor frustação na quebra de espectativas Times ágeis. @gpupo
  • 45.
    Some Design UpFront is Good Like a horse with blinders on, avoiding some degree of Big Design Up Front (BDUF) can force your team and project into tunnel vision, because… If you don’t look at what you’re building in its entirety, it is harder to see the big picture, to have to that ah- hah moment that leads to a break through, to maintain conceptual integrity, or have a successful project. Times ágeis. @gpupo
  • 46.
    Design ● Façao justo necessário: não faça aquém nem além do que deve ser feito na iteração ● Refatoração : sempre que puder melhore o código Times ágeis. @gpupo
  • 47.
    Big problem “When you'reup against a big problem it's easy to get stuck — you'll overthink the problem, spend days or weeks worrying about it and sketching out solution after solution.”
  • 48.
    Big problem “Sketching isgreat, but at the end of the day we've found it's better to get something done. That means focusing on something small. “ Jonathan Smiley - ZURB
  • 49.
  • 50.
    Evoluá-o Comece algo pequeno
  • 51.
    Design ● Foco nastarefas que agregam valor na visão do cliente ● Fazer o simples e depois evoluir o código de acordo com a necessidade Times ágeis. @gpupo
  • 52.
    Estimativas building a plan you and your customer can work with and believe in Times ágeis. @gpupo
  • 54.
    Estimativas parar de tentarobter algo que as estimativas iniciais não pode dar (precisão e exatidão) e focar no que realmente importa: a construção de um plano que você e seu cliente pode trabalhar e acreditar dentro Times ágeis. @gpupo