As 32 Leis da Engenharia de Software

34
32 (2 5 ) Leis da Engenharia de Software João Pascoal Faria Hugo Sereno Ferreira Faculdade de Engenharia da Universidade do Porto

description

As 32 Leis da Engenharia de Software

Transcript of As 32 Leis da Engenharia de Software

Page 1: As 32 Leis da Engenharia de Software

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

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

IIlei dos três éfes da

gestão de prioridades

funcionalidade,

fiabilidade,

eficiência.

h

Page 4: As 32 Leis da Engenharia de Software

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.