SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
32          (2
           Leis da5)
Engenharia de Software

               João Pascoal Faria
              Hugo Sereno Ferreira

 Faculdade de Engenharia da Universidade do Porto
I
   lei fundamental da
 engenharia de requisitos

           h
os requisitos terminam onde
   começa a liberdade do
      implementador.
II
 lei dos três éfes da
gestão de prioridades

        h
   funcionalidade,
     fiabilidade,
     eficiência.
III
   principio fundamental da
   arquitectura de software

                       h
qualquer problema de estruturação de
software resolve-se introduzindo níveis
           de indirecção*
*corolário. qualquer problema de desempenho resolve-
          se removendo níveis de indirecção.

                        jim gray
IV
     lei de arquimedes da
  arquitectura de software

             h
um sistema de software fundado
 numa má arquitectura afundar-
 se-á sob o peso do seu próprio
            sucesso.
V
  princípio fundamental da
desconfiança homem-máquina

              h
inteligência artificial é melhor
   do que estupidez natural.
VI
  paradoxo da redundância

             h
a redundância é fonte de erros,
  mas também permite revelar
           erros.
VII
   princípio fundamental da
    verificação & validação

                h
      um programa que cumpre
     perfeitamente uma péssima
especificação é um péssimo programa,
     não um programa perfeito.

                cem kaner
VIII
   limite fundamental da
  engenharia de software

                    h
  é praticamente impossível
provar que um programa está
          correcto*

*corolário. desenvolver software é conjecturar
                  soluções.
IX
     princípio fundamental da
      qualidade de software

                         h
   todo o programa tem erros*

* o número de erros de um programa é dado precisamente
  pela formula Nerros > K, em que K é um inteiro qualquer.


                          leis de murphy
X
    lema fundamental do
     teste de software

             h
os bugs escondem-se nos cantos
  e reúnem-se nas fronteiras.


             boris beizer
XI
   princípio da incerteza no
  planeamento de projectos

                h
não é possível fixar simultaneamente
o resultado, custo e duração de um
       projecto de software.
XII
        dinâmica do
  deslizamento de prazos

             h

falta cada vez mais tempo para
      acabar o projecto.
XIII
           paradoxo de
        zenon do software

                      h
não basta fazer o que falta fazer
   para satisfazer o cliente*

  *a satisfação do cliente é um alvo em movimento.
XIV
  princípio da conservação
      da não-aceitação

             h
os X% que falta implementar têm
 (100-X)% de importância para o
            cliente.
XV
         lei fundamental da
        gestão de alterações

                         h
fazem-se sempre mais alterações,
 até não haver mais tempo para
       fazer alterações*

*corolário. a última alteração é a que deu cabo de tudo.
XVI
  responsabilidade social do
   engenheiro de software

                   h
 o mundo pode acabar devido a
uma catástrofe. e é aí que entram
  os engenheiros de software*

       * como causadores, entenda-se.
XVII
       propósito básico do
           debugging

                      h

debugging consiste no processo
     de remoção de bugs*

 * logo, programar é o processo de os introduzir.
                      edsger dijkstra
XVIII
  a arte da remoção de bugs

             h
  os noviços inserem código
correctivo; os mestres removem
      código defeituoso.


             Richard Pattis
XIX
  problema fundamental da
        usabilidade

              h
  o maior erro quando se tenta
desenhar algo à prova de idiotas,
é subestimar a capacidade deles.

               Douglas Adam
XX
          principio da
     não-proporcionalidade

                     h
 os primeiros 90% do código
correspondem a 90% do tempo
     de desenvolvimento*
* os restantes10% correspondem aos outros 90% do
             tempo de desenvolvimento.
                      Tom Cargill
XXI
      hipótese de wirth

              h
  o software tende a ficar mais
lento, mais rapidamente do que o
   hardware fica mais rápido.

               Wirth
XXII
    a navalha de mencken

             h
para todo o problema complexo
de software, existe uma solução
 que é simultâneamente clara,
       simples, e errada.

              H. L. Mencken
XXIII
           teoria da
      dilatação temporal

                    h
    nunca há tempo para
