Grupo de Interesse em Engenharia de Software
FEUP, Fevereiro de 2006 (v.0.2)
Índice
•
Engenharia de Requisitos de Software
–
–
•
Desenho de Software
–
–
–
–
•
– Princípio fundamental da Arquitectura de Software
– Lei de Arquimedes da Arquitectura de Software
– Princípio fundamental da Desconfiança Homem-Máquina
- Paradoxo da Redundância
Lei
Lei
Lei
Lei
nº
nº
nº
nº
7 – Princípio fundamental da Verificação & Validação
8 – Limitação fundamental da Engenharia de Software
9 – Princípio fundamental da Qualidade de Software
10 – Lema fundamental do Teste de Software
Lei nº 11 – Princípio da incerteza no Planeamento de Projectos
Lei nº 12 – Dinâmica do Deslizamento de Prazos
Lei nº 13 – Paradoxo de Zenon do Software
Lei nº 14 – Princípio da Conservação da Não-Aceitação
Alteração de Software
–
•
3
4
5
6
Satisfação de Clientes em Projectos de Software
–
–
•
nº
nº
nº
nº
Gestão de Projectos de Software
–
–
•
Lei
Lei
Lei
Lei
Verificação & Validação de Software
–
–
–
–
•
Lei nº 1 – Lei fundamental da Engenharia de Requisitos
Lei nº 2 – Lei dos 3 éfes da Gestão de Prioridades
Lei nº 15 – Lei fundamental da Gestão de Alterações
Responsabilidade Social e Profissional do Engenheiro de Software
–
Lei nº 16 – Responsabilidade social do Engenheiro de Software
Lei nº 1 – Lei fundamental da
Engenharia de Requisitos
Os requisitos terminam onde começa
a liberdade do implementador.
Lei nº 2 – Lei dos 3 éfes da Gestão
de Prioridades
1º) Funcionalidade
2º) Fiabilidade
3º) Eficiência
Lei 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)
Lei nº 4 – Lei de Arquimedes da
Arquitectura de Software
Um sistema de software fundado
numa má arquitectura afundarse-á sob o peso do seu próprio
sucesso.
Lei nº 5 – Princípio fundamental da
Desconfiança Homem-Máquina
Inteligência artificial é melhor do
que estupidez natural.
Lei nº 6 - Paradoxo da
Redundância
A redundância é fonte de erros, mas
também permite revelar erros.
Lei 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)
Lei 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.
Lei 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 > 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.
Lei 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)
Lei 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.
Lei nº 12 – Dinâmica do
Deslizamento de Prazos
Falta cada vez mais tempo
para acabar o projecto.
Lei 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.
Lei 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.
Lei 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.
Lei 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.
Download

Hoare-style program verification