as 32 leis da engenharia de software
DESCRIPTION
As 32 Leis da Engenharia de SoftwareTRANSCRIPT
![Page 1: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/1.jpg)
32 (25) Leis da Engenharia de Software
João Pascoal FariaHugo Sereno Ferreira
Faculdade de Engenharia da Universidade do Porto
![Page 2: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/2.jpg)
Ilei fundamental da
engenharia de requisitos
os requisitos terminam onde começa a liberdade do
implementador.
h
![Page 3: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/3.jpg)
IIlei dos três éfes da
gestão de prioridades
funcionalidade,
fiabilidade,
eficiência.
h
![Page 4: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/4.jpg)
IIIprincipio fundamental da
arquitectura de software
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.
h
jim gray
![Page 5: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/5.jpg)
IVlei 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.
![Page 6: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/6.jpg)
Vprincípio fundamental da
desconfiança homem-máquina
h
inteligência artificial é melhor do que estupidez natural.
![Page 7: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/7.jpg)
VIparadoxo da redundância
h
a redundância é fonte de erros, mas também permite revelar
erros.
![Page 8: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/8.jpg)
VIIprincí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
![Page 9: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/9.jpg)
VIIIlimite fundamental da
engenharia de software
h
é praticamente impossível provar que um programa está
correcto*
*corolário. desenvolver software é conjecturar soluções.
![Page 10: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/10.jpg)
IXprincí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
![Page 11: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/11.jpg)
Xlema fundamental do
teste de software
h
os bugs escondem-se nos cantos e reúnem-se nas fronteiras.
boris beizer
![Page 12: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/12.jpg)
XIprincí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.
![Page 13: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/13.jpg)
XIIdinâmica do
deslizamento de prazos
h
falta cada vez mais tempo para acabar o projecto.
![Page 14: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/14.jpg)
XIIIparadoxo 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.
![Page 15: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/15.jpg)
XIVprincí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.
![Page 16: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/16.jpg)
XVlei 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.
![Page 17: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/17.jpg)
XVIresponsabilidade 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.
![Page 18: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/18.jpg)
XVIIpropósito básico do
debugging
h
debugging consiste no processo de remoção de bugs*
* logo, programar é o processo de os introduzir.
edsger dijkstra
![Page 19: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/19.jpg)
XVIIIa arte da remoção de bugs
h
os noviços inserem código correctivo; os mestres removem
código defeituoso.
Richard Pattis
![Page 20: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/20.jpg)
XIXproblema fundamental da
usabilidade
h
o maior erro quando se tenta desenhar algo à prova de idiotas, é subestimar a capacidade deles.
Douglas Adam
![Page 21: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/21.jpg)
XXprincipio 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
![Page 22: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/22.jpg)
XXIhipótese de wirth
h
o software tende a ficar mais lento, mais rapidamente do que o
hardware fica mais rápido.
Wirth
![Page 23: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/23.jpg)
XXIIa 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
![Page 24: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/24.jpg)
XXIIIteoria da
dilatação temporal
h
nunca há tempo para desenvolver correctamente*
* mas há sempre tempo para desenvolver de novo.
![Page 25: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/25.jpg)
XXIVconjectura de
transmutação de bruce
h
quaisquer defeitos suficientemente avançados são
indestinguíveis de funcionalidades.
Bruce Brown
![Page 26: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/26.jpg)
XXVlei 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.
![Page 27: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/27.jpg)
XXVIparadoxo do planeamento
h
os planos não servem para nada*
* mas é indispensável planear.
Dwight Eisenhower
![Page 28: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/28.jpg)
XXVIIprimeira lei da
documentação de software
h
o melhor código é simultaneamente a sua melhor
documentação.
![Page 29: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/29.jpg)
XXVIIIa 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
![Page 30: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/30.jpg)
XXIXprática e pragmática
da automatização
h
se se automatizar uma pessegada, obtem-se uma pessegada automática.
Rod Michael
![Page 31: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/31.jpg)
XXXhipó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
![Page 32: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/32.jpg)
XXXIprincipio da instabilidadequântica dos requisitos
h
quanto mais estável um requisito é considerado, maior a probabilidade
de ele ser alterado.
![Page 33: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/33.jpg)
XXXIIlei da inflacção da
concepção de software
h
a maior dificuldade durante a concepção de software é deixar
funcionalidades de fora.
Donald Norman
![Page 34: As 32 Leis da Engenharia de Software](https://reader033.vdocuments.pub/reader033/viewer/2022061210/548e8820b479599a358b477b/html5/thumbnails/34.jpg)
XXXII+Ia 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.