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

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

1 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Validação Formal de Sistemas de Software Prof. Edward Hermann Haeusler Depto de.

Apresentações semelhantes


Apresentação em tema: "1 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Validação Formal de Sistemas de Software Prof. Edward Hermann Haeusler Depto de."— Transcrição da apresentação:

1 1 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Validação Formal de Sistemas de Software Prof. Edward Hermann Haeusler Depto de Informática PUC-RIO

2 2 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF - Aplicação da Ciência e Matemática através da qual as propriedades da matéria e as fontes de energia são tornadas úteis às pessoas (Dic. Merriam-Webster, 2001) ===> Projeto e Manufatura de Sistemas Complexos - Desenvolvimento e Aplicação Sistemática de Modelos de Comprovada Eficácia gerando Soluções Tecnológicas para Problemas da Humanidade - Engenharia é a prática da aplicação segura e econômica das leis científicas que governam as forças e materiais da Natureza, através da organização, design e construção, para o benefício da humanidade. S. E. Lindsay (1920) - Engineering is the application of math and science to create something of value from our natural resources. (IEEE- 2002) Engenharia

3 3 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Construção de um artefato para uso pela Sociedade Levantamento das Características Desejadas Artefato Validação ==> Métodos e Processos de Fabricação de Artefatos - É mais econômico validar um processo de fabricação de um artefato que um artefato individualmente. ==> Engenharia !!! Matemática e Teorias Científicas FABRICAÇÃO

4 4 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Construindo uma Ponte Cálculos p/ Ponte Espec. -Projeto (template) -Material -Profund. -Ventos -Correnteza. Implementação -Fluxo da Obra - $$$ - Carga -Recursos humanos -Projeto Físico Física Matemática Química Engenharia

5 5 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Engenharia de Software X Engenharias tradicionais ==> As engenharias tradicionais baseiam-se fortemente em Frameworks para construção de tipos bem específicos e determinados de artefatos (aviões, carros, pontes, edifícios, navios, etc).

6 6 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Casos famosos de softwares complexos que não funcionaram a contento - Explosão do foguete Ariadne (projeto europeu) poucos segundos após seu lançamento devido a falha de programação. - Sistema de triagem/controle de bagagem do aeroporto internacional de Denver (EUA) atrasou a inauguração do aeroporto. Custo do sistema (193 milhões $$ ) : - Inauguração estava prevista para Out/ Em Junho/1994 o sistema ainda não estava funcionando, mas custava $$ !! - No começo de 1995 um controle MANUAL de bagagem foi instalado para que o aeroporto pudesse ser inaugurado (com atraso de mais de um ano) - O Therac-25, um equipamento de radioterapia controlado por computador, aplicou doses fatais de radiação em alguns pacientes de câncer. - Quando decidiram testar o subsistema de desligamento de emergência da Sizewell-B, uma usina nuclear na Inglaterra, este falhou em mais de 50% das vezes. Não conseguiram en- contrar a razão da falha nas linhas de código.

7 7 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF O Conhecimento básico em Engenharia de Software compreende : ==> Lógica Matemática: Trata das leis da argumentação (provas) formal. ==> Álgebra Descreve leis de construção de objetos e determina a identidade entres estes. ==> Complexidade de Algoritmos e Computabilidade Escopo e Limitações da noção de computável. ==> Experiência prévia com modelos de desenvolvimento de Software. Apresenta métodos e técnicas de desenvolvimento em base empírica.

8 8 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Métodos Formais e Arquitetura de Software Porque Arquitetura de Software é essencial para a validação de sistemas ??

9 9 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Validação Formal e Arquitetura de Software - Validação Formal de Software x Testes - Sistemas Reativos e Transformacionais - Como o projeto se reflete na etapa de validação - Arquitetura de Software - Adicionalmente o tempo aos requisitos funcionais

10 10 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Requisitos Especificação Implementação Testes Verificação Verificação Formal - Um passo de verificação pode cobrir todo possível comporta- mento do sistema - Verificação antes da implementa- ção diminui o custo $$ !! - É especialmente importante quando o comportamento é complexo.

11 11 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Validação x Prova de Correção Mundo Real Espec. Formal cenários resultado Espec. Formal A Espec. Formal B Prova que B tem as propriedades que A também tem. Verifica a adequação da Especificação Formal a Situações Reais