desenvolver correctamente*

* mas há sempre tempo para desenvolver de novo.
XXIV
        conjectura de
    transmutação de bruce

               h

        quaisquer defeitos
  suficientemente avançados são
indestinguíveis de funcionalidades.

                Bruce Brown
XXV
      lei de hofstadter

                 h
o desenvolvimento demora sempre
 mais do que foi estimado, mesmo
quando se tem em consideração a
        lei de hofstadter*

         * esta lei é recursiva.
XXVI
  paradoxo do planeamento

                  h
os planos não servem para nada*

       * mas é indispensável planear.


                  Dwight Eisenhower
XXVII
     primeira lei da
documentação de software

            h
      o melhor código é
simultaneamente a sua melhor
       documentação.
XXVIII
          a dualidade do
       desenho de software

                    h
há duas formas de construir software:
 (1) fazê-lo tão simples que obviamente não
existem defeitos, ou (2) fazê-lo tão complexo
       que não existem defeitos óbvios.


                     tony hoare
XXIX
     prática e pragmática
      da automatização

               h
 se se automatizar uma pessegada,
obtem-se uma pessegada automática.



               Rod Michael
XXX
 hipótese da congruência
     da especificação

            h
     é mais fácil colocar a
especificação de acordo com o
   programa, que vice-versa.


             Alan Perlis
XXXI
   principio da instabilidade
    quântica dos requisitos

               h
quanto mais estável um requisito é
considerado, maior a probabilidade
       de ele ser alterado.
XXXII
    lei da inflacção da
  concepção de software

             h
 a maior dificuldade durante a
concepção de software é deixar
   funcionalidades de fora.


             Donald Norman
XXXII+I
     a interveniência divina
   na construção de software

                          h
  o software e as catedrais gozam
essencialmente do mesmo processo*

* em ambos os casos, primeiro construímos e depois rezamos.

Mais conteúdo relacionado

Semelhante a As 32 Leis da Engenharia de Software

Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de SoftwareClaudia Melo
 
Contr avali engenharia de software-introdução
Contr avali   engenharia de software-introduçãoContr avali   engenharia de software-introdução
Contr avali engenharia de software-introduçãoFelipe Lyra
 
1 engenharia de software
1   engenharia de software1   engenharia de software
1 engenharia de softwareFelipe Bugov
 
Generalização prematura e complexidade acidental, a raiz do mal de todo sof...
Generalização prematura e complexidade acidental, a raiz do mal de todo sof...Generalização prematura e complexidade acidental, a raiz do mal de todo sof...
Generalização prematura e complexidade acidental, a raiz do mal de todo sof...Letticia Nicoli
 
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPA demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPFlávio Lisboa
 
Curso Ger. Riscos - Dia 01 / Parte 1
Curso Ger. Riscos - Dia 01 / Parte 1Curso Ger. Riscos - Dia 01 / Parte 1
Curso Ger. Riscos - Dia 01 / Parte 1Peter Mello
 
Seu código fonte é sustentável?
Seu código fonte é sustentável?Seu código fonte é sustentável?
Seu código fonte é sustentável?Isaac de Souza
 
Softwares e S.O. Livres na busca pela inovacao tecnologica - Felipe Alison
Softwares e S.O. Livres na busca pela inovacao tecnologica - Felipe AlisonSoftwares e S.O. Livres na busca pela inovacao tecnologica - Felipe Alison
Softwares e S.O. Livres na busca pela inovacao tecnologica - Felipe AlisonPotiLivre Sobrenome
 
Aplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkAplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkFlávio Lisboa
 
Generalização prematura e complexidade acidental, a raiz do mal de todo software
Generalização prematura e complexidade acidental, a raiz do mal de todo softwareGeneralização prematura e complexidade acidental, a raiz do mal de todo software
Generalização prematura e complexidade acidental, a raiz do mal de todo softwareLetticia Nicoli
 
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquitetoFIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquitetoLeandro Daniel
 
Fundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptxFundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptxRoberto Nunes
 
