1 tópicos em engenharia de software ii fernando castor prof a.: eliane martins

30
1 Tópicos em Engenharia de Software II Fernando Castor Prof a .: Eliane Martins

Upload: internet

Post on 17-Apr-2015

108 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

1

Tópicos em Engenharia de Software II

Fernando Castor

Profa.: Eliane Martins

Page 2: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

2

Roteiro Introdução e Objetivos Técnica 1: Cálculo de

Refinamentos Técnica 2: Árvore de Falhas Conclusões

Page 3: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

3

Roteiro Introdução e Objetivos Técnica 1: Cálculo de

Refinamentos Técnica 2: Árvore de Falhas Conclusões

Page 4: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

4

Introdução Nos dias atuais, sistemas de

software são empregados em praticamente todos os ramos de nossa sociedade

Complexidade desses sistemas aumenta a cada dia

Cada vez mais, requisitos de dependability são exigidos

Page 5: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

5

Introdução (cont.)

Dependability envolve diversos fatores: Confiabilidade (reliability) Segurança contra acidentes (safety) Disponibilidade (availability) Segurança contra intrusão (security)

Page 6: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

6

Introdução (cont.)

Dependability envolve diversos fatores: Confiabilidade (reliability) Segurança contra acidentes

(safety) Disponibilidade (availability) Segurança contra intrusão (security)

Page 7: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

7

Confiabilidade

“The probability that a system will perform its intended function for a specified period of time under a set of specified environmental conditions”

Nancy G. Leveson

Um sistema é confiável se ele se comporta de acordo com sua

especificação

Page 8: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

8

Objetivos Apresentar uma técnica para assegurar

confiabilidade e outra para analisar segurança contra acidentes Através de uma mesma aplicação exemplo:

algoritmo BubbleSort A segunda técnica será usada para analisar

a confiabilidade do exemplo, devido à sua simplicidade

Ressaltar as vantagens e desvantagens de cada técnica, com relação ao estudo de caso

Page 9: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

9

Roteiro Introdução e Objetivos Técnica 1: Cálculo de

Refinamentos Técnica 2: Árvore de Falhas Conclusões

Page 10: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

10

Refinamento Se um programa prog2 é melhor que

um programa prog1, dizemos que prog2 refina prog1, ou prog1 prog2

Exemplos: Algoritmos de ordenação: inteiros e

números de ponto flutuante ou apenas inteiros?

Altímetro de um avião: faixa de valores ou valor preciso?

Page 11: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

11

Cálculo de Refinamentos Conjunto de leis que visam produzir

programas confiáveis a partir de uma especificação formal Código produzido através do uso dessas leis

garantidamente implementa a especificação Baseado no cálculo de predicados Especificações são programas que não

podem ser executados por um computador:

x :[pre, pos] Programas executáveis = código

Page 12: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

12

Refinamento de Programas

Exemplo:x:[ x > 0 ^ x|2, x > 100]x:[ x > 0, x = 101] ou

x:[x > 100 ^ x < 120]

Pré-condições são enfraquecidas

Pós-condições são fortalecidas

Page 13: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

13

Algoritmo BubbleSort

m := #as;do !(m = 0) { n := 0; do !(n = m – 1) { if(as[n] > as[n+1]) { swap(as[n], as[n+1]) } else { skip } n := n + 1 }; m := m - 1}

Page 14: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

14

Especificação do BubbleSort

var as:seqNZ; con A;

and A = bag as

as:[ ]][][#0:, jasiasjiasji

Page 15: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

15

|]

][,,

## andN:,[var|

1.6

][:

bag and;con Ζ;seq:var

][][#0:,

N

postasnm

asmmnasn; mn

postas

asAAas

jasiasjiasjipost

Refinamento (1)

Page 16: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

16

Refinamento (2)

]\#[ :Prova de Obrigação

#:

