1 6 (2 4 ) Leis Fundamentais da Engenharia de Software

18
1 1 6 6 (2 (2 4 4 ) ) Leis Leis Fundamentais da Fundamentais da Engenharia de Engenharia de Software Software João Pascoal Faria Grupo de Interesse em Engenharia de Software FEUP, Fevereiro de 2006 (v.0.2)

description

1 6 (2 4 ) Leis Fundamentais da Engenharia de Software. João Pascoal Faria. Grupo de Interesse em Engenharia de Software FEUP, Fevereiro de 2006 (v.0.2). Índice. Engenharia de Requisitos de Software Lei nº 1 – Lei fundamental da Engenharia de Requisitos - PowerPoint PPT Presentation

Transcript of 1 6 (2 4 ) Leis Fundamentais da Engenharia de Software

Page 1: 1 6 (2 4 )  Leis Fundamentais da Engenharia de Software

1166 (2(244) ) Leis Fundamentais Leis Fundamentais da Engenharia de da Engenharia de SoftwareSoftware

João Pascoal Faria

Grupo de Interesse em Engenharia de SoftwareFEUP, Fevereiro de 2006 (v.0.2)

Page 2: 1 6 (2 4 )  Leis Fundamentais da Engenharia de Software

Í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

• Alteração de Software– 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

Page 3: 1 6 (2 4 )  Leis Fundamentais da Engenharia de Software

Lei nº 1 – Lei fundamental da Engenharia de Requisitos

Os requisitos terminam onde começa a liberdade do implementador.

Page 4: 1 6 (2 4 )  Leis Fundamentais da Engenharia de Software

Lei nº 2 – Lei dos 3 éfes da Gestão de Prioridades

1º) Funcionalidade2º) Fiabilidade3º) Eficiência

Page 5: 1 6 (2 4 )  Leis Fundamentais da Engenharia de Software

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)

Page 6: 1 6 (2 4 )  Leis Fundamentais da Engenharia de Software

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

Page 7: 1 6 (2 4 )  Leis Fundamentais da Engenharia de Software

Lei nº 5 – Princípio fundamental da Desconfiança Homem-Máquina

Inteligência artificial é melhor do que estupidez natural.

Page 8: 1 6 (2 4 )  Leis Fundamentais da Engenharia de Software

Lei nº 6 - Paradoxo da Redundância

A redundância é fonte de erros, mas também permite revelar erros.

Page 9: 1 6 (2 4 )  Leis Fundamentais da Engenharia de Software

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)

Page 10: 1 6 (2 4 )  Leis Fundamentais da Engenharia de 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.

Page 11: 1 6 (2 4 )  Leis Fundamentais da Engenharia de Software

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.

Page 12: 1 6 (2 4 )  Leis Fundamentais da Engenharia de Software

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)

Page 13: 1 6 (2 4 )  Leis Fundamentais da Engenharia de Software

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.

Page 14: 1 6 (2 4 )  Leis Fundamentais da Engenharia de Software

Lei nº 12 – Dinâmica do Deslizamento de Prazos

Falta cada vez mais tempo para acabar o projecto.

Page 15: 1 6 (2 4 )  Leis Fundamentais da Engenharia de Software

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.

Page 16: 1 6 (2 4 )  Leis Fundamentais da Engenharia de Software

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.

Page 17: 1 6 (2 4 )  Leis Fundamentais da Engenharia de Software

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.

Page 18: 1 6 (2 4 )  Leis Fundamentais da Engenharia de Software

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.