Title: 16 (24) Leis Fundamentais da Engenharia de Software
116 (24) Leis Fundamentais da Engenharia de
Software
Grupo de Interesse em Engenharia de
Software FEUP, Fevereiro de 2006 (v.0.2)
2Índice
- Engenharia de Requisitos de Software
- Lei nº 1 Lei fundamental da Engenharia de
Requisitos - Lei nº 2 Lei dos 3 éfes da Gestão de
Prioridades - Desenho de Software
- Lei nº 3 Princípio fundamental da Arquitectura
de Software - Lei nº 4 Lei de Arquimedes da Arquitectura de
Software - Lei nº 5 Princípio fundamental da Desconfiança
Homem-Máquina - Lei nº 6 - Paradoxo da Redundância
- Verificação Validação de Software
- Lei nº 7 Princípio fundamental da Verificação
Validação - Lei nº 8 Limitação fundamental da Engenharia
de Software - Lei nº 9 Princípio fundamental da Qualidade de
Software - Lei nº 10 Lema fundamental do Teste de Software
- Gestão de Projectos de Software
- Lei nº 11 Princípio da incerteza no Planeamento
de Projectos - Lei nº 12 Dinâmica do Deslizamento de Prazos
- Satisfação de Clientes em Projectos de Software
- Lei nº 13 Paradoxo de Zenon do Software
- Lei nº 14 Princípio da Conservação da
Não-Aceitação
3Lei nº 1 Lei fundamental da Engenharia de
Requisitos
Os requisitos terminam onde começa a liberdade do
implementador.
4Lei nº 2 Lei dos 3 éfes da Gestão de Prioridades
1º) Funcionalidade 2º) Fiabilidade 3º) Eficiência
5Lei nº 3 Princípio 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.
(Jim Gray, Transaction Processing Systems)
6Lei nº 4 Lei de Arquimedes da Arquitectura de
Software
Um sistema de software fundado numa má
arquitectura afundar-se-á sob o peso do seu
próprio sucesso.
7Lei nº 5 Princípio fundamental da Desconfiança
Homem-Máquina
Inteligência artificial é melhor do que estupidez
natural.
8Lei nº 6 - Paradoxo da Redundância
A redundância é fonte de erros, mas também
permite revelar erros.
9Lei nº 7 Princípio fundamental da Verificação
Validação
Um programa que cumpre perfeitamente uma péssima
especificação é um péssimo programa, não um
programa perfeito.
(Cem Kaner, Testing Computer Software)
10Lei nº 8 Limitação fundamental da Engenharia
de Software
É praticamente impossível provar que um programa
está correcto. Corolário Desenvolver software
é conjecturar soluções para problemas.
11Lei nº 9 Princípio fundamental da Qualidade de
Software
Todo o programa tem erros. Além disso, o número
de erros de um programa é dado precisamente pela
fórmula n gt a, em que a é um inteiro qualquer.
()
(leis de Murphy dos computadores)
() Não é possível fixar com segurança um limite
inferior para o nº de erros de um programa.
12Lei nº 10 Lema fundamental do Teste de Software
Os bugs escondem-se nos cantos e reúnem-se nas
fronteiras.
(Boris Beizer, Software Testing Techniques)
13Lei nº 11 Princípio da incerteza no Planeamento
de Projectos
Não é possível fixar simultaneamente o resultado,
custo e duração de um projecto de software.
14Lei nº 12 Dinâmica do Deslizamento de Prazos
Falta cada vez mais tempo para acabar o projecto.
15Lei nº 13 Paradoxo de Zenon do Software
Não basta fazer o que falta fazer para satisfazer
o cliente ().
() A satisfação do cliente é um alvo em
movimento.
16Lei nº 14 Princípio da Conservação da
Não-Aceitação
Os X que falta implementar têm (100-X) de
importância para o cliente.
17Lei nº 15 Lei fundamental da Gestão de
Alterações
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.
18Lei nº 16 Responsabilidade social do Engenheiro
de Software
O mundo pode acabar devido a uma catástrofe. E é
aí que entram os Engenheiros de Software ().
() como causadores, entenda-se.