Download - As 32 Leis da Engenharia de Software

Transcript
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.