Qualidade de Software

Prevenção de erros

Formalidade no desenvolvimento

Semelhanças com a matemática

Técnicas existentes inadequadas

Necessária para o desenvolvimento
de novas técnicas de verificação

Funções mais sofisticadas

Mais difíceis de avaliar

Causam os problemas de software mais graves

Testes

Métodos existentes são exaustivos

Aplicados somente a alguns trechos do código

Métodos não-práticos

Certos tipos de erro não podiam ser identificados

Aprendizado da programação

Lógica de programação > Linguagens de programação

Reeducação de programadores mal habituados

Personalidades

Edsger Dijkstra

Edsger Dijkstra

1930 - 2002

Construção de
compiladores

Algoritmos de grafos

Sistemas Operacionais

Teoria da Ciência da Computação

Niklaus Wirth

Niklaus Wirth

1934 - Presente

Pascal

Desenvolvimento de
linguagens de programação

Bernard Galler

Bernard Galler

1928 - 2006

Ministrou o primeiro
curso de programação

Reunião de Garmish

Problemas técnicos de software

Produzir softwares de alta qualidade

Questões acerca dos erros

Softwares grandes, muitos erros

Qual o porque dos erros?

Grande número de erros = sistema problemático?

Relação entre o número de erros e as atualizações

Logo após uma atualização
muitos erros são reportados

Logo antes de uma atualização,
poucos erros são reportados

Que tipo de erros?

Qual a frequência dos erros?

A frequência é maior em módulos supervisores?

Quem gera mais erros?

Programadores inexperientes

Programadores experientes

Por quanto tempo os erros permanecem no sistema?

Taxa de erros não é constante, mas crescente

Verificação de erros

Debugging

Análise em módulos

Realizada pelo programador

Métodos de análise

Durante a execução

Após a execução

Estrutura da linguagem deve
facilitar o desenvolvimento

Testes

Análise do sistema como um todo

Realizada por testadores

Falta de conhecimento do testador
sobre o software é indicada

Métodos automáticos(computador
executando as operações)

Reestruturação de código

Interpretação contextual

Documentação

Reuso de código

Verificação de irregularidades

Surgimento do conceito de Programação orientada a testes