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