3.1

],[:,,

];[:,,

])[][0:#(

])[][#:,(

3.3

1

1

1

asmpospre

asm

postINVasnm

INVasnm

lasmasmlasm

jasiasjiasmjiINV

Page 17: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

17

Refinamento (3)

od

];0,0[:,,

0 do

5.5

'],,\,,[

:Prova de Obrigação

];0,[:,,

1.5

011

000

11

mmINVINVmasnm

m

posposasnmasnmpre

mINVINVasnm

Page 18: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

18

Código resultante:

od

1 :

od

1 :

fi;

skip

]1[][

])1[],[swap(

])1[][if(

1 do

;0:

0 do

;#:

mm

nn

nasnas

nasnas

nasnas

mn

n

m

asm

Page 19: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

19

Características da Técnica Vantagens:

O código gerado garantidamente atende à especificação

Desvantagens: Trabalho muito grande é necessário

para realizar o refinamento Não garante a corretude da

especificação

Page 20: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

20

Roteiro Introdução e Objetivos Técnica 1: Cálculo de

Refinamentos Técnica 2: Árvore de Falhas Conclusões

Page 21: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

21

Algoritmo BubbleSort (versão implementada)

int m = as.length-1;int n = 0;while(0<m) { while(n<m) { if(as[n] > as[n+1]) { int t = as[n+1]; as[n+1] = as[n]; as[n] = t; } n++; } n=0; m--;}

return as;

Page 22: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

22

Árvore de Falhas para o BubbleSort

Array desordenado

While externo não executado

While externo executado m

vezes

OR

1. m 0 na primeira iteração

2. 0 as.length 1

3. Se as.length = 0, não há elementos para ordenar

4. Se as.length = 1, o array está ordenado

5. Contradição

(...)

Page 23: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

23

Árvore de Falhas para o BubbleSort (2)

AND

Um sub-conjunto das iterações não ordena o

array corretamente

0<m antes o while externo

(...)

(...)

Page 24: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

24

OR

While interno não executado

While interno executado m-1

vezes para cada valor de m

Árvore de Falhas para o BubbleSort (3)

(...)

1. m n, na primeira iteração

2. n = 0, na primeira iteração

3. 0 < m

4. Por 2 e 3, n < m, na primeira iteração

5. Por 1 e 4, Contradição

(se o laço mais externo é executado pelo menos uma vez, o mais interno também é)

(...)

Page 25: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

25

AND

Um sub-conjunto das iterações não coloca o

maior elemento de as[0..m] na posição m

n<m antes o while interno

(...)

(...)

Árvore de Falhas para o BubbleSort (4)

Page 26: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

26

Árvore de Falhas para o BubbleSort (5)

OR

Primeira iteração:

n = 0 ^ v[0] > v[1] => swap(v[0], v[1])

(n-1)-ésima iteração:

n > 0 ^ v[n] > v[m] => swap(v[n], v[m])

(...)

Primeira iteração:

n > 0 ^ v[n] < v[m] => skip

(...)

Indutivamente, percebe-se que a

situação

não ocorre

Um sub-conjunto das iterações não (...)

Page 27: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

27

Características da Técnica Vantagens:

Pode ser usada tanto para analisar confiabilidade quanto segurança contra acidentes

Mais fácil de aplicar e entender do que uma técnica inteiramente formal

Representação gráfica Desvantagens:

Não garante a corretude da especificação Pouco empregada, no contexto de software Não provamos que o programa atende à

especificação

Page 28: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

28

Roteiro Introdução e Objetivos Técnica 1: Cálculo de

Refinamentos Técnica 2: Árvore de Falhas Conclusões

Page 29: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

29

Conclusões Técnicas que analisar e garantir

confiabilidade e segurança contra acidentes são importantes, mas caras

Suporte de ferramentas pode amenizar esse custo

Técnicas formais são extremamente trabalhosas

Árvores de falhas são mais práticas, mas fornecem menos garantias

Page 30: 1 Tópicos em Engenharia de Software II Fernando Castor Prof a.: Eliane Martins

30

Referências T. Anderson e P. A. Lee. Fault Tolerance: Principles and

Practice. Prentice-Hall, 2a edição, 1990. S. Coutinho, T. Reis e A. L. Cavalcanti. Uma ferramenta

educacional de refinamentos. Anais do XIII Simpósio Brasileiro de Engenharia de Software - Sessão de Ferramentas, páginas 61-64, 1999.

N. Leveson. Software Safety: Why, What and How. ACM Computing Surveys, 18(2):125-164, junho 1986.

C. Morgan. Programming from Specifications. Prentice-Hall, 2a edição, 1998.

J. D. Reese e N. Leveson. Software Deviation Analysis: A “Safeware” Technique. 1996

Safeware Engineering Corporation. Verification of Safety. Disponível para download em http://www.safeware-eng.com.