oo-sc (meyer) desenho por contrato construindo software confiável

15
OO-SC (Meyer) - Cap 11 1 OO-SC (MEYER) Desenho por Contrato Construindo software confiável

Upload: amanda-chen

Post on 30-Dec-2015

20 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: OO-SC (MEYER) Desenho por Contrato Construindo software confiável

OO-SC (Meyer) - Cap 11 1

OO-SC (MEYER)Desenho por Contrato

Construindo software confiável

Page 2: 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”

Page 3: OO-SC (MEYER) Desenho por Contrato Construindo software confiável

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

Page 4: OO-SC (MEYER) Desenho por Contrato Construindo software confiável

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!

Page 5: OO-SC (MEYER) Desenho por Contrato Construindo software confiável

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”

Page 6: OO-SC (MEYER) Desenho por Contrato Construindo software confiável

OO-SC (Meyer) - Cap 11 6

Por exemplo:

{x >= 9} x := x + 5 {x >= 13}___________________________________

P >> Pré-condição

Q >> Pós-condição

Page 7: OO-SC (MEYER) Desenho por Contrato Construindo software confiável

OO-SC (Meyer) - Cap 11 7

Condições fortes e fracas:

Sinecura 1:{False} A {…}

Sinecura 2:{…} A {True}

Page 8: OO-SC (MEYER) Desenho por Contrato Construindo software confiável

OO-SC (Meyer) - Cap 11 8

Asserções:

N > 0; X /= Void

“;” >> significa and

Positive: n>0Not_void: x /= Void

Page 9: OO-SC (MEYER) Desenho por Contrato Construindo software confiável

OO-SC (Meyer) - Cap 11 9

Pré-condições e pós-condições

Require

Ensure

Page 10: OO-SC (MEYER) Desenho por Contrato Construindo software confiável

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

Page 11: OO-SC (MEYER) Desenho por Contrato Construindo software confiável

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

Page 12: OO-SC (MEYER) Desenho por Contrato Construindo software confiável

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

Page 13: OO-SC (MEYER) Desenho por Contrato Construindo software confiável

OO-SC (Meyer) - Cap 11 13

remove is-- Remover elemento do Topo

requirenot empty

do….

ensurenot fullcount = old count - 1

endend

Page 14: OO-SC (MEYER) Desenho por Contrato Construindo software confiável

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

Page 15: OO-SC (MEYER) Desenho por Contrato Construindo software confiável

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