Validação Formal de Sistemas de Software

Slides:



Advertisements
Apresentações semelhantes
Auditoria de Processo Marcelo Waihrich Souza
Advertisements

AULA 02 PROGRAMAÇÃO LINEAR INTEIRA
Teste de Software 01: Introdução
Programação em Java Prof. Maurício Braga
Introdução a Algoritmos
VERIFICAÇÃO FORMAL DE BLOCOS COMPLEXOS
Experiments with Clustering as a Software Remodularization Method Nicolas Anquetil and Timothy C. Lethbridge University of Ottawa, Canada WCRE 1999:
Amintas engenharia.
INTRODUÇÃO À LÓGICA DIGITAL
Gerenciamento de Projetos
Engenharia de Software
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2.
VISÃO GERAL Profa. Fernanda Denardin Walker
João Carlos Porto Orientadora: Prof.ª Dr.ª Junia Coutinho Anacleto 26/03/2010 Projeto de interceo.
Metodologia Científica e Tecnológica
Gerenciamento de tempo do projeto
Tópicos em Engenharia de Software II
FERRAMENTAS PARA ANÁLISE DE RISCO
Informática Industrial
Técnicas de Apoio ao Processo de Engenharia de Requisitos
SSC SISTEMAS OPERACIONAIS I Aulas 6 – Escalonamento de Processos
Descrição de hardware em SystemC
Wiimote no Windows e Linux + Gotcha
Estudo de Caso 1: UNIX e LINUX
Revisões de Software Parte 1
Auditoria de Segurança da Informação
Gerenciamento da Prevenção à Fraude em Seguros
TIPOS DE TESTES APLICÁVEIS E NÃO APLICÁVEIS AO PROJETO
FERRAMENTA PARA ANÁLISE DE IMPACTO BASEADO EM RASTREABILIDADE DE
Experiments with Strassen’s Algorithm: from sequential to parallel
Visão Geral do Desenvolvimento de Sistemas e Papéis no Desenvolvimento de Software Marcely Dias
Gerenciamento do Escopo
Classes e objetos Arrays e Sobrecarga
Classes e objetos Modelagem
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação Orientada a Objetos
UML - Unified Modeling Language
Profa. Reane Franco Goulart
IDENTIFICAÇÃO, MODELAGEM E ANÁLISE DE PROCESSOS Luís Gonzaga Trabasso
Engenharia de Requisitos
UML - Unified Modeling Language
José Roberto Blaschek Gerência do Escopo José Roberto Blaschek.
REDUNDÂNCIA POR SOFTWARE
O que é Simulação? Capítulo 1 Páginas 3-23 Prof. Afonso C Medina
Resultantes de Sistemas de Forças Cap. 4
Fundamentos de Engenharia de SW
Cap 4 – Métricas do Processo e Projeto de Software
Object Oriented Software Construction (MEYER, Bertrand)
Engenharia Civil e Ambiente ANÁLISE ESTRUTURAL, 5 de Dezembro / 33 ANÁLISE ESTRUTURAL ENGENHARIA CIVIL E AMBIENTE.
Resolução de problemas por meio de busca
Conhecimento Científico Noutros conhecimentos...
Taxonomia Profa. Lillian Alvares,
SISTEMAS DIGITAIS ALGEBRA DE BOOLE E SIMPLIFICAÇÃO DE CIRC. LÓGICOS
GESTÃO DE PROJETOS Aula 5 1.
Detalhes sobre o curso
 - PSF Grupo: abc, agsj, fcac.
Técnicas de Modelagem para Aplicações em Computação Gráfica
Projeto de Banco de Dados
ENGA78 – Síntese de Circuitos Digitais
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Técnicas e Projeto de Sistemas
Redes Neuronais/Neurais/ Conexionistas Introdução
Máquina de Turing Universal
CSP-Z Disciplina: Especificação de Sistemas Distribuídos Mestrado em Ciências da Computação Aleciano Jr. Leonilson Barbosa
Introdução a Algoritmos
Lógica para Computação Prof. Celso Antônio Alves Kaestner, Dr. Eng. celsokaestner (at) utfpr (dot) edu (dot) br.
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
UPPAAL Model Checker Overview
Bruna Cavallero Martins Universidade Católica de Pelotas.
1 Métodos Formais no Desenvolvimento de Sist. Prof. E.H.Haeusler TECMF Validação Formal de Sistemas (Críticos) de Software Prof. Edward Hermann Haeusler.
Transcrição da apresentação:

