180 likes | 343 Views
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
E N D
16(24) 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 • 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
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 afundar-se-á 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.