12 12 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Métodos Formais - Métodos Formais apresentam frameworks mentais, notações, e, métodos sistemáticos para o projeto, documentação, e análise de sistemas computação. - Os principais benefícios da aplicação de métodos formais é permitir que algumas questões sobre o projeto possam ser respondidas por avaliação simbólica(e.g. prova de teorema ou verificação de modelo) - A avaliação simbólica pode ser usada para debugging e inspeção do projeto, bem como para verificação a posteriori. - Pode ser comparado à forma com que cálculo estrutural é usado no projeto de construções, mecânica computacional de fluídos é usada no projeto de aeronaves, etc - Bons para certificação e garantia de qualidade.

13 13 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Técnicas Formais para a Validação de Sistemas - Model Cheking (verificação de modelos) - Theorem Proving (prova de teoremas) Verificar se certas propriedades valem em um certo modelo Provar propriedades em uma teoria sobre o sistema Podem ser usados como métodos complementares

14 14 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Model Checking: O que é ? - Especificar - O sistema como um sistema de transição (finito em geral). - Uma propriedade como uma sentença em uma linguagem de consulta. - Estabelecer que o sistema é um modelo da sentença sistema |= sentença Obs: Tarefa realizada por varredura no espaço de busca - Usualmente não há necessidade de teorias auxiliares - Normalmente, as únicas suposições dizem respeito às propriedades dinâmicas do sistema (branching vs. linear time, fairness, liveness) - Funciona melhor com sistemas voltados ao controle e com um pequeno espaço de estados

15 15 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Sistema Transformacional Sistema Reativo tempo entradas saídas tempo entradas e saídas

16 16 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF - Sistemas Reativos podem ser entendidos como um conjunto de threads concorrentes recebendo sinais de sensores no ambiente, e, atuando sobre mecanismos que produzem a mudança desejada no ambiente. - Sistemas embutidos (dvd, injetor de combustível, celular) são normalmente reativos sensores atuadores condic. da entrada condic. saída interface entrada interface saída Processador

17 17 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Propriedades que são verificadas em S. Reativos (CMP1995) Segurança (Safety) : algo ruim nunca acontece se uma resposta é dada então a mesma está correta Toda vez que a porta do avião abre, há uma escada. Não há ``deadlocks'' Progresso (Liveness) : algo bom acontece Garantia : algo pode acontecer. Ex: O vídeo pode ser repetido Obrigação : algo sempre acontece. Ex: O motor sempre funciona. Atividade : sempre a postos. Ex: Toda requisição é atendida. Persistência : Uma vez a porta fechada, sempre é possível abrí-la Reatividade = Atividade & Persistência Oportunidade (Fairness) : se algo pode acontecer então ocorre infinitas vezes se algo pode acontecer infinitas vezes então acontece infinitas vezes

18 18 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Especificação (modelo) de sistemas reativo Threads/Processos + Composição - Abordagens : - Algébra + Lógica (CCS/Pi-calculus + -calculus) - Modelo + Lógica (Mundos Possíveis + Lógica Temporal)

19 19 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Mundos Possíveis (Kripke) P,Q P P Sempre P AP

20 20 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF PUQ P,Q Outras modalidades temporais PUQ P until Q P,Q NP P,Q NP Next P EP P,Q EP Eventualmente P P

21 21 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF O Until e o Next são suficientes - true U P EP - AP ¬ E ¬ P

22 22 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Threads e Máquinas de Estado Finitas - Cada Thread pode ser modelada por uma MEF MEF 3 Est. 2 Est. 1 cond/act1 act2 ev1 ev2 3 2c act2 1 ev2 act1 ev2 ev1 3 2c act2 3 1 ev2 act1 3 ev2 3 ev1 3 2c act2 3 1 ev2 act1 3 ev2 3 ev1 3 2c act2 3 1 ev2 act1 3 ev2 3 ev1 Comportamento da MEF

23 23 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF enter code check code unlock door delay count attempts sound alarm valid code/count = 0 invalid code/ code entered timeout count = = 3 /count = 0 Alarme de Cofre count ++

24 24 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Model Checking - Usualmente se usa estrutura de tempo ramificado (branching time) e CTL como linguagem lógica de consulta (CTL = Computational Tree Logic) - CTL : CTL apresenta quantificação sobre caminhos e sobre estados - AG(p) : p é verdade em todo estado ao longo de cada caminho. - AF(p) : p é verdade em algum estado ao longo de cada caminho. - EG(p) : p é verdade em todo estado ao longo de algum caminho. - EF(p) : p é verdade em algum estado ao longo de algum caminho. Inclui next e until e invariantes fair (O modelo só é verificado para os caminhos onde a condição de Fairness vale em uma quantidade infinita de estados)