Validação Formal de Sistemas de Software Prof. Edward Hermann Haeusler Depto de Informática PUC-RIO TECMF

Engenharia - 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) - 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) - Desenvolvimento e Aplicação Sistemática de Modelos de Comprovada Eficácia gerando Soluções Tecnológicas para Problemas da Humanidade - Engineering is the application of math and science to create something of value from our natural resources. (IEEE- 2002) ===> Projeto e Manufatura de Sistemas Complexos TECMF

Construção de um artefato para uso pela Sociedade Levantamento das Características Desejadas FABRICAÇÃO Matemática e Teorias Científicas 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 !!! TECMF

Construindo uma Ponte Cálculos p/ Ponte Espec. Implementação -Fluxo da Obra -Projeto (template) -Recursos humanos -Material -Profund. -Projeto Físico -Ventos Física -Correnteza. Matemática Química - $$$ Engenharia - Carga 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). 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/1993. - 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 100.000 linhas de código. 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. TECMF

Métodos Formais e Arquitetura de Software Porque Arquitetura de Software é essencial para a validação de sistemas ?? 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 TECMF

Verificação Formal Testes - Um passo de verificação pode Requisitos cobrir todo possível comporta- mento do sistema Requisitos Verificação - Verificação antes da implementa- ção diminui o custo $$ !! Especificação Testes - É especialmente importante quando o comportamento é complexo. Implementação TECMF

Validação x Prova de Correção Mundo Real Espec. Formal A cenários resultado Espec. Formal Espec. Formal B Verifica a adequação da Especificação Formal a Situações Reais Prova que B tem as propriedades que A também tem. 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. TECMF

Técnicas Formais para a Validação de Sistemas - Model Cheking (verificação de modelos) Verificar se certas propriedades valem em um certo modelo - Theorem Proving (prova de teoremas) Provar propriedades em uma teoria sobre o sistema Podem ser usados como métodos complementares 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 TECMF

Sistema Sistema Reativo Transformacional saídas entradas tempo tempo e saídas 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 Processador sensores condic. da entrada interface entrada atuadores condic. saída interface saída 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 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) TECMF

Mundos Possíveis (Kripke) - A verdade de uma proposição é verificada em relação à um mundo. - Os mundos estão relacionados ao tempo (lógica temporal) - Mundos podem ser vistos como estados locais/globais. - Estrutura ramificada, ou, linear de tempo. (obs: ¬ P  P ) P P P,Q ,P P,Q ,P P,Q ,P P,Q ,P P,Q ,P P,Q ,P P,Q ,P P,Q P,Q P,Q P,Q P,Q P,Q P,Q P,Q P  Sempre P  AP TECMF

Outras modalidades temporais PUQ EP NP P,Q ,P P,Q ,P P,Q ,P P,Q ,P P,Q ,P P,Q ,P P,Q ,P P,Q ,P P,Q ,P P,Q ,P P,Q ,EP P,Q ,P P,Q P,Q P,Q P,Q P,Q P,Q P,Q P,Q P,Q P,Q P,Q P,Q PUQ  P until Q NP  Next P EP  Eventualmente P  P TECMF

O Until e o Next são suficientes - true U P  EP - AP  ¬ E ¬ P TECMF

Threads e Máquinas de Estado Finitas - Cada Thread pode ser modelada por uma MEF 3 2c act2 1 ev2 act1 ev1 Est. 1 Est. 2 cond/act1 ev2 ev1 act2 3 MEF Comportamento da MEF TECMF

