09.05.2015 Views

Métodos Formais - Departamento de Informática da Universidade ...

Métodos Formais - Departamento de Informática da Universidade ...

Métodos Formais - Departamento de Informática da Universidade ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos<br />

Apresentação e Introdução à Engenharia <strong>da</strong> Fiabili<strong>da</strong><strong>de</strong><br />

e aos <strong>Métodos</strong> <strong>Formais</strong><br />

Simão Melo <strong>de</strong> Sousa<br />

Computer Science Department<br />

University of Beira Interior, Portugal<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Outline<br />

1 Contexto e Motivação<br />

2 Desenvolvimento Formal <strong>de</strong> Software<br />

3 Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

4 Conclusões<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Plano<br />

Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Evolução dos Sistemas Informáticos (SIs)<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Alguns Factos e Números<br />

Soluções?<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Critérios Comuns<br />

1 Contexto e Motivação<br />

2 Desenvolvimento Formal <strong>de</strong> Software<br />

3 Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

4 Conclusões<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Focus<br />

Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Evolução dos Sistemas Informáticos (SIs)<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Alguns Factos e Números<br />

Soluções?<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Critérios Comuns<br />

Introduzir os métodos e as ferramentas que permitam<br />

construir sistemas informáticos isentos <strong>de</strong> falhas<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Evolução dos Sistemas Informáticos (SIs)<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Alguns Factos e Números<br />

Soluções?<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Critérios Comuns<br />

Evolução dos Sistemas Informáticos (SIs)<br />

Hoje em dia:<br />

Difusão dos Sistemas Informáticos (em sectores essenciais <strong>da</strong><br />

socie<strong>da</strong><strong>de</strong>) ca<strong>da</strong> vez maior;<br />

Complexi<strong>da</strong><strong>de</strong> dos SIs ca<strong>da</strong> vez maior: tamanho e evolução<br />

técnica;<br />

Emergência <strong>de</strong> novas tecnologias, <strong>de</strong> novos mercados, assim<br />

como <strong>de</strong> novas exigências (segurança, escalabili<strong>da</strong><strong>de</strong>,<br />

disponibili<strong>da</strong><strong>de</strong>, etc.).<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Evolução dos Sistemas Informáticos (SIs)<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Alguns Factos e Números<br />

Soluções?<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Critérios Comuns<br />

Evolução dos Sistemas Informáticos (SIs)<br />

Exemplos:<br />

<strong>Informática</strong> omnipresente, socie<strong>da</strong><strong>de</strong> digital, e-government,<br />

sistemas embebidos, sistemas <strong>de</strong> segurança, dinheiro e transacções<br />

electrónicas, sistemas críticos, etc...<br />

Mas. . .<br />

<strong>Métodos</strong> actuais <strong>de</strong> <strong>de</strong>senvolvimento <strong>de</strong> SIs <strong>de</strong>sactualizados frente<br />

aos novos <strong>de</strong>safios técnicos e científicos levantados pela<br />

emergência e massificação <strong>de</strong>stes SIs.<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Evolução dos Sistemas Informáticos (SIs)<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Alguns Factos e Números<br />

Soluções?<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Critérios Comuns<br />

Evolução dos Sistemas Informáticos (SIs)<br />

SIs mo<strong>de</strong>rnos = novos <strong>de</strong>safios<br />

⎧<br />

⎪⎨<br />

a<br />

⎪⎩<br />

fiabili<strong>da</strong><strong>de</strong><br />

correcção<br />

segurança<br />

robustez<br />

etc. . .<br />

dos SIs como <strong>de</strong>safio central<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Evolução dos Sistemas Informáticos (SIs)<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Alguns Factos e Números<br />

Soluções?<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Critérios Comuns<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Contribuição à problemática <strong>da</strong> fiabili<strong>da</strong><strong>de</strong>:<br />

I<strong>de</strong>ntificação <strong>de</strong> algumas noções chaves, como a <strong>de</strong> ciclo <strong>de</strong><br />

vi<strong>da</strong> dum SI<br />

Produção: planeamento, análise, quantificação e gestão dos<br />

custos, manutenção, etc...<br />

Introdução <strong>de</strong> metodologia <strong>de</strong> produção, <strong>de</strong> exploração (etc...)<br />

do SI: =⇒ início <strong>de</strong> rigor na produção <strong>de</strong> SIs.<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Evolução dos Sistemas Informáticos (SIs)<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Alguns Factos e Números<br />

Soluções?<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Critérios Comuns<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Quantificação <strong>de</strong> custos <strong>de</strong> produção<br />

Manutenção <strong>de</strong> um SI = 2 3<br />

dos custos totais;<br />

Conserto <strong>de</strong> um erro <strong>de</strong> especificação: esforço 20 vezes maior<br />

se <strong>de</strong>tectado após produção do SI.<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Evolução dos Sistemas Informáticos (SIs)<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Alguns Factos e Números<br />

Soluções?<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Critérios Comuns<br />

A situação<br />

Um erro na especificação po<strong>de</strong> implicar mais do que um<br />

simples conserto (vi<strong>da</strong>s humanas, impacto económico,<br />

confiança dos clientes, etc...);<br />

Existem (muitos) SIs em que o aparecimento <strong>de</strong> erros é<br />

inaceitável<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Evolução dos Sistemas Informáticos (SIs)<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Alguns Factos e Números<br />

Soluções?<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Critérios Comuns<br />

mais uma vez. . .<br />

SIs mo<strong>de</strong>rnos = novos <strong>de</strong>safios<br />

⇓<br />

necessi<strong>da</strong><strong>de</strong> <strong>da</strong> fiabili<strong>da</strong><strong>de</strong> como <strong>de</strong>safio central<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Alguns Factos e Números<br />

Evolução dos Sistemas Informáticos (SIs)<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Alguns Factos e Números<br />

Soluções?<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Critérios Comuns<br />

Há mais <strong>de</strong> 10 anos, W. Gibbs dizia:<br />

Despite 50 years of progress, the software industry remains years<br />

– perhaps <strong>de</strong>ca<strong>de</strong>s – short of the mature engineering discipline<br />