25 25 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Threads and Finite State Machines - Each thread can be modeled by a finite state machine enter code check code unlock door delay count attempts sound alarm valid code/count = 0 code entered timeout count = = 3 /count = 0 invalid code/ count ++

26 26 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF - Checking AG(enter_code & valid_code ===> AF(unlock_door)) results in true - Checking AG(enter_code ===> AF(unlock_door)) results in the following computation path as a counter-example enter code check code count attempts 3 times sound alarm enter code check code count attempts 3 times

27 27 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF The whole system as an async. product of state machines X = State Explosion !!!!!!

28 28 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Semáforo 1 0 fora da região crítica entrando na região crítica saindo fora da região crítica entrando na região crítica saindo !semaforo entrando saindo processo1 processo2 !semaforo

29 29 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF - Considere uma pizzaria com 3 fornos. Por razões de segurança, somente dois fornos podem ser abertos por vez. Mesmo assim, toda vez que dois fornos são abertos, para evitar sobrecarga, o terceiro forno deve estar em pré-aquecimento. - Uma pizza leva 30 min para estar pronta, após 5 minutos de pré-aquecimento, e, se o tempo passar de 30 min a pizza ficará queimada. Problema => Projetar o sistema de controle de abertura de portas de forno e gerenciamento da fabricação de pizzas

30 30 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF fechadoabertopre_aquec vai_assar assando vai_abrir xaberto&yaberto !xaberto& yaberto passou30 & !sem_vai_abrir !passou30 !passou5 v (passou5 & !sem_vai_assar) passou5 & !sem_vai_assar xaberto& yaberto !(xaberto& yaberto) !(aberto(1)&aberto(2)&aberto(3)) // só 2 fornos abertos por vez !(assando&passou30) // não pode queimar pizza !(aberto(1)&aberto(2)&assando(3)) // não pode !(aberto(1)&assando(2)&aberto(3)) // ter !(assando(1)&aberto(2)&aberto(3)) // sobrecarga Região Estado Crítica passou30 & sem_vai_abrir !sem_vai_abrir sem_vai_abrir

31 31 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF MODULE main VAR sem_vai_assar : boolean ; sem_vai_abrir : boolean ; forno1 : process forno(sem_vai_assar,sem_vai_abrir,forno2.state,forno3.state) ; forno2 : process forno(sem_vai_assar,sem_vai_abrir,forno1.state,forno3.state) ; forno3 : process forno(sem_vai_assar,sem_vai_abrir,forno1.state,forno2.state) ; ASSIGN init(sem_vai_assar) := 0 ; init(sem_vai_abrir) := 0 ; SPEC !EF(forno1.state = aberto & forno2.state = aberto & forno3.state = aberto) & !EF(forno1.state = aberto & forno2.state = aberto & forno3.state = assando) & !EF(forno1.state = aberto & forno2.state = assando & forno3.state = aberto) & !EF(forno1.state = assando & forno2.state = aberto & forno3.state = aberto) & !EF(forno1.state = assando & forno1.passou30 = 1 & forno1.running=1 & EX(forno1.state = assando)) & !EF(forno2.state = assando & forno2.passou30 = 1 & forno2.running=1 & EX(forno2.state = assando)) & !EF(forno3.state = assando & forno3.passou30 = 1 & forno3.running=1 & EX(forno3.state = assando)) Em SMV

32 32 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF MODULE forno(sem_vai_assar,sem_vai_abrir,xstate,ystate) VAR state : { fechado, aberto, pre_aquec, assando, vai_abrir, vai_assar } ; passou5 : boolean; passou30 : boolean; ASSIGN init(state) := fechado ; next(state) := case state = fechado & ! sem_vai_abrir : vai_abrir; state = aberto : { aberto, pre_aquec } ; state = pre_aquec & passou5 & ! sem_vai_assar : vai_assar ; state = assando & passou30 & ! sem_vai_abrir : vai_abrir ; state = assando & passou30 : fechado ; state = vai_assar & (xstate = aberto) & (ystate = aberto) : pre_aquec ; state = vai_assar : assando ; state = vai_abrir & ((xstate = aberto) & (ystate = aberto) | ((xstate = aberto & ystate = assando) | (ystate = aberto & xstate = assando))): fechado ; state = vai_abrir : aberto ; 1 : state ; esac ; next(sem_vai_assar) := case state = vai_assar : 1 ; state = pre_aquec | assando : 0 ; 1 : sem_vai_assar ; esac ; next(sem_vai_abrir) := case state = vai_abrir : 1 ; state = fechado | aberto : 0 ; 1 : sem_vai_abrir ; esac ; next(passou30) := case 1: { 0, 1 } ; esac ; next(passou5) := case 1: { 0, 1 } ; esac ; FAIRNESS running

