oo-sc (meyer) desenho por contrato construindo software confiável
DESCRIPTION
OO-SC (MEYER) Desenho por Contrato Construindo software confiável. Componentes da Confiabilidade:. Correção : “habilidade de se comportar de acordo com as especificações” Robustez : “habilidade de reagir a situações não previstas nas especificações”. Mecanismos de Confiabilidade. Estrutura: - PowerPoint PPT PresentationTRANSCRIPT
OO-SC (Meyer) - Cap 11 1
OO-SC (MEYER)Desenho por Contrato
Construindo software confiável
OO-SC (Meyer) - Cap 11 2
Componentes da Confiabilidade:
1. Correção:“habilidade de se comportar de acordo com as especificações”
2. Robustez:“habilidade de reagir a situações não previstas nas especificações”
OO-SC (Meyer) - Cap 11 3
Mecanismos de Confiabilidade
Estrutura: Manter o mais simples possível Limitar comunicação entre módulos
Elegância e legibilidade Software não é apenas escrito; é lido e
reescrito muitas vezesGerência de memória (coleta do lixo)Tipagem forte e estática
OO-SC (Meyer) - Cap 11 4
Sobre “correção de software”Correção é uma noção relativa!
X := Y + 1
A: X e Y possuem valores diferentes!B: X tem valor negativo!
Depende da ESPECIFICAÇÃO!
OO-SC (Meyer) - Cap 11 5
Como expressar uma especificação
Fórmula de Correção:
{P} A {Q}Leia-se:“Em qualquer execução de A,
iniciando em um estado onde P é válido, terminará em um estado em que Q será válido”
OO-SC (Meyer) - Cap 11 6
Por exemplo:
{x >= 9} x := x + 5 {x >= 13}___________________________________
P >> Pré-condição
Q >> Pós-condição
OO-SC (Meyer) - Cap 11 7
Condições fortes e fracas:
Sinecura 1:{False} A {…}
Sinecura 2:{…} A {True}
OO-SC (Meyer) - Cap 11 8
Asserções:
N > 0; X /= Void
“;” >> significa and
Positive: n>0Not_void: x /= Void
OO-SC (Meyer) - Cap 11 9
Pré-condições e pós-condições
Require
Ensure
OO-SC (Meyer) - Cap 11 10
Indexingdescription: “Stacks: estruturas de fornecidas numa
disciplina de First IN First OUT”Class STACK [G] feature -- Access
count: INTEGER-- Número de elementos do Stack
item: G is-- Elemento Topo
requirenot empty
do…end
OO-SC (Meyer) - Cap 11 11
Feature -- Relatório de statusempty: BOOLEAN is
-- O stack está vazio?do … end
full: BOOLEAN is-- O stack está cheio?do … end
OO-SC (Meyer) - Cap 11 12
Feature – Alterar elementoput (x: G) is
-- Adicionar x no Toporequire
not fulldo
….ensure
not emptyitem = xcount = old count + 1
end
OO-SC (Meyer) - Cap 11 13
remove is-- Remover elemento do Topo
requirenot empty
do….
ensurenot fullcount = old count - 1
endend
OO-SC (Meyer) - Cap 11 14
Desenho por ContratoObrigações Benefícios
(satisfazer pré-condições)
Apenas chama PUT (x) em um Stack não cheio
(Das pós-condições)
Obtem o Stack Atualizado; não
Vazio; X no topo; Contador + 1
(Satisfaz pós-condições)
Atualiza o stack; não Vazio; Contador - 1
Cliente
Servidor
(Das pré-condições)
Processamento Simples devidoStack não cheio
OO-SC (Meyer) - Cap 11 15
Invariantes:Indexing
description: “Stacks: estruturas de fornecidas numa …”
Class STACK [G] feature -- Access
count: INTEGER
-- Número de elementos do Stack
item: G is
require
….
invariant
count_non_negative: 0 <= count
count_bounded: count <= capacity
empty_if_no_elements: empty = (count=0)
end -- class STACK