required to meet the needs of an information-age society.<br />

in: Trends in Computing: Software’s Chronic Crisis - Scientific American - 1994.<br />

Provocação? Passado?<br />

Infelizmente, não. Veja por exemplo:<br />

Comercialização = criação <strong>de</strong> um canal para bug reports<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Alguns Factos e Números<br />

Evolução dos Sistemas Informáticos (SIs)<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Alguns Factos e Números<br />

Soluções?<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Critérios Comuns<br />

Impacto económico <strong>da</strong>s falhas nos SIs<br />

Ariane V : 2 biliões <strong>de</strong> $<br />

Avaliação pelo NIST dos custos dos erros em SIs na economia<br />

dos USA<br />

1995 : 81 biliões <strong>de</strong> $<br />

1996 : 100 biliões <strong>de</strong> $<br />

2002 : 59.5 biliões <strong>de</strong> $<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Alguns Factos e Números<br />

Evolução dos Sistemas Informáticos (SIs)<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Alguns Factos e Números<br />

Soluções?<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Critérios Comuns<br />

Impacto comercial <strong>da</strong>s falhas nos SIs<br />

Ruptura <strong>de</strong> contrato por razões <strong>de</strong> falta <strong>de</strong> garantias <strong>de</strong><br />

fiabili<strong>da</strong><strong>de</strong> (exemplo <strong>da</strong> IBM)<br />

US Fe<strong>de</strong>ral Aviation Agency : 8 biliões <strong>de</strong> $<br />

DoD : 2 biliões <strong>de</strong> $<br />

Confiança dos clientes. Exemplo <strong>da</strong> Intel e do Bug do<br />

Pentium: Impacto <strong>da</strong> per<strong>da</strong> <strong>de</strong> confiança dos cliente maior do<br />

que o impacto económico do conserto.<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Alguns Factos e Números<br />

Evolução dos Sistemas Informáticos (SIs)<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Alguns Factos e Números<br />

Soluções?<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Critérios Comuns<br />

etc. . .<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Soluções?<br />

Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Evolução dos Sistemas Informáticos (SIs)<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Alguns Factos e Números<br />

Soluções?<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Critérios Comuns<br />

Infelizmente,<br />

Não há soluções universais!<br />

No entanto, soluções a<strong>da</strong>pta<strong>da</strong>s e satisfatórias:<br />

repensar e a<strong>da</strong>ptar o ciclo <strong>de</strong> produção <strong>de</strong> SIs <strong>de</strong> forma a integrar<br />

a fiabili<strong>da</strong><strong>de</strong> como um requisito central<br />

⇓<br />

Common Criteria<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Soluções?<br />

Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Evolução dos Sistemas Informáticos (SIs)<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Alguns Factos e Números<br />

Soluções?<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Critérios Comuns<br />

Infelizmente,<br />

Não há soluções universais!<br />

No entanto, soluções a<strong>da</strong>pta<strong>da</strong>s e satisfatórias:<br />

integrar e utilizar métodos <strong>de</strong> fiabilização :<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Testes e Simulação<br />

Evolução dos Sistemas Informáticos (SIs)<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Alguns Factos e Números<br />

Soluções?<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Critérios Comuns<br />

Princípio Geral<br />

Para um <strong>de</strong>terminado mo<strong>de</strong>lo do SI alvo, fornecer um conjunto<br />

<strong>de</strong> <strong>da</strong>dos representativos e comparar a resposta com o resultado<br />

esperado.<br />

Não existe teste satisfatório:<br />

exaustivi<strong>da</strong><strong>de</strong>: geralmente impossível (conjunto <strong>de</strong> valores possíveis<br />

eventualmente infinito)<br />

representativi<strong>da</strong><strong>de</strong>: em geral problemas ocorrem quando os <strong>da</strong>dos<br />

têm valores inesperados (i.e. não representativos).<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Testes e Simulação<br />

Evolução dos Sistemas Informáticos (SIs)<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Alguns Factos e Números<br />

Soluções?<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Critérios Comuns<br />

Uma ilustração:<br />

Littlewood provou, em 1914 e à surpresa geral <strong>de</strong> todos, que a<br />

função<br />

π(n) − li(n)<br />

on<strong>de</strong><br />

li(n) = ∫ n<br />

0<br />

du<br />

ln(u)<br />

e li(n) = número <strong>de</strong> primos ≤ n<br />

mu<strong>da</strong> <strong>de</strong> sinal infinitamente. Surpresa? sim, porque apesar <strong>de</strong><br />

intensos testes sobre valores chegando a 10 10 (antes <strong>da</strong> aparição<br />

dos computadores), nenhuma mu<strong>da</strong>nça <strong>de</strong> sinal foi <strong>de</strong>tecta<strong>da</strong>.<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Evolução dos Sistemas Informáticos (SIs)<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Alguns Factos e Números<br />

Soluções?<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Critérios Comuns<br />

Uma Definição<br />

The term formal methods refers to the use of mathematical<br />

mo<strong>de</strong>ling, calculation and prediction in the specification,<br />

<strong>de</strong>sign, analysis and assurance of computer systems and<br />

software. The reason it is called formal methods rather than<br />

mathematical mo<strong>de</strong>ling of software is to highlight the<br />

character of the mathematics involved.<br />

J. Rushby, Formal Methods and their Role in the Certification of Critical Systems -<br />

SRI - 1995.<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Evolução dos Sistemas Informáticos (SIs)<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Alguns Factos e Números<br />

Soluções?<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Critérios Comuns<br />

Algumas Proprie<strong>da</strong><strong>de</strong>s<br />

exaustivi<strong>da</strong><strong>de</strong>: raciocínio formal (por oposição a informal) sobre o<br />

conjunto dos valores possíveis na sua globali<strong>da</strong><strong>de</strong><br />

rigor: bases matemáticas bem assentes<br />

a<strong>de</strong>quação: solução avalia<strong>da</strong> como satisfatória para a garantia<br />

<strong>de</strong> fiabili<strong>da</strong><strong>de</strong> (por exemplo em normas ISO como os<br />

Critérios Comuns)<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Critérios Comuns<br />