33 33 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Types of Real-Time embedded systems Hard - where not meeting a deadline is a failure Soft - where deadline can be missed and the system may still work if it is possible to recover Slow - the system will have to respond within seconds Fast - the system has to respond within a second (typically within mili- or microseconds

34 34 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Characteristics of RT-Reactive Systems response time deadline - The system must respond to the environment within a specified time after the input has been recognized validity of the data - The inputs may become obsolete with time. The interval for which input data is valid must be take into account for proc. requirements. periodic execution - Reactive systems tend to collect data at predetermined time intervals.

35 35 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Timed Automata as a model for RT-Reactiveness 3 Est. 2 Est. 1 C >= 2,4 start reset - Clock-variables and time/delay conditions for enabling transitions - Can be enriched with other data-type variables (global vars) - Communication by means of channels (CSP-style) req? v[i]:= C C := 0 i++ i := 0 req! T <= r

36 36 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF

37 37 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Theorem Proving: O que é ? - Especificar - O sistema (em algum nível adequado de abstração) - Propriedades requeridas do sistema. - Suposições (restrições de ambiente, usuário, etc) - Teorias sobre os tipos de dados envolvidos - E provar que: Teorias+Suposições+Sistema |-- requisitos - Variação: - Provar que a implementação é um refinamento da especificação - Funciona melhor em sistemas com intenso tratamento de dados

38 38 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Teoria sobre os Números Naturais x(s(x) 0) x y( s(x) = s(y) x = y) y(y 0 x( s(x) = y) ) (P(0) & x(P(x) P(s(x)))) xP(x) Especificação Lógica de um Tipo de dado Teoria |-- Prop

39 39 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Semântica Axiomática de uma LP

40 40 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Prova de correção de código Teoria

41 41 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Architectural connectors - Sequential Composition - Parallel synchronous composition - Parallel asynchronous composition * - Behavior inheritance - Factorization of common Behaviors Software Architecture = components + structure

42 42 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF An Example: Harel Statecharts - Conditions and Actions - Design Hierarchy - On-entry, on-exit during actions - Independent Threads of Control - Visual synchronization/complex Transition (as in Petri-nets) ?condition !action

43 43 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Pattern used in ARTS (Haeusler & Fontoura 99) - Horizontal Composition M S b_off b_on Brake Car Off On t_off t_on L unlink link Motor sync(b_off,link) sync(b_on,unlink)

44 44 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF In categorial terms the horizontal composition is a Colimit Cat L Th(Brake) Th(Motor) x={, } Th(x) Th(Car) b_on b_off link unlink

45 45 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF OO Projects TTS RETOOL Theories Mathematicaly

46 46 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF CORBA OO Projects Gen. of RETOOL Theories Gen. of C++ Code Projects Base RETOOL Theorem Prover Model-Chec. Spec. Generation. Model- Checker Formal Validation Layer

47 47 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Mathematical and Engineering Foundations for Interoperability via Architecture - Formally based Software Architectures - Tools and Techniques for the Software Development Process - Compositionality Projeto MEFIA - CNPq/NSF partners: PUC-Rio, UFRGS, Stanford Univ, SRI, Univ. of Illinois

48 48 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF - Cada Model-Checker trata com técnicas e abordagens diferentes o problema de especificações com grande número de estados SMV - BDDs SPIN - Supertrace UppAll - Prog. Lógica Hytech - Diferenças finitas + varredura simples

49 49 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Alguns detalhes importantes : 1- A menos que P=NP não existe um sistema de prova eficiente (polinomial) para a lógica proposicional. 2- A lógica de primeira ordem é indecidível. 3- Composicionalidade é uma propriedade que não coexiste muito bem com concorrência. ==> Lógicas modais (doxástica, deôntica, epistêmica e suas versões multi-agentes (multi-modais) também têm modelos de Kripke como semântica).

50 50 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Métodos e Modelos importantes : CCS - Álgebra de processos com teoria de equivalência e lógica associada ( -calculus). Pi-Calculus - Álgebra de processos que inclui abstração sobre canal de comunicação e conseguente habilidade de especificar mobilidade. Redes de Petri - Modelo não composicional de concorrência real (true concurrency) Autômatos Híbridos - Levam a variação em conta (derivada em relação ao tempo) Model-checkers - CWB, MWB e simulação em redes de petri


Carregar ppt "1 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Validação Formal de Sistemas de Software Prof. Edward Hermann Haeusler Depto de."

Apresentações semelhantes


Anúncios Google