Desenvolvimento de software – novas abordagens e desafios - Marco Valtas
Desenvolvimento de software – novas abordagens e desafios - Marco ValtasDesenvolvimento de software – novas abordagens e desafios - Marco Valtas
Desenvolvimento de software – novas abordagens e desafios - Marco ValtasRio Info
 
Agile br2011 lucabastos-prog10x
Agile br2011 lucabastos-prog10xAgile br2011 lucabastos-prog10x
Agile br2011 lucabastos-prog10xLuca Bastos
 

Semelhante a As 32 Leis da Engenharia de Software (15)

Projeto de migração para software livre
Projeto de migração para software livreProjeto de migração para software livre
Projeto de migração para software livre
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Software
 
Contr avali engenharia de software-introdução
Contr avali   engenharia de software-introduçãoContr avali   engenharia de software-introdução
Contr avali engenharia de software-introdução
 
1 engenharia de software
1   engenharia de software1   engenharia de software
1 engenharia de software
 
Generalização prematura e complexidade acidental, a raiz do mal de todo sof...
Generalização prematura e complexidade acidental, a raiz do mal de todo sof...Generalização prematura e complexidade acidental, a raiz do mal de todo sof...
Generalização prematura e complexidade acidental, a raiz do mal de todo sof...
 
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPA demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
 
Curso Ger. Riscos - Dia 01 / Parte 1
Curso Ger. Riscos - Dia 01 / Parte 1Curso Ger. Riscos - Dia 01 / Parte 1
Curso Ger. Riscos - Dia 01 / Parte 1
 
Seu código fonte é sustentável?
Seu código fonte é sustentável?Seu código fonte é sustentável?
Seu código fonte é sustentável?
 
Softwares e S.O. Livres na busca pela inovacao tecnologica - Felipe Alison
Softwares e S.O. Livres na busca pela inovacao tecnologica - Felipe AlisonSoftwares e S.O. Livres na busca pela inovacao tecnologica - Felipe Alison
Softwares e S.O. Livres na busca pela inovacao tecnologica - Felipe Alison
 
Aplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkAplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend Framework
 
Generalização prematura e complexidade acidental, a raiz do mal de todo software
Generalização prematura e complexidade acidental, a raiz do mal de todo softwareGeneralização prematura e complexidade acidental, a raiz do mal de todo software
Generalização prematura e complexidade acidental, a raiz do mal de todo software
 
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquitetoFIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
 
Fundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptxFundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptx
 
Desenvolvimento de software – novas abordagens e desafios - Marco Valtas
Desenvolvimento de software – novas abordagens e desafios - Marco ValtasDesenvolvimento de software – novas abordagens e desafios - Marco Valtas
Desenvolvimento de software – novas abordagens e desafios - Marco Valtas
 
Agile br2011 lucabastos-prog10x
Agile br2011 lucabastos-prog10xAgile br2011 lucabastos-prog10x
Agile br2011 lucabastos-prog10x
 

