Especificação de Software

Linguagens de Especificação

Seegmüller

Linguagem de implementação != linguagem de especificação

Lowry

divergência das linguagens se deve à falta de boas técnicas de otimização

Feldman

processo descritivo

linguagem de programação

x

descrição de estados

X*X = z

Perlis

questões de programação giram em torno de uma linguagem

facilita a vida dos desenvolvedores

Falkoff

Há espaço para duas linguagens

linguagem formal de programação

linguagem natural

Schwartz:

Definição de dados separado dos procedimentos

Linguagens de Implementação

Afetam engenharia de software

definem nossos raciocínios

Wirth

Objeção principal de Linguagens de implementação que são distantes do hardware (alto nível)

Longe das realidades das maquinas

Não muito eficientes

Linguagens que refletem propriedades do hardware

Podem desenvolver programa eficientes

LPs devem Encontrar um meio-termo

Mais próxima possivel da maquina, mas independente dela

Dijskstra

Naturalidade X Eficiencia das LP

maior naturalidade não significa menor eficiencia

Falkoff

Mudança de ponto de vista

Menos dependente de usuario, maior eficiencia

Preconceito com LPs simples

Simplicidade afasta programadores

Acham que eles podem desenvolver uma LP própria

Definição de um sistema

Possíveis passos

1. Descrição informal do sistema

2. Listar funções e objetos externos

3. Formalizar a descrição

4. Remover contradições e minimizar complexidade

se o resultado é insatisfatório, retorne para 1

5.Definir primeiras implementação

Usar uma linguagem de especificação de software (SSL)

6.Colocar as implementações em modulos

7. Simular os módulos implementados

Se não satifatorio,redefinir os modulos, volte para 6

8. refinamento da implementação

9. simular o novo refinamento

retornar a passos de implementação de módulo e refinamento se não satisfatório

10. tomar último refinamento como especificação da implementação do sistema

Refutações

Engeli

Não funciona para sistemas grandes

Desnecessário para pequenos sistemas

Oestreicher:

Impossibilidade de voltar ao passo 1 caso necessario

Scalzi:

Necessita descrição completa do sistema antes de implementar