Alarme de Cofre count = = 3 /count = 0 sound count alarm attempts invalid code/ enter code check code count ++ code entered valid code/count = 0 timeout unlock door delay TECMF

- Usualmente se usa estrutura de tempo ramificado (branching time) 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) TECMF

Threads and Finite State Machines - Each thread can be modeled by a finite state machine count = = 3 /count = 0 count attempts sound alarm invalid code/ count ++ enter code check code code entered valid code/count = 0 timeout unlock door delay TECMF

AG(enter_code & valid_code ===> AF(unlock_door)) results in “true” - 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 count attempts enter code check code sound alarm 3 times count attempts enter code check code 3 times TECMF

The whole system as an async. product of state machines 3 1 1 2 1 2 1 2 2 X = 1 2 1 2 3 1 3 2 State Explosion !!!!!! TECMF

Semáforo 1 processo1 processo2 fora da região crítica fora da entrando entrando saindo entrando !semaforo !semaforo na região crítica na região crítica saindo saindo processo1 processo2 TECMF

- Considere uma pizzaria com 3 fornos. Por razões de segurança, Problema - 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. => Projetar o sistema de controle de abertura de portas de forno e gerenciamento da fabricação de pizzas TECMF

vai_assar fechado aberto pre_aquec assando vai_abrir Estado Região xaberto& yaberto vai_assar !(xaberto& yaberto) sem_vai_abrir !passou5 v (passou5 & !sem_vai_assar) passou5 & !sem_vai_assar !passou30 fechado aberto pre_aquec assando passou30 & sem_vai_abrir !xaberto& yaberto !sem_vai_abrir passou30 & !sem_vai_abrir vai_abrir 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 Estado Região Crítica TECMF

Em SMV 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)) TECMF

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) := state = vai_assar : 1 ; state = pre_aquec | assando : 0 ; 1 : sem_vai_assar ; next(sem_vai_abrir) := state = vai_abrir : 1 ; state = fechado | aberto : 0 ; 1 : sem_vai_abrir ; next(passou30) := 1: { 0, 1 } ; next(passou5) := FAIRNESS running 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 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. TECMF

Timed Automata as a model for RT-Reactiveness - 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) Est. 1 C >= 2,4 Est. 2 req? req! reset start T <= r v[i]:= C C := 0 i++ 3 i := 0 TECMF

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 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 TECMF

Semântica Axiomática de uma LP TECMF

Prova de correção de código Teoria Teoria Teoria TECMF

Architectural connectors Software Architecture = components + structure Architectural connectors - Sequential Composition - Parallel synchronous composition - Parallel asynchronous composition * - Behavior inheritance - Factorization of common Behaviors TECMF

An Example: Harel Statecharts ?condition - Conditions and Actions !action - Design Hierarchy - On-entry, on-exit during actions - Independent Threads of Control - Visual synchronization/complex Transition (as in Petri-nets) TECMF

Pattern used in ARTS (Haeusler & Fontoura 99) - Horizontal Composition Car sync(b_off,link) sync(b_on,unlink) Motor Brake t_off Off b_off M On t_on S b_on link unlink L TECMF

In categorial terms the horizontal composition is a Colimit x={,} Th(x) b_on b_off link unlink Th(Brake) Th(Motor) Th(Car) TECMF

Mathematicaly OO Projects TTS RETOOL Theories TECMF

Gen. of RETOOL OO Theories Projects CORBA RETOOL Theorem Prover Formal Base Formal Validation Layer Model-Chec. Spec. Generation. Gen. of C++ Code Model- Checker TECMF

Projeto MEFIA - CNPq/NSF Mathematical and Engineering Foundations for Interoperability via Architecture - Formally based Software Architectures - Tools and Techniques for the Software Development Process - Compositionality partners: PUC-Rio, UFRGS, Stanford Univ, SRI, Univ. of Illinois TECMF

- Cada Model-Checker trata com técnicas e abordagens diferentes o problema de especificações com grande número de estados SMV - BDD’s SPIN - Supertrace UppAll - Prog. Lógica Hytech - Diferenças finitas + varredura simples 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). 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 TECMF