Evolução dos Sistemas Informáticos (SIs)<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Alguns Factos e Números<br />

Soluções?<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Critérios Comuns<br />

Origem.<br />

Reflexão { conjunta <strong>de</strong> várias enti<strong>da</strong><strong>de</strong>s normativas sobre a<br />

− necessi<strong>da</strong><strong>de</strong><br />

<strong>de</strong> um mo<strong>de</strong>lo/métrica para a avaliação <strong>da</strong><br />

− <strong>de</strong>finição<br />

fiabili<strong>da</strong><strong>de</strong>/segurança dos SIs:<br />

Norma ISO-15408 <strong>de</strong>signa<strong>da</strong> por Common Criteria<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Critérios Comuns<br />

Evolução dos Sistemas Informáticos (SIs)<br />

Engenharia <strong>de</strong> Software & Análise <strong>de</strong> Sistemas<br />

Ina<strong>de</strong>quação do ciclo Detecção-Conserto<br />

Alguns Factos e Números<br />

Soluções?<br />

Testes e Simulação<br />

<strong>Métodos</strong> <strong>Formais</strong><br />

Critérios Comuns<br />

Critérios Comuns = métrica para segurança dos SIs<br />

Definição<br />

Métrica organiza<strong>da</strong> em 7 níveis <strong>de</strong> confiança (Evaluation<br />

Assurance Level – EAL)<br />

Para os mais altos níveis (<strong>de</strong> EAL5 a EAL7)<br />

Enti<strong>da</strong><strong>de</strong> <strong>de</strong> certificação : Enti<strong>da</strong><strong>de</strong> pública (in<strong>de</strong>pendência <strong>da</strong><br />

certificação)<br />

<strong>Métodos</strong> <strong>Formais</strong> requeridos (rigor <strong>da</strong> avaliação)<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Plano<br />

1 Contexto e Motivação<br />

2 Desenvolvimento Formal <strong>de</strong> Software<br />

3 Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

4 Conclusões<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Começemos por uma pequena digressão sobre a noção <strong>de</strong><br />

Desenvolvimento <strong>de</strong> Software (DS).<br />

Objectivo: mostrar (<strong>de</strong> forma sucinta) que é preciso ajustar os<br />

métodos tradicionais <strong>de</strong> DS<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Desenvolvimento <strong>de</strong> Software<br />

Ciclos <strong>de</strong> vi<strong>da</strong> dos SIs: Os classicos<br />

Em V<br />

Em Cascata (Boehm, 1977)<br />

<strong>Métodos</strong> Semi-<strong>Formais</strong>:<br />

SA, SADT, SSADM, MERISE, UML,<br />

etc...<br />

Análise feita, mas não há certezas<br />

relativamente aos requisitos <strong>de</strong> fiabili<strong>da</strong><strong>de</strong><br />

No entanto, contribuição positiva.<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Fiabili<strong>da</strong><strong>de</strong> como requisito Central<br />

Como já o referimos, estes ciclos, assim como os métodos referidos, não<br />

conseguem tomar convenientemente conta dos requisitos omnipresentes no<br />

<strong>de</strong>senvolvimento <strong>de</strong> SI mo<strong>de</strong>rnos como a fiabili<strong>da</strong><strong>de</strong>, a correcção a robustez.<br />

Esta apresentação advoga e introduz o<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Especificação Formal e Engenharia <strong>de</strong> Software: Que<br />

benefícios?<br />

Mais uma vez: Desenvolvimento Formal <strong>de</strong> Software. Mas como<br />

integrar estas abor<strong>da</strong>gens nos mecanismos clássicos <strong>de</strong><br />

<strong>de</strong>senvolvimento <strong>de</strong> Software?<br />

Lembrete<br />

Mo<strong>de</strong>lar, raciocinar, <strong>de</strong>rivar (transformação sistemática do mo<strong>de</strong>los<br />

em implementação: refinamento, extracção).<br />

Solução: repensar e a<strong>da</strong>ptar os ciclos <strong>de</strong> vi<strong>da</strong> do Desenvolvimento<br />

(Formal) <strong>de</strong> Software<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Plano<br />

1 Contexto e Motivação<br />

2 Desenvolvimento Formal <strong>de</strong> Software<br />

3 Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

4 Conclusões<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

O Problema Central<br />

Os <strong>Métodos</strong> <strong>Formais</strong> preten<strong>de</strong>m:<br />

Garantir que um SI tenha um <strong>de</strong>terminado (bom) comportamento<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

O Problema Central<br />

Os <strong>Métodos</strong> <strong>Formais</strong> preten<strong>de</strong>m:<br />

Garantir que um SI tenha um <strong>de</strong>terminado (bom) comportamento<br />

{ − mo<strong>de</strong>lo<br />

Noção central <strong>de</strong><br />

− especificação<br />

discurso para a matemática.<br />

para levar o objecto do<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

O Problema Central<br />

Os <strong>Métodos</strong> <strong>Formais</strong> preten<strong>de</strong>m:<br />

Garantir que um SI tenha um <strong>de</strong>terminado (bom) comportamento<br />

Subdivisão do problema principal em dois sub-problemas<br />

Garantias <strong>de</strong> comportamentos: Como garantir/verificar ao nível do<br />

mo<strong>de</strong>lo o comportamento <strong>de</strong>sejado<br />

Confronto ”mo<strong>de</strong>lo vs. implementação”:<br />

1 Como obter <strong>de</strong> um mo<strong>de</strong>lo uma implementação<br />

usufruindo <strong>de</strong>sse comportamento?<br />

2 Como garantir que uma implementação tem o<br />

mesmo comportamento que um mo<strong>de</strong>lo?<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Visita Guia<strong>da</strong><br />

O que vem a seguir<br />

Visita dos formalismos e <strong>da</strong>s ferramentas organiza<strong>da</strong> em cama<strong>da</strong>s<br />

<strong>de</strong> funcionali<strong>da</strong><strong>de</strong>s:<br />

Especificar e analisar mo<strong>de</strong>los<br />

Especificar e <strong>de</strong>monstrar proprie<strong>da</strong><strong>de</strong>s<br />

Especificar e <strong>de</strong>rivar implementações<br />

Especificar e transformar especificações<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Especificar e Analisar<br />

Princípios Subjacentes<br />

Formalismos/linguagens/ferramentas para expressar<br />

mo<strong>de</strong>los/especificações.<br />

Benefícios Imediatos<br />

Linguagens <strong>Formais</strong> = Rigorosos e sem Ambigui<strong>da</strong><strong>de</strong>s<br />

Obriga a uma reflexão aprofun<strong>da</strong><strong>da</strong> e a uma compreensão<br />

<strong>de</strong>talha<strong>da</strong> dos mecanismos mo<strong>de</strong>lados (e.g. D. Syme,<br />

CISC/IBM);<br />

“Esperanto” i<strong>de</strong>al para a documentação e comunicação entre as<br />

diferentes partes envolvi<strong>da</strong>s na produção do SI;<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Especificar e Analisar<br />

Princípios Subjacentes<br />

Formalismos/linguagens/ferramentas para expressar<br />

mo<strong>de</strong>los/especificações.<br />

Benefícios Imediatos<br />

Linguagens <strong>Formais</strong> = Rigorosos e sem Ambigui<strong>da</strong><strong>de</strong>s<br />

No caso <strong>da</strong> existência <strong>de</strong> uma implementação do formalismo,<br />

observação directa do comportamento sem necessi<strong>da</strong><strong>de</strong> <strong>de</strong><br />

implementação: prototipagem<br />

Enquadramento formal propício ao raciocínio matemático<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Construir Mo<strong>de</strong>los/Especificações<br />

Vamos aqui nos <strong>de</strong>bruçar sobre o primeiro sub-problema, em<br />

particular sobre a construção <strong>de</strong> especificações<br />

Definição Informal<br />

Especificação Formal: Descrição Formal do ”QUÊ” dum<br />

sistema por <strong>de</strong>senvolver (por oposição ao ”COMO”).<br />

=⇒ resultado <strong>da</strong> fase <strong>de</strong> analise.<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Construir Mo<strong>de</strong>los/Especificações<br />

Abor<strong>da</strong>gens à Especificação<br />

Objectivo: <strong>da</strong>r uma formulação matemática (rigorosa, formal) do comportamento do<br />

sistema por mo<strong>de</strong>lar.<br />

Comecemos por distinguir duas gran<strong>de</strong>s famílias <strong>de</strong> especificações formais. Ênfase:<br />

nos <strong>da</strong>dos manipulados. O comportamento do sistema alvo po<strong>de</strong> ser expresso<br />

via os <strong>da</strong>dos que manipula e pela forma com que estes <strong>da</strong>dos evoluem ou se<br />

relacionam: especificação algébrica, ou ain<strong>da</strong>, basea<strong>da</strong> em axiomas .<br />

nas operações. O comportamento po<strong>de</strong> ser expresso via as operações,<br />

mecanismos <strong>de</strong> que dispõe ou ain<strong>da</strong> as acções que é capaz <strong>de</strong> executar. Aqui o<br />

cerne <strong>da</strong> especificação é as modificações que as operações efectuam sobre um<br />

estado interno: especificação basea<strong>da</strong> em estados ou mo<strong>de</strong>los.<br />

Existe igualmente uma catalogação ortogonal: mo<strong>de</strong>los sequenciais ou mo<strong>de</strong>los<br />

concorrentes (CSP, CCS, Álgebra dos Processos, Π − calculus, etc...).<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Construir Mo<strong>de</strong>los/Especificações<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Especificação Orienta<strong>da</strong> a Estados/Mo<strong>de</strong>los<br />

Princípios<br />

Determinar a noção <strong>de</strong> estado para o sistema alvo e privilegiar a <strong>de</strong>scrição <strong>de</strong><br />

que como as operações do sistema alteram o estado.<br />

A matemática subjacente<br />

Matemática discreta, teoria dos conjuntos, teoria <strong>da</strong>s categorias, lógica<br />

Exemplos <strong>de</strong> formalismos - sistemas<br />

Sequencial: Z, VDM, B, Charity, Perfect Developer,<br />

Concorrência: Re<strong>de</strong>s <strong>de</strong> Petri, CCs, CSP, UNITY, B evenementiel etc...<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Máquinas <strong>de</strong> Estados Abstractos<br />

Formalismos <strong>da</strong> família dos sistemas <strong>de</strong> transição baseado nas<br />

noções <strong>de</strong> estado e <strong>de</strong> transformações <strong>de</strong> estado,<br />

SI = máquina abstracta = conjunto <strong>de</strong> estados + conjunto <strong>de</strong><br />

transições não <strong>de</strong>terminísticas<br />

Transição = condição <strong>de</strong> eleição + transformações ao estado<br />

<strong>da</strong> máquina<br />

Turing-equivalente<br />

Implementações existentes: ASM Gopher, Sistema B<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Teoria dos Conjuntos e <strong>da</strong>s Categorias<br />

estado = conjunto + funções + relações<br />

transição = invariantes + pre/post condições<br />

formalismo particularmente expressivo e modular<br />

alvo <strong>de</strong> numerosas implementações : Z, VDM, RAISE,<br />

SPECWARE, CHARITY, CAMILA, etc...<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Especificação Algébricas<br />

Princípios<br />

Definir o domínio do discurso (os <strong>da</strong>dos sobre os quais nos<br />

irmos <strong>de</strong>bruçar)<br />

Fornecer uma <strong>de</strong>scrição axiomática do comportamento <strong>da</strong>s<br />

operações que po<strong>de</strong>m manipular o alvo do discurso<br />

A matemática subjacente<br />

Âlgebra, Indução, Lógica equacional<br />

Exemplos <strong>de</strong> formalismos - sistemas<br />

Sequencial:ACT-ONE, CLEAR, OBJ, CASL, SPECWARE, etc...<br />

Concorrência: LOTOS, etc...<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Especificação Híbri<strong>da</strong>s: Princípios<br />

Misturar as especificações por mo<strong>de</strong>los com especificação algébrica.<br />

Exemplos: RAISE (VDM+CSP), Exten<strong>de</strong>d LOTOS, ZCCS, etc...<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Especificação Algébrica<br />

baseado nas álgebras “multi-sorted”<br />

tipos <strong>de</strong> <strong>da</strong>dos do SI alvo = conjuntos<br />

funções do SI alvo =<br />

símbolos <strong>de</strong> funções introduzidos por assinaturas<br />

proprie<strong>da</strong><strong>de</strong>s dos símbolos estabelecidos por axiomas<br />

implementações : OBJ, CLEAR, ACT-ONE<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Outras Famílias <strong>de</strong> Especificação formal<br />

Ortogonalmente a estas duas famílias <strong>de</strong> metodologias e<br />

ferramentas existem outras categorias ca<strong>da</strong> vez mais populares e<br />

que ten<strong>de</strong>m em complementar ou em integrar-se no universo<br />

existente <strong>da</strong> especificação formal.<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Mo<strong>de</strong>lização por Autómatos<br />

Outro formalismo <strong>da</strong> família dos sistemas <strong>de</strong> transição<br />

transição = evento<br />

formalismo particularmente a<strong>da</strong>ptado para a mo<strong>de</strong>lação do<br />

comportamento do SI alvo: hardware, SI concorrente, SI<br />

reactivo, SI comunicante, protocolo etc...<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Mo<strong>de</strong>lização Declarativa<br />

Uma classe importante <strong>de</strong> formalismos:<br />

Formalismos lógicos<br />

baseado na noção <strong>de</strong> predicados <strong>de</strong> primeira or<strong>de</strong>m<br />

tipos <strong>de</strong> <strong>da</strong>dos do SI alvo = estrutura <strong>de</strong> <strong>da</strong>dos (simples) <strong>da</strong><br />

linguagem alvo<br />

função = <strong>de</strong>scrição via proprie<strong>da</strong><strong>de</strong>s comportamentais<br />

implementações: Prolog,λ-Prolog, etc...<br />

animação e execuçãos<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Mo<strong>de</strong>lização Declarativa<br />

Formalismos lógico-funcionais<br />

baseado no λ-cálculo (teoria <strong>da</strong>s funções <strong>de</strong> or<strong>de</strong>m superior)<br />

tipos <strong>de</strong> <strong>da</strong>dos do SI alvo = tipos <strong>de</strong> <strong>da</strong>dos (arbitrariamente<br />

complexos) <strong>da</strong> linguagem alvo (tipos indutivos, <strong>de</strong>pen<strong>de</strong>ntes,<br />

etc..)<br />

função = funções <strong>de</strong> or<strong>de</strong>m superior<br />

implementações:<br />

linguagens: Scheme, SML, Haskell, OCaml,<br />

sistemas <strong>de</strong> prova: ACL2, DECLARE, COQ, PVS, HOL,<br />

ISABELLE etc...<br />

Possibili<strong>da</strong><strong>de</strong> <strong>de</strong> animação e <strong>de</strong> execução<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Mo<strong>de</strong>lização Declarativa<br />

Sistemas <strong>de</strong> reescrita<br />

basea<strong>da</strong> na noção <strong>de</strong> redução<br />

tipos <strong>de</strong> <strong>da</strong>dos do SI alvo = estrutura <strong>de</strong> <strong>da</strong>dos <strong>da</strong> linguagem<br />

alvo<br />

função = <strong>de</strong>scrição computacional via equações<br />

implementações: ELAN, SPIKE etc...<br />

animação e execução<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Mo<strong>de</strong>lização Declarativa<br />

Semântca <strong>da</strong>s linguagens <strong>de</strong> programação<br />

família <strong>de</strong> formalismos a<strong>da</strong>ptados para a expressão matemática <strong>de</strong><br />

linguagens <strong>de</strong> programação.<br />

ambiente para a expressão <strong>de</strong> semânticas (expressão dos<br />

símbolos e do comportamento semântico <strong>de</strong>stes)<br />

animação e execução<br />

implementações: Action-Semantics, LETOS, ASF+SDF,<br />

Centaur, RML, etc...<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Especificar e Demonstrar<br />

Garantir um comportamento<br />

animar ou executar é insuficiente<br />

necessi<strong>da</strong><strong>de</strong> <strong>de</strong> <strong>de</strong>monstrar: verificação formal<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Especificar e Demonstrar<br />

3 tipos <strong>de</strong> suporte a verificação formal (J.<br />

Rushby)<br />

1 Ferramentas que só fornecem um<br />

enquadramento formal, não<br />

disponibilizam nenhum suporte<br />

adicional<br />

2 Ferramentas que fornecem um<br />

sistema formal para a expressão<br />

rigorosa <strong>de</strong> raciocínios<br />

3 Ferramentas fornecendo um sistema<br />

formal e um suporte computacional<br />

para a expressão <strong>de</strong> <strong>de</strong>monstrações<br />

<strong>de</strong>monstração “manual”, em ĺıngua natural<br />

que é váli<strong>da</strong> se convencer a comuni<strong>da</strong><strong>de</strong><br />

Focus<br />

=⇒ Panorama dos sistemas <strong>de</strong> nível 3<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Especificar e Demonstrar<br />

3 tipos <strong>de</strong> suporte a verificação formal (J.<br />

Rushby)<br />

1 Ferramentas que só fornecem um<br />

enquadramento formal, não<br />

disponibilizam nenhum suporte<br />

adicional<br />

2 Ferramentas que fornecem um<br />

sistema formal para a expressão<br />

rigorosa <strong>de</strong> raciocínios<br />

3 Ferramentas fornecendo um sistema<br />

formal e um suporte computacional<br />

para a expressão <strong>de</strong> <strong>de</strong>monstrações<br />

<strong>de</strong>monstração “manual” e uso exclusivo <strong>de</strong><br />

linguagem formal para a expressão <strong>da</strong><br />

<strong>de</strong>monstração<br />

Focus<br />

=⇒ Panorama dos sistemas <strong>de</strong> nível 3<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Especificar e Demonstrar<br />

3 tipos <strong>de</strong> suporte a verificação formal (J.<br />

Rushby)<br />

1 Ferramentas que só fornecem um<br />

enquadramento formal, não<br />

disponibilizam nenhum suporte<br />

adicional<br />

2 Ferramentas que fornecem um<br />

sistema formal para a expressão<br />

rigorosa <strong>de</strong> raciocínios<br />

3 Ferramentas fornecendo um sistema<br />

formal e um suporte computacional<br />

para a expressão <strong>de</strong> <strong>de</strong>monstrações<br />

=⇒ Mais rigoroso (e.g. Lamport, etc...)<br />

i.e. no mesmo enquadramento:<br />

expressão formal <strong>de</strong> um mo<strong>de</strong>lo e <strong>da</strong> sua<br />

<strong>de</strong>monstração, verificação mecânica <strong>de</strong><br />

<strong>de</strong>monstrações <strong>de</strong> proprie<strong>da</strong><strong>de</strong>s do mo<strong>de</strong>lo.<br />

Focus<br />

=⇒ Panorama dos sistemas <strong>de</strong> nível 3<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Especificar e Demonstrar<br />

3 tipos <strong>de</strong> suporte a verificação formal (J.<br />

Rushby)<br />

1 Ferramentas que só fornecem um<br />

enquadramento formal, não<br />

disponibilizam nenhum suporte<br />

adicional<br />

2 Ferramentas que fornecem um<br />

sistema formal para a expressão<br />

rigorosa <strong>de</strong> raciocínios<br />

3 Ferramentas fornecendo um sistema<br />

formal e um suporte computacional<br />

para a expressão <strong>de</strong> <strong>de</strong>monstrações<br />

=⇒ Mais rigoroso (e.g. Lamport, etc...)<br />

i.e. no mesmo enquadramento:<br />

expressão formal <strong>de</strong> um mo<strong>de</strong>lo e <strong>da</strong> sua<br />

<strong>de</strong>monstração, verificação mecânica <strong>de</strong><br />

<strong>de</strong>monstrações <strong>de</strong> proprie<strong>da</strong><strong>de</strong>s do mo<strong>de</strong>lo.<br />

Focus<br />

=⇒ Panorama dos sistemas <strong>de</strong> nível 3<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Sistemas <strong>de</strong> Prova<br />

Conceito<br />

sistema formal = sistema <strong>de</strong>dutivo<br />

Isto é: permitam a expressão <strong>de</strong> mo<strong>de</strong>los e a <strong>de</strong>monstração <strong>de</strong><br />

proprie<strong>da</strong><strong>de</strong>s<br />

a varie<strong>da</strong><strong>de</strong> dos formalismos <strong>de</strong>sta família explica-se pelo balanço<br />

entre dois factores antagónicos por consi<strong>de</strong>rar:<br />

expressivi<strong>da</strong><strong>de</strong> lógica<br />

versus<br />

automatização <strong>da</strong> <strong>de</strong>dução<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Demonstradores <strong>de</strong> Teoremas<br />

. . . ou Automated Theorem Provers<br />

Privilegia: automatização <strong>da</strong> <strong>de</strong>dução<br />

Vantagens:<br />

Após parametrização do motor <strong>de</strong> <strong>de</strong>dução, a<br />

<strong>de</strong>monstração é automática<br />

Possibili<strong>da</strong><strong>de</strong> <strong>de</strong> raciocínio sobre conjuntos<br />

infinitos (e.g. por indução)<br />

Desvantagem: Nem tudo o que preten<strong>de</strong>mos expressar po<strong>de</strong> ser<br />

expresso<br />

Sistemas: Prolog, SPIKE ELAN, ACL2, etc...<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Sistemas <strong>de</strong> Prova Assisti<strong>da</strong><br />

. . . ou Proof Assistants<br />

Privilegia: expressivi<strong>da</strong><strong>de</strong> lógica (em geral lógica <strong>de</strong> or<strong>de</strong>m<br />

superior)<br />

Vantagens: Muitas proprie<strong>da</strong><strong>de</strong>s/<strong>de</strong>monstrações precisam <strong>de</strong>ssa<br />

expressivi<strong>da</strong><strong>de</strong> Raciocínio próximo do raciocínio<br />

matemático stan<strong>da</strong>rd<br />

Desvantagem: lógica in<strong>de</strong>cidível =⇒ intervenção do utilizador<br />

necessária<br />

Sistemas: Coq, PVS, DECLARE, HOL, ISABELLE<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Verificação <strong>de</strong> Mo<strong>de</strong>los<br />

. . . ou Mo<strong>de</strong>l Checking<br />

Abor<strong>da</strong>gem alternativa aos sistemas <strong>de</strong> prova com muitas<br />

aplicações bem sucedi<strong>da</strong>s<br />

Técnica <strong>de</strong> verificação proprie<strong>da</strong><strong>de</strong>s <strong>de</strong> SI mo<strong>de</strong>lados como<br />

sistemas (concorrentes) <strong>de</strong> estados finitos (e.g. autómatos)<br />

Proprie<strong>da</strong><strong>de</strong>s espera<strong>da</strong>s expressas por fórmulas <strong>de</strong> uma<br />

<strong>de</strong>termina<strong>da</strong> lógica temporal<br />

Verificação <strong>de</strong> proprie<strong>da</strong><strong>de</strong> traduzi<strong>da</strong> numa <strong>de</strong>termina<strong>da</strong><br />

exploração do sistema <strong>de</strong> transição<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Verificação <strong>de</strong> Mo<strong>de</strong>los<br />

. . . ou Mo<strong>de</strong>l Checking<br />

Vantagens:<br />

Desvantagens:<br />

Demonstração Automática<br />

Exibição <strong>de</strong> um contra-exemplo em caso <strong>de</strong> erro<br />

Problema <strong>da</strong> explosão do espaço <strong>de</strong> estados<br />

(crescimento exponencial do grafo <strong>de</strong> estado em<br />

relação ao tamanho do sistema mo<strong>de</strong>lado)<br />

Nõ sabe li<strong>da</strong>r com conjuntos infinitos<br />

Sistemas: SMV, Murphy, SPIN, Kronos, Design/CPN, etc. . .<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Anotações <strong>de</strong> programas e Lógica <strong>de</strong> Hoare<br />

Consiste em<br />

Anotações lógicas do programa fonte (pre/post condições,<br />

invariantes)<br />

construção automática <strong>de</strong> um mo<strong>de</strong>lo w.r.t. semântica<br />

axiomática <strong>da</strong> linguagem alvo<br />

suporte para a <strong>de</strong>monstração <strong>de</strong> proprie<strong>da</strong><strong>de</strong>s (<strong>de</strong>legação <strong>da</strong><br />

<strong>de</strong>monstração a verificadores <strong>de</strong> mo<strong>de</strong>los, sistemas <strong>de</strong> prova<br />

etc...)<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Anotações <strong>de</strong> programas e Lógica <strong>de</strong> Hoare<br />

. . . ou <strong>de</strong>sign by contracts<br />

Vantagens: Democratiza a verificação formal <strong>de</strong> SIs ao colocar o<br />

papel <strong>da</strong> verificação na mão <strong>de</strong> quem<br />

<strong>de</strong>senha/<strong>de</strong>senvolve o SI alvo<br />

Desvantagens: Desenhar anotações é uma arte que nem todos<br />

dominam ( Democratização elitista :) )<br />

Sistemas: fortemente ligados ás linguagens alvo.<br />

Java: JML, LOOP tool, ESC/JAVA, Ban<strong>de</strong>ra,<br />

Jive, Jack etc...<br />

C♯: Spec♯<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Especificar e Derivar<br />

Segundo Subproblema central dos <strong>Métodos</strong> <strong>Formais</strong><br />

Obter uma implementação <strong>de</strong> uma especificação aprova<strong>da</strong><br />

Soluções?<br />

A própria linguagem <strong>de</strong> especificação é uma linguagem <strong>de</strong><br />

programação =⇒ Q.E.D.<br />

Refinamento<br />

Extracção<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Especificar e Derivar<br />

Refinamento<br />

Técnica que permite a síntese “passo a passo” <strong>de</strong> implementações a<br />

partir <strong>de</strong> especificações.<br />

1 passo = uma escolha <strong>de</strong> implementação (e.g. um conjunto<br />

por uma lista liga<strong>da</strong>, uma or<strong>de</strong>nação pela or<strong>de</strong>nação<br />

“quicksort”, etc. . . )<br />

ca<strong>da</strong> passo tem <strong>de</strong> ser formalmente justificado (e.g. não altera<br />

nem o comportamento e nem as proprie<strong>da</strong><strong>de</strong>s <strong>da</strong> especificação<br />

fonte)<br />

Sistemas: Z, VDM, B, SPECWARE<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Especificar e Derivar<br />

Extracção<br />

Lógica inerente aos sistemas <strong>de</strong> prova assisti<strong>da</strong> = lógica<br />

intuicionista =⇒ Isomorfismo <strong>de</strong> Curry-Howard<br />

Isomorfismo <strong>de</strong> Curry-Howard<br />

λ-calculo lógica programação<br />

tipo enunciado lógico especificação<br />

termo <strong>de</strong>monstração programa<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Especificar e Derivar<br />

Extracção<br />

Conceito: Seja T o teorema<br />

Sistemas: COQ<br />

∀(x, y) ∈ N 2 .∃(q, r) ∈ N 2 .(y = (q × x + r) ∧ r < x)<br />

Na lógica intuicionista na na interpretação <strong>de</strong><br />

Curry-Howard, uma <strong>de</strong>monstração <strong>de</strong> T é uma<br />

função que calcula o par (q, r) que testemunha <strong>da</strong><br />

vali<strong>da</strong><strong>de</strong> <strong>de</strong> T =⇒ Q.E.D.<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Especificar e Transformar<br />

Abstrair e Refinar<br />

A situação: Necessi<strong>da</strong><strong>de</strong> <strong>de</strong> mecanismos <strong>de</strong> transformação <strong>de</strong><br />

mo<strong>de</strong>los (e.g. <strong>de</strong>finir uma variação, uma<br />

simplificação, extensão etc...) para expressar provas<br />

complexas, modulares em especificações <strong>de</strong> tamanho<br />

gran<strong>de</strong> etc...<br />

Exemplo: Abstracção <strong>de</strong> especificações para focar a<br />

especificação sobre um <strong>de</strong>terminado comportamento<br />

alvo <strong>da</strong> <strong>de</strong>monstração<br />

Sistemas: ASF+SDF, JaKarTa<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Especificar e Transformar<br />

Potencial <strong>da</strong>s Combinações<br />

Não existe nenhuma ferramenta que permite resolver <strong>de</strong> forma<br />

global e satisfatória o problema central<br />

⇓<br />

pertinência <strong>da</strong>s plataformas <strong>de</strong> especificação permitindo a<br />

colaboração <strong>de</strong> vários métodos formais: JaKarTa<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

O Problema Central<br />

Visita Guia<strong>da</strong><br />

Especificar e Analisar<br />

Especificar e Demonstrar<br />

Especificar e Derivar<br />

Especificar e Transformar<br />

Uma Contribuição: JaKarTa<br />

Objectivo: permitir um tratamento satisfatório e global.<br />

uma arquitectura centra<strong>da</strong> numa plataforma <strong>de</strong> especificação<br />

própria;<br />

mecanismos <strong>de</strong> comunicação com diferentes métodos formais<br />

(sistemas <strong>de</strong> prova, <strong>de</strong>monstradores <strong>de</strong> teoremas, linguagens<br />

<strong>de</strong> programação);<br />

mecanismos <strong>de</strong> administração e automação <strong>de</strong> <strong>de</strong>monstrações<br />

(em COQ);<br />

mecanismos <strong>de</strong> transformações <strong>de</strong> especificação;<br />

mecanismos <strong>de</strong> prova <strong>de</strong> correcção <strong>da</strong>s transformações<br />

realiza<strong>da</strong>s.<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Aplicações<br />

Consi<strong>de</strong>rações Finais e Perspectivas<br />

Plano<br />

1 Contexto e Motivação<br />

2 Desenvolvimento Formal <strong>de</strong> Software<br />

3 Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

4 Conclusões<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Aplicações<br />

Consi<strong>de</strong>rações Finais e Perspectivas<br />

Algumas aplicações bem sucedi<strong>da</strong>s<br />

Muitos exemplos, dos quais:<br />

hardware, protocolos, re<strong>de</strong>s, SOs, sistemas críticos,<br />

plataformas <strong>de</strong> execução, software, etc...<br />

Áreas <strong>de</strong> aplicações:<br />

Aviação (NASA, FAA, ARIANE, etc...),<br />

Caminhos <strong>de</strong> ferro (Metro, etc...)<br />

Sistemas nucleares<br />

Sistemas médicos<br />

Sistemas embebidos<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Aplicações<br />

Consi<strong>de</strong>rações Finais e Perspectivas<br />

Algumas aplicações bem sucedi<strong>da</strong>s<br />

Uma contribuição<br />

Verificação formal <strong>da</strong> plata-forma JavaCard (em conjunto com G.<br />

Barthe, G. Dufay):<br />

Definição pioneira <strong>de</strong> uma metodologia para automaticamente<br />

obter (1) <strong>da</strong> Especificação do ambiente <strong>de</strong> execução <strong>de</strong> JavaCard e<br />

(2) <strong>da</strong> Demonstração <strong>de</strong> (citação <strong>de</strong> Milner)<br />

Well-typed (JavaCard) Programs cannot go wrong<br />

uma implementação <strong>da</strong> plataforma e <strong>de</strong> um módulo <strong>de</strong> verificação<br />

estática <strong>de</strong> programas (BCV) <strong>de</strong>monstrados correctos<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Aplicações<br />

Consi<strong>de</strong>rações Finais e Perspectivas<br />

Algumas aplicações bem sucedi<strong>da</strong>s<br />

Caso (antigo) <strong>da</strong> verificação formal do projecto CISC <strong>da</strong> IBM<br />

(Huxley Park- UK & Oxford): Actualização <strong>de</strong> um SI.<br />

<strong>de</strong> 800 000 linhas <strong>de</strong> código, 268 000 reescritas, 37 000 via Z<br />

(só especificação, sem provas)<br />

resultados:<br />

custos <strong>de</strong> <strong>de</strong>senvolvimento −9%<br />

2.5 vezes menos <strong>de</strong> bugs e os bugs <strong>de</strong>tectados foram menos<br />

importantes (logo implicaram menos custos <strong>de</strong> reparação).<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Aplicações<br />

Consi<strong>de</strong>rações Finais e Perspectivas<br />

Consi<strong>de</strong>rações Finais e Perspectivas<br />

Tendência<br />

Emergência <strong>de</strong> um mercado “aliciante” (i.e. $$!) ain<strong>da</strong> por li<strong>de</strong>rar<br />

(por mais quanto tempo?):<br />

Intel, Microsoft, IBM, NASA, Esterel Technology, Prover<br />

Technology, Compaq/HP, SIBS (pt), Si<strong>de</strong>reus (pt), etc...<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Aplicações<br />

Consi<strong>de</strong>rações Finais e Perspectivas<br />

Consi<strong>de</strong>rações Finais e Perspectivas<br />

Tendência<br />

Importância estratégica dos Common Criteria ca<strong>da</strong> vez maior<br />

Perspectivas: 2 eixos.<br />

Desenvolvimento conceptual e técnico <strong>de</strong> novas soluções<br />

(formalismos e ferramentas)<br />

A tendência actual: Utilização ca<strong>da</strong> vez mais intensiva dos<br />

métodos formais (caso FORMAVIE, Trusted Logic etc. . . )<br />

⎧<br />

⎨<br />

⎩<br />

- competência valiosa e procura<strong>da</strong><br />

- o informático, além <strong>de</strong> saber produzir SIs,<br />

<strong>de</strong>verá igualmente saber validá-los, produzir garantias<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Aplicações<br />

Consi<strong>de</strong>rações Finais e Perspectivas<br />

Consi<strong>de</strong>rações Finais e Perspectivas<br />

Tendência<br />

Importância estratégica dos Common Criteria ca<strong>da</strong> vez maior<br />

Perspectivas: 2 eixos.<br />

Desenvolvimento conceptual e técnico <strong>de</strong> novas soluções<br />

(formalismos e ferramentas)<br />

A tendência actual: Utilização ca<strong>da</strong> vez mais intensiva dos<br />

métodos formais (caso FORMAVIE, Trusted Logic etc. . . )<br />

⎧<br />

⎨<br />

⎩<br />

- competência valiosa e procura<strong>da</strong><br />

- o informático, além <strong>de</strong> saber produzir SIs,<br />

<strong>de</strong>verá igualmente saber validá-los, produzir garantias<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos


Contexto e Motivação<br />

Desenvolvimento Formal <strong>de</strong> Software<br />

Panorama dos formalismos e <strong>da</strong>s ferramentas<br />

Conclusões<br />

Aplicações<br />

Consi<strong>de</strong>rações Finais e Perspectivas<br />

Consi<strong>de</strong>rações Finais e Perspectivas<br />

Tendência<br />

Importância estratégica dos Common Criteria ca<strong>da</strong> vez maior<br />

Perspectivas: 2 eixos.<br />

Desenvolvimento conceptual e técnico <strong>de</strong> novas soluções<br />

(formalismos e ferramentas)<br />

A tendência actual: Utilização ca<strong>da</strong> vez mais intensiva dos<br />

métodos formais (caso FORMAVIE, Trusted Logic etc. . . )<br />

⎧<br />

⎨<br />

⎩<br />

- competência valiosa e procura<strong>da</strong><br />

- o informático, além <strong>de</strong> saber produzir SIs,<br />

<strong>de</strong>verá igualmente saber validá-los, produzir garantias<br />

S. Melo <strong>de</strong> Sousa Fiabili<strong>da</strong><strong>de</strong> dos Sistemas Informáticos

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!