A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Tópicos em Engenharia de Software II

Apresentações semelhantes


Apresentação em tema: "Tópicos em Engenharia de Software II"— Transcrição da apresentação:

1 Tópicos em Engenharia de Software II
Fernando Castor Profa.: Eliane Martins

2 Roteiro Introdução e Objetivos Técnica 1: Cálculo de Refinamentos
Técnica 2: Árvore de Falhas Conclusões

3 Roteiro Introdução e Objetivos Técnica 1: Cálculo de Refinamentos
Técnica 2: Árvore de Falhas Conclusões

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

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

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

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

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

9 Roteiro Introdução e Objetivos Técnica 1: Cálculo de Refinamentos
Técnica 2: Árvore de Falhas Conclusões

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?

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

12 Refinamento de Programas
Exemplo: x:[ x > 0 ^ x|2, x > 100] x:[ x > 0, x = 101] ou x:[x > 100 ^ x < 120] Exemplo do altímetro do avião para ilustrar o fortalecimento da pós e enfraquecimento da pré. No caso de pré = true, falar de um sensor de propósito geral que mede tanto altitude quanto profundidade. Pré-condições são enfraquecidas Pós-condições são fortalecidas

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

14 Especificação do BubbleSort
var as:seqNZ; con A; and A = bag as as:[ ]

15 Refinamento (1)

16 Refinamento (2)

17 Refinamento (3)

18 Código resultante:

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

20 Roteiro Introdução e Objetivos Técnica 1: Cálculo de Refinamentos
Técnica 2: Árvore de Falhas Conclusões

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;

22 Árvore de Falhas para o BubbleSort
Array desordenado OR While externo não executado While externo executado m vezes m 0 na primeira iteração 0 as.length 1 Se as.length = 0, não há elementos para ordenar Se as.length = 1, o array está ordenado Contradição (...)

23 Árvore de Falhas para o BubbleSort (2)
(...) AND 0<m antes o while externo Um sub-conjunto das iterações não ordena o array corretamente (...)

24 Árvore de Falhas para o BubbleSort (3)
(...) OR While interno não executado While interno executado m-1 vezes para cada valor de m m n, na primeira iteração n = 0, na primeira iteração 0 < m Por 2 e 3, n < m, na primeira iteração Por 1 e 4, Contradição (se o laço mais externo é executado pelo menos uma vez, o mais interno também é) (...)

25 Árvore de Falhas para o BubbleSort (4)
(...) AND n<m antes o while interno Um sub-conjunto das iterações não coloca o maior elemento de as[0..m] na posição m (...)

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]) Indutivamente, percebe-se que a situação não ocorre Um sub-conjunto das iterações não (...) Primeira iteração: n > 0 ^ v[n] < v[m] => skip

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

28 Roteiro Introdução e Objetivos Técnica 1: Cálculo de Refinamentos
Técnica 2: Árvore de Falhas Conclusões

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

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): , 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


Carregar ppt "Tópicos em Engenharia de Software II"

Apresentações semelhantes


Anúncios Google