As 32 Leis da Engenharia de Software

  • 1. 32 (2 Leis da5) Engenharia de Software João Pascoal Faria Hugo Sereno Ferreira Faculdade de Engenharia da Universidade do Porto
  • 2. I lei fundamental da engenharia de requisitos h os requisitos terminam onde começa a liberdade do implementador.
  • 3. II lei dos três éfes da gestão de prioridades h funcionalidade, fiabilidade, eficiência.
  • 4. III principio fundamental da arquitectura de software h qualquer problema de estruturação de software resolve-se introduzindo níveis de indirecção* *corolário. qualquer problema de desempenho resolve- se removendo níveis de indirecção. jim gray
  • 5. IV lei de arquimedes da arquitectura de software h um sistema de software fundado numa má arquitectura afundar- se-á sob o peso do seu próprio sucesso.
  • 6. V princípio fundamental da desconfiança homem-máquina h inteligência artificial é melhor do que estupidez natural.
  • 7. VI paradoxo da redundância h a redundância é fonte de erros, mas também permite revelar erros.
  • 8. VII princípio fundamental da verificação & validação h um programa que cumpre perfeitamente uma péssima especificação é um péssimo programa, não um programa perfeito. cem kaner
  • 9. VIII limite fundamental da engenharia de software h é praticamente impossível provar que um programa está correcto* *corolário. desenvolver software é conjecturar soluções.
  • 10. IX princípio fundamental da qualidade de software h todo o programa tem erros* * o número de erros de um programa é dado precisamente pela formula Nerros > K, em que K é um inteiro qualquer. leis de murphy
  • 11. X lema fundamental do teste de software h os bugs escondem-se nos cantos e reúnem-se nas fronteiras. boris beizer
  • 12. XI princípio da incerteza no planeamento de projectos h não é possível fixar simultaneamente o resultado, custo e duração de um projecto de software.
  • 13. XII dinâmica do deslizamento de prazos h falta cada vez mais tempo para acabar o projecto.
  • 14. XIII paradoxo de zenon do software h não basta fazer o que falta fazer para satisfazer o cliente* *a satisfação do cliente é um alvo em movimento.
  • 15. XIV princípio da conservação da não-aceitação h os X% que falta implementar têm (100-X)% de importância para o cliente.
  • 16. XV lei fundamental da gestão de alterações h fazem-se sempre mais alterações, até não haver mais tempo para fazer alterações* *corolário. a última alteração é a que deu cabo de tudo.
  • 17. XVI responsabilidade social do engenheiro de software h o mundo pode acabar devido a uma catástrofe. e é aí que entram os engenheiros de software* * como causadores, entenda-se.
  • 18. XVII propósito básico do debugging h debugging consiste no processo de remoção de bugs* * logo, programar é o processo de os introduzir. edsger dijkstra
  • 19. XVIII a arte da remoção de bugs h os noviços inserem código correctivo; os mestres removem código defeituoso. Richard Pattis
  • 20. XIX problema fundamental da usabilidade h o maior erro quando se tenta desenhar algo à prova de idiotas, é subestimar a capacidade deles. Douglas Adam
  • 21. XX principio da não-proporcionalidade h os primeiros 90% do código correspondem a 90% do tempo de desenvolvimento* * os restantes10% correspondem aos outros 90% do tempo de desenvolvimento. Tom Cargill
  • 22. XXI hipótese de wirth h o software tende a ficar mais lento, mais rapidamente do que o hardware fica mais rápido. Wirth
  • 23. XXII a navalha de mencken h para todo o problema complexo de software, existe uma solução que é simultâneamente clara, simples, e errada. H. L. Mencken
  • 24. XXIII teoria da dilatação temporal h nunca há tempo para desenvolver correctamente* * mas há sempre tempo para desenvolver de novo.
  • 25. XXIV conjectura de transmutação de bruce h quaisquer defeitos suficientemente avançados são indestinguíveis de funcionalidades. Bruce Brown
  • 26. XXV lei de hofstadter h o desenvolvimento demora sempre mais do que foi estimado, mesmo quando se tem em consideração a lei de hofstadter* * esta lei é recursiva.
  • 27. XXVI paradoxo do planeamento h os planos não servem para nada* * mas é indispensável planear. Dwight Eisenhower
  • 28. XXVII primeira lei da documentação de software h o melhor código é simultaneamente a sua melhor documentação.
  • 29. XXVIII a dualidade do desenho de software h há duas formas de construir software: (1) fazê-lo tão simples que obviamente não existem defeitos, ou (2) fazê-lo tão complexo que não existem defeitos óbvios. tony hoare
  • 30. XXIX prática e pragmática da automatização h se se automatizar uma pessegada, obtem-se uma pessegada automática. Rod Michael
  • 31. XXX hipótese da congruência da especificação h é mais fácil colocar a especificação de acordo com o programa, que vice-versa. Alan Perlis
  • 32. XXXI principio da instabilidade quântica dos requisitos h quanto mais estável um requisito é considerado, maior a probabilidade de ele ser alterado.
  • 33. XXXII lei da inflacção da concepção de software h a maior dificuldade durante a concepção de software é deixar funcionalidades de fora. Donald Norman
  • 34. XXXII+I a interveniência divina na construção de software h o software e as catedrais gozam essencialmente do mesmo processo* * em ambos os casos, primeiro construímos e depois rezamos.