Fiabilidade dos Sistemas Informáticos - Apresentação e Introdução ...
Fiabilidade dos Sistemas Informáticos - Apresentação e Introdução ... Fiabilidade dos Sistemas Informáticos - Apresentação e Introdução ...
Contexto e Motivação Desenvolvimento Formal de Software Panorama dos formalismos e das ferramentas Conclusões Fiabilidade dos Sistemas Informáticos Apresentação e Introdução à Engenharia da Fiabilidade e aos Métodos Formais Simão Melo de Sousa Computer Science Department University of Beira Interior, Portugal S. Melo de Sousa Fiabilidade dos Sistemas Informáticos
- Page 2 and 3: Outline Contexto e Motivação Dese
- Page 4 and 5: Focus Contexto e Motivação Desenv
- Page 6 and 7: Contexto e Motivação Desenvolvime
- Page 8 and 9: Contexto e Motivação Desenvolvime
- Page 10 and 11: Contexto e Motivação Desenvolvime
- Page 12 and 13: Contexto e Motivação Desenvolvime
- Page 14 and 15: Contexto e Motivação Desenvolvime
- Page 16 and 17: Contexto e Motivação Desenvolvime
- Page 18 and 19: Contexto e Motivação Desenvolvime
- Page 20 and 21: Soluções? Contexto e Motivação
- Page 22 and 23: Contexto e Motivação Desenvolvime
- Page 24 and 25: Contexto e Motivação Desenvolvime
- Page 26 and 27: Contexto e Motivação Desenvolvime
- Page 28 and 29: Contexto e Motivação Desenvolvime
- Page 30 and 31: Contexto e Motivação Desenvolvime
- Page 32 and 33: Contexto e Motivação Desenvolvime
- Page 34 and 35: Contexto e Motivação Desenvolvime
- Page 36 and 37: Contexto e Motivação Desenvolvime
- Page 38 and 39: Contexto e Motivação Desenvolvime
- Page 40 and 41: Contexto e Motivação Desenvolvime
- Page 42 and 43: Contexto e Motivação Desenvolvime
- Page 44 and 45: Contexto e Motivação Desenvolvime
- Page 46 and 47: Contexto e Motivação Desenvolvime
- Page 48 and 49: Contexto e Motivação Desenvolvime
- Page 50 and 51: Contexto e Motivação Desenvolvime
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
<strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong><br />
<strong>Apresentação</strong> e <strong>Introdução</strong> à Engenharia da <strong>Fiabilidade</strong><br />
e aos Méto<strong>dos</strong> Formais<br />
Simão Melo de Sousa<br />
Computer Science Department<br />
University of Beira Interior, Portugal<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Outline<br />
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
1 Contexto e Motivação<br />
2 Desenvolvimento Formal de Software<br />
3 Panorama <strong>dos</strong> formalismos e das ferramentas<br />
4 Conclusões<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Plano<br />
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
1 Contexto e Motivação<br />
2 Desenvolvimento Formal de Software<br />
3 Panorama <strong>dos</strong> formalismos e das ferramentas<br />
4 Conclusões<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Focus<br />
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
Introduzir os méto<strong>dos</strong> e as ferramentas que permitam<br />
construir sistemas informáticos isentos de falhas lógica ou<br />
funcionais<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
An appetizer<br />
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
Software and cathedrals are much the same. First<br />
we build them, then we pray.<br />
Anonymous<br />
Formal Methods approach:<br />
Aide toi, et le ciel t’aidera!<br />
Jean de La Fontaine - Le Chartier embourbé. Livre VI - Fable 18.<br />
...That what this course is about.<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
Research guidelines - A biological analogy<br />
An analogy : deseases - biological methodology - vaccine<br />
The desease. W. Wayt Gibbs - Software’s Chronic Crisis:<br />
Despite 50 years of progress, the software industry remains years-perhaps<br />
decades-short of the mature engineering discipline needed to meet the<br />
demands of an information-age society.<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
Research guidelines - A biological analogy<br />
The biomedical methodology for the cure’s quest.<br />
D. E. Knuth:<br />
Our discipline of computer science seems to be one in which theory and<br />
practice are more intimately related than in any other field.....you can’t<br />
get very far in practical work without abstract theories that permit you to<br />
think at a higher level, and at the same time theoretical work becomes<br />
dead if it doesn’t receive fresh inspiration from practical problems in the<br />
”real world”.<br />
Sir Anthony Hoare’s Software Verification Grand Challenge:<br />
A mature scientific discipline should set its own agenda and pursue ideals<br />
of purity, generality, and accuracy far beyond current needs.<br />
E. W. Dijkstra:<br />
Computer Science is no more about computers than Astronomy is about<br />
telescopes, than Biology is about microscope. Computer Science does not<br />
study tools, but what can be achieved or discovered with their help.<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
Research guidelines - A biological analogy<br />
A possible vaccine. Jim Woodcok - Formal Verification of<br />
Software - 1000000 of Verified lines of code:<br />
You can’t say any more it can’t be done! Here, we’ve done<br />
it!<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Hoje em dia:<br />
Difusão <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (em sectores essenciais da<br />
sociedade) cada vez maior;<br />
Complexidade <strong>dos</strong> SIs cada vez maior: tamanho e evolução<br />
técnica;<br />
Emergência de novas tecnologias, de novos merca<strong>dos</strong>, assim<br />
como de novas exigências (segurança, escalabilidade,<br />
disponibilidade, etc.).<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Exemplos:<br />
Informática omnipresente, sociedade digital, e-government,<br />
sistemas embebi<strong>dos</strong>, sistemas de segurança, dinheiro e transacções<br />
electrónicas, sistemas críticos, etc...<br />
Mas. . .<br />
Méto<strong>dos</strong> actuais de desenvolvimento de SIs desactualiza<strong>dos</strong> frente<br />
aos novos desafios técnicos e científicos levanta<strong>dos</strong> pela<br />
emergência e massificação destes SIs.<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
SIs modernos = novos desafios<br />
⎧<br />
⎪⎨<br />
a<br />
⎪⎩<br />
fiabilidade<br />
correcção<br />
segurança<br />
robustez<br />
etc. . .<br />
<strong>dos</strong> SIs como desafio central<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Contribuição à problemática da fiabilidade:<br />
Identificação de algumas noções chaves, como a de ciclo de<br />
vida dum SI<br />
Produção: planeamento, análise, quantificação e gestão <strong>dos</strong><br />
custos, manutenção, etc...<br />
<strong>Introdução</strong> de metodologia de produção, de exploração (etc...)<br />
do SI: =⇒ início de rigor na produção de SIs.<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Quantificação de custos de produção<br />
Manutenção de um SI = 2<br />
3 <strong>dos</strong> custos totais;<br />
Conserto de um erro de especificação: esforço 20 vezes maior<br />
se detectado após produção do SI.<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Inadequação do ciclo Detecção-Conserto<br />
A situação<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
Um erro na especificação pode implicar mais do que um<br />
simples conserto (vidas humanas, impacto económico,<br />
confiança <strong>dos</strong> clientes, etc...);<br />
Existem (muitos) SIs em que o aparecimento de erros é<br />
inaceitável<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Inadequação do ciclo Detecção-Conserto<br />
mais uma vez. . .<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
SIs modernos = novos desafios<br />
⇓<br />
necessidade da fiabilidade como desafio central<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Alguns Factos e Números<br />
Há mais de 10 anos, W. Gibbs dizia:<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
Despite 50 years of progress, the software industry remains years<br />
– perhaps decades – 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 de um canal para bug reports<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Alguns Factos e Números<br />
Impacto económico das falhas nos SIs<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
Ariane V : 2 biliões de $<br />
Avaliação pelo NIST <strong>dos</strong> custos <strong>dos</strong> erros em SIs na economia<br />
<strong>dos</strong> USA<br />
1995 : 81 biliões de $<br />
1996 : 100 biliões de $<br />
2002 : 59.5 biliões de $<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Alguns Factos e Números<br />
Impacto comercial das falhas nos SIs<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
Ruptura de contrato por razões de falta de garantias de<br />
fiabilidade (exemplo da IBM)<br />
US Federal Aviation Agency : 8 biliões de $<br />
DoD : 2 biliões de $<br />
Confiança <strong>dos</strong> clientes. Exemplo da Intel e do Bug do<br />
Pentium: Impacto da perda de confiança <strong>dos</strong> cliente maior do<br />
que o impacto económico do conserto.<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Alguns Factos e Números<br />
etc. . .<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Soluções?<br />
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Infelizmente,<br />
Não há soluções universais!<br />
No entanto, soluções adaptadas e satisfatórias:<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
repensar e adaptar o ciclo de produção de SIs de forma a integrar<br />
a fiabilidade como um requisito central<br />
⇓<br />
Common Criteria<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Soluções?<br />
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Infelizmente,<br />
Não há soluções universais!<br />
No entanto, soluções adaptadas e satisfatórias:<br />
integrar e utilizar méto<strong>dos</strong> de fiabilização :<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Testes e Simulação<br />
Princípio Geral<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
Para um determinado modelo do SI alvo, fornecer um conjunto<br />
de da<strong>dos</strong> representativos e comparar a resposta com o resultado<br />
esperado.<br />
Não existe teste satisfatório:<br />
exaustividade: geralmente impossível (conjunto de valores possíveis<br />
eventualmente infinito)<br />
representatividade: em geral problemas ocorrem quando os da<strong>dos</strong><br />
têm valores inespera<strong>dos</strong> (i.e. não representativos).<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Testes e Simulação<br />
Uma ilustração:<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
Littlewood provou, em 1914 e à surpresa geral de to<strong>dos</strong>, que a<br />
função<br />
π(n) − li(n)<br />
onde<br />
li(n) = n<br />
0<br />
du<br />
ln(u) e li(n) = número de primos ≤ n<br />
muda de sinal infinitamente. Surpresa? sim, porque apesar de<br />
intensos testes sobre valores chegando a 10 10 (antes da aparição<br />
<strong>dos</strong> computadores), nenhuma mudança de sinal foi detectada.<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Algumas considerações<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
Edsger W. Dijkstra:<br />
Program testing can be a very effective way to show<br />
the presence of bugs, but is hopelessly inadequate<br />
for showing their absence.<br />
Os méto<strong>dos</strong> formais só se conseguem debruçar sobre<br />
problemas devidamente formula<strong>dos</strong>. D. Knuth:<br />
Beware of bugs in the above code; I have only<br />
proved it correct, not tried it.<br />
Por isso, D. Syme & A. Gordon:<br />
if you specify you must test.<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Méto<strong>dos</strong> Formais<br />
Uma Definição<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
The term formal methods refers to the use of mathematical<br />
modeling, calculation and prediction in the specification,<br />
design, analysis and assurance of computer systems and<br />
software. The reason it is called formal methods rather than<br />
mathematical modeling 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 />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong><br />
SRI - 1995.
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Méto<strong>dos</strong> Formais<br />
Algumas Propriedades<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
exaustividade: raciocínio formal (por oposição a informal) sobre o<br />
conjunto <strong>dos</strong> valores possíveis na sua globalidade<br />
rigor: bases matemáticas bem assentes<br />
adequação: solução avaliada como satisfatória para a garantia<br />
de fiabilidade (por exemplo em normas ISO como os<br />
Critérios Comuns)<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Critérios Comuns<br />
Origem.<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
Reflexão conjunta de várias entidades normativas sobre a<br />
− necessidade<br />
de um modelo/métrica para a avaliação da<br />
− definição<br />
fiabilidade/segurança <strong>dos</strong> SIs:<br />
Norma ISO-15408 designada por Common Criteria<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Critérios Comuns<br />
Evolução <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong> (SIs)<br />
Engenharia de Software & Análise de <strong>Sistemas</strong><br />
Inadequação do ciclo Detecção-Conserto<br />
Alguns Factos e Números<br />
Testes e Simulação<br />
Méto<strong>dos</strong> Formais & Critérios Comuns<br />
Critérios Comuns = métrica para segurança <strong>dos</strong> SIs<br />
Definição<br />
Métrica organizada em 7 níveis de confiança (Evaluation<br />
Assurance Level – EAL)<br />
Para os mais altos níveis (de EAL5 a EAL7)<br />
Entidade de certificação : Entidade pública (independência da<br />
certificação)<br />
Méto<strong>dos</strong> Formais requeri<strong>dos</strong> (rigor da avaliação)<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Plano<br />
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
1 Contexto e Motivação<br />
2 Desenvolvimento Formal de Software<br />
O Problema Central<br />
3 Panorama <strong>dos</strong> formalismos e das ferramentas<br />
4 Conclusões<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
O Problema Central<br />
Desenvolvimento Formal de Software<br />
Comecemos por uma pequena digressão sobre a noção de<br />
Desenvolvimento de Software (DS).<br />
Objectivo: mostrar (de forma sucinta) que é preciso ajustar os<br />
méto<strong>dos</strong> tradicionais de DS<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Desenvolvimento de Software<br />
Ciclos de vida <strong>dos</strong> SIs: Os classicos<br />
Em V<br />
Em Cascata (Boehm, 1977)<br />
O Problema Central<br />
Méto<strong>dos</strong> Semi-Formais:<br />
SA, SADT, SSADM, MERISE, UML,<br />
etc...<br />
Análise feita, mas não há certezas<br />
relativamente aos requisitos de fiabilidade<br />
No entanto, contribuição positiva.<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
O Problema Central<br />
Desenvolvimento Formal de Software<br />
<strong>Fiabilidade</strong> como requisito Central<br />
Como já o referimos, estes ciclos, assim como os méto<strong>dos</strong> referi<strong>dos</strong>, não<br />
conseguem tomar convenientemente conta <strong>dos</strong> requisitos omnipresentes no<br />
desenvolvimento de SI modernos como a fiabilidade, a correcção a robustez.<br />
Esta apresentação advoga e introduz o<br />
Desenvolvimento Formal de Software<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
O Problema Central<br />
Os Méto<strong>dos</strong> Formais pretendem:<br />
O Problema Central<br />
Garantir que um SI tenha um determinado (bom) comportamento<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
O Problema Central<br />
Os Méto<strong>dos</strong> Formais pretendem:<br />
O Problema Central<br />
Garantir que um SI tenha um determinado (bom) comportamento<br />
<br />
− modelo<br />
Noção central de<br />
− especificação<br />
discurso para a matemática.<br />
para levar o objecto do<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
O Problema Central<br />
Os Méto<strong>dos</strong> Formais pretendem:<br />
O Problema Central<br />
Garantir que um SI tenha um determinado (bom) comportamento<br />
Subdivisão do problema principal em dois sub-problemas<br />
Garantias de comportamentos: Como garantir/verificar ao nível do<br />
modelo o comportamento desejado<br />
Confronto ”modelo vs. implementação”:<br />
1 Como obter de um modelo uma implementação<br />
usufruindo desse comportamento?<br />
2 Como garantir que uma implementação tem o<br />
mesmo comportamento que um modelo?<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
O Problema Central<br />
Especificação Formal e Engenharia de Software: Que<br />
benefícios?<br />
Mais uma vez: Desenvolvimento Formal de Software. Mas como<br />
integrar estas abordagens nos mecanismos clássicos de<br />
desenvolvimento de Software?<br />
Lembrete<br />
Modelar, raciocinar, derivar (transformação sistemática do modelos<br />
em implementação: refinamento, extracção).<br />
Solução: repensar e adaptar os ciclos de vida do Desenvolvimento<br />
(Formal) de Software<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
O Problema Central<br />
Desenvolvimento Formal de Software numa imagem<br />
Balzer Software Life cycle<br />
Modification<br />
Formal Development<br />
Informal Specification<br />
Analysis<br />
Formal Specification<br />
Prototyping<br />
Verification<br />
Refinement/Implementation<br />
Conformity checking<br />
Design Choices<br />
Prototype Simulation<br />
Code<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
O Problema Central<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Plano<br />
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
1 Contexto e Motivação<br />
2 Desenvolvimento Formal de Software<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
3 Panorama <strong>dos</strong> formalismos e das ferramentas<br />
4 Conclusões<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Visita Guiada<br />
O que vem a seguir<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Visita <strong>dos</strong> formalismos e das ferramentas organizada em camadas<br />
de funcionalidades:<br />
Especificar e analisar modelos<br />
Especificar e demonstrar propriedades<br />
Especificar e derivar implementações<br />
Especificar e transformar especificações<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Especificar e Analisar<br />
Princípios Subjacentes<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Formalismos/linguagens/ferramentas para expressar modelos/especificações.<br />
Benefícios Imediatos<br />
Linguagens Formais = Rigorosos e sem Ambiguidades<br />
Obriga a uma reflexão aprofundada e a uma compreensão<br />
detalhada <strong>dos</strong> mecanismos modela<strong>dos</strong> (e.g. D. Syme,<br />
CISC/IBM);<br />
“Esperanto” ideal para a documentação e comunicação entre as<br />
diferentes partes envolvidas na produção do SI;<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Especificar e Analisar<br />
Princípios Subjacentes<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Formalismos/linguagens/ferramentas para expressar modelos/especificações.<br />
Benefícios Imediatos<br />
Linguagens Formais = Rigorosos e sem Ambiguidades<br />
No caso da existência de uma implementação do formalismo,<br />
observação directa do comportamento sem necessidade de<br />
implementação: prototipagem<br />
Enquadramento formal propício ao raciocínio matemático<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Construir Modelos/Especificações<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Vamos aqui nos debruçar sobre o primeiro sub-problema, em<br />
particular sobre a construção de especificações<br />
Definição Informal<br />
Especificação Formal: Descrição Formal do ”QUÊ” dum<br />
sistema por desenvolver (por oposição ao ”COMO”).<br />
=⇒ resultado da fase de analise.<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Construir Modelos/Especificações<br />
Abordagens à Especificação<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Objectivo: dar uma formulação matemática (rigorosa, formal) do comportamento do<br />
sistema por modelar.<br />
Comecemos por distinguir duas grandes famílias de especificações formais. Ênfase:<br />
nos da<strong>dos</strong> manipula<strong>dos</strong>. O comportamento do sistema alvo pode ser expresso<br />
via os da<strong>dos</strong> que manipula e pela forma com que estes da<strong>dos</strong> evoluem ou se<br />
relacionam: especificação algébrica, ou ainda, baseada em axiomas .<br />
nas operações. O comportamento pode ser expresso via as operações,<br />
mecanismos de que dispõe ou ainda as acções que é capaz de executar. Aqui o<br />
cerne da especificação é as modificações que as operações efectuam sobre um<br />
estado interno: especificação baseada em esta<strong>dos</strong> ou modelos.<br />
Existe igualmente uma catalogação ortogonal: modelos sequenciais ou modelos<br />
concorrentes (CSP, CCS, Álgebra <strong>dos</strong> Processos, Π − calculus, etc...).<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Construir Modelos/Especificações<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Especificação Orientada a Esta<strong>dos</strong>/Modelos<br />
Princípios<br />
Determinar a noção de estado para o sistema alvo e privilegiar a descrição de<br />
que como as operações do sistema alteram o estado.<br />
A matemática subjacente<br />
Matemática discreta, teoria <strong>dos</strong> conjuntos, teoria das categorias, lógica<br />
Exemplos de formalismos - sistemas<br />
Sequencial: Z, VDM, B, Charity, Perfect Developer,<br />
Concorrência: Redes de Petri, CCS, CSP, UNITY, event B etc...<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Máquinas de Esta<strong>dos</strong> Abstractos<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Formalismos da família <strong>dos</strong> sistemas de transição baseado nas<br />
noções de estado e de transformações de estado,<br />
SI = máquina abstracta = conjunto de esta<strong>dos</strong> + conjunto de<br />
transições não determinísticas<br />
Transição = condição de eleição + transformações ao estado<br />
da máquina<br />
Turing-equivalente<br />
Implementações existentes: ASM Gopher, Sistema B<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Teoria <strong>dos</strong> Conjuntos e das Categorias<br />
estado = conjunto + funções + relações<br />
transição = invariantes + pre/post condições<br />
formalismo particularmente expressivo e modular<br />
alvo de numerosas implementações : Z, VDM, RAISE,<br />
SPECWARE, CHARITY, CAMILA, etc...<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Especificação Algébrica<br />
Princípios<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Definir o domínio do discurso (os da<strong>dos</strong> sobre os quais nos<br />
irmos debruçar)<br />
Fornecer uma descrição axiomática do comportamento das<br />
operações que podem manipular o alvo do discurso<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Especificação Algébrica<br />
A matemática subjacente<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Âlgebra (em particular ”multi-sorted algebra”), Indução, Lógica<br />
equacional<br />
tipos de da<strong>dos</strong> do SI alvo = conjuntos<br />
funções do SI alvo =<br />
símbolos de funções introduzi<strong>dos</strong> por assinaturas<br />
propriedades <strong>dos</strong> símbolos estabeleci<strong>dos</strong> por axiomas<br />
Exemplos de formalismos - sistemas<br />
Sequencial:ACT-ONE, CLEAR, OBJ, CASL, SPECWARE, etc...<br />
Concorrência: LOTOS, etc...<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Especificação Híbridas: Princípios<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Misturar as especificações por modelos com especificação algébrica.<br />
Exemplos: RAISE (VDM+CSP), Extended LOTOS, ZCCS, etc...<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Outras Famílias de Especificação formal<br />
Ortogonalmente a estas duas famílias de metodologias e<br />
ferramentas existem outras categorias cada vez mais populares e<br />
que tendem em complementar ou em integrar-se no universo<br />
existente da especificação formal.<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Modelização por Autómatos<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Outro formalismo da família <strong>dos</strong> sistemas de transição<br />
transição = evento<br />
formalismo particularmente adaptado para a modelação do<br />
comportamento do SI alvo: hardware, SI concorrente, SI<br />
reactivo, SI comunicante, protocolo etc...<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Modelização Declarativa<br />
Uma classe importante de formalismos:<br />
Formalismos lógicos<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
baseado na noção de predica<strong>dos</strong> de primeira ordem<br />
tipos de da<strong>dos</strong> do SI alvo = estrutura de da<strong>dos</strong> (simples) da<br />
linguagem alvo<br />
função = descrição via propriedades comportamentais<br />
implementações: Prolog,λ-Prolog, etc...<br />
animação e execuçãos<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Modelização Declarativa<br />
Formalismos lógico-funcionais<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
baseado no λ-cálculo (teoria das funções de ordem superior)<br />
tipos de da<strong>dos</strong> do SI alvo = tipos de da<strong>dos</strong> (arbitrariamente<br />
complexos) da linguagem alvo (tipos indutivos, dependentes,<br />
etc..)<br />
função = funções de ordem superior<br />
implementações:<br />
linguagens: Scheme, SML, Haskell, OCaml,<br />
sistemas de prova: ACL2, DECLARE, COQ, PVS, HOL,<br />
ISABELLE etc...<br />
Possibilidade de animação e de execução<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Modelização Declarativa<br />
<strong>Sistemas</strong> de reescrita<br />
baseada na noção de redução<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
tipos de da<strong>dos</strong> do SI alvo = estrutura de da<strong>dos</strong> da linguagem<br />
alvo<br />
função = descrição computacional via equações<br />
implementações: ELAN, SPIKE etc...<br />
animação e execução<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Modelização Declarativa<br />
Semântca das linguagens de programação<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
família de formalismos adapta<strong>dos</strong> para a expressão matemática de<br />
linguagens de programação.<br />
ambiente para a expressão de semânticas (expressão <strong>dos</strong><br />
símbolos e do comportamento semântico destes)<br />
animação e execução<br />
implementações: Action-Semantics, LETOS, ASF+SDF,<br />
Centaur, RML, etc...<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Especificar e Demonstrar<br />
Garantir um comportamento<br />
animar ou executar é insuficiente<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
necessidade de demonstrar: verificação formal<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Especificar e Demonstrar<br />
3 tipos de 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 de raciocínios<br />
3 Ferramentas fornecendo um sistema<br />
formal e um suporte computacional<br />
para a expressão de demonstrações<br />
Focus<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
=⇒ Panorama <strong>dos</strong> sistemas de nível 3<br />
demonstração “manual”, em língua natural<br />
que é válida se convencer a comunidade<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Especificar e Demonstrar<br />
3 tipos de 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 de raciocínios<br />
3 Ferramentas fornecendo um sistema<br />
formal e um suporte computacional<br />
para a expressão de demonstrações<br />
Focus<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
=⇒ Panorama <strong>dos</strong> sistemas de nível 3<br />
demonstração “manual” e uso exclusivo de<br />
linguagem formal para a expressão da<br />
demonstração<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Especificar e Demonstrar<br />
3 tipos de 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 de raciocínios<br />
3 Ferramentas fornecendo um sistema<br />
formal e um suporte computacional<br />
para a expressão de demonstrações<br />
Focus<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
=⇒ Panorama <strong>dos</strong> sistemas de nível 3<br />
=⇒ Mais rigoroso (e.g. Lamport, etc...)<br />
i.e. no mesmo enquadramento:<br />
expressão formal de um modelo e da sua<br />
demonstração, verificação mecânica de<br />
demonstrações de propriedades do modelo.<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Especificar e Demonstrar<br />
3 tipos de 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 de raciocínios<br />
3 Ferramentas fornecendo um sistema<br />
formal e um suporte computacional<br />
para a expressão de demonstrações<br />
Focus<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
=⇒ Panorama <strong>dos</strong> sistemas de nível 3<br />
=⇒ Mais rigoroso (e.g. Lamport, etc...)<br />
i.e. no mesmo enquadramento:<br />
expressão formal de um modelo e da sua<br />
demonstração, verificação mecânica de<br />
demonstrações de propriedades do modelo.<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
<strong>Sistemas</strong> de Prova<br />
Conceito<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
sistema formal = sistema dedutivo<br />
Isto é: permitam a expressão de modelos e a demonstração de<br />
propriedades<br />
a variedade <strong>dos</strong> formalismos desta família explica-se pelo balanço<br />
entre dois factores antagónicos por considerar:<br />
expressividade lógica<br />
versus<br />
automatização da dedução<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Demonstradores de Teoremas<br />
. . . ou Automated Theorem Provers<br />
Privilegia: automatização da dedução<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Vantagens: Após parametrização do motor de dedução, a<br />
demonstração é automática<br />
Possibilidade de raciocínio sobre conjuntos<br />
infinitos (e.g. por indução)<br />
Desvantagem: Nem tudo o que pretendemos expressar pode ser<br />
expresso<br />
<strong>Sistemas</strong>: Prolog, SPIKE ELAN, ACL2, etc...<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
<strong>Sistemas</strong> de Prova Assistida<br />
. . . ou Proof Assistants<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Privilegia: expressividade lógica (em geral lógica de ordem<br />
superior)<br />
Vantagens: Muitas propriedades/demonstrações precisam dessa<br />
expressividade Raciocínio próximo do raciocínio<br />
matemático standard<br />
Desvantagem: lógica indecidível =⇒ intervenção do utilizador<br />
necessária<br />
<strong>Sistemas</strong>: Coq, PVS, DECLARE, HOL, ISABELLE<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Verificação de Modelos<br />
. . . ou Model Checking<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Abordagem alternativa aos sistemas de prova com muitas<br />
aplicações bem sucedidas<br />
Técnica de verificação propriedades de SI modela<strong>dos</strong> como<br />
sistemas (concorrentes) de esta<strong>dos</strong> finitos (e.g. autómatos)<br />
Propriedades esperadas expressas por fórmulas de uma<br />
determinada lógica temporal<br />
Verificação de propriedade traduzida numa determinada<br />
exploração do sistema de transição<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Verificação de Modelos<br />
. . . ou Model Checking<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Vantagens: Demonstração Automática<br />
Exibição de um contra-exemplo em caso de erro<br />
Desvantagens: Problema da explosão do espaço de esta<strong>dos</strong><br />
(crescimento exponencial do grafo de estado em<br />
relação ao tamanho do sistema modelado)<br />
Nõ sabe lidar com conjuntos infinitos<br />
<strong>Sistemas</strong>: SMV, Murphy, SPIN, Kronos, Design/CPN, etc. . .<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Anotações de programas e Lógica de Hoare<br />
Consiste em<br />
Anotações lógicas do programa fonte (pre/post condições,<br />
invariantes)<br />
construção automática de um modelo w.r.t. semântica<br />
axiomática da linguagem alvo<br />
suporte para a demonstração de propriedades (delegação da<br />
demonstração a verificadores de modelos, sistemas de prova<br />
etc...)<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Anotações de programas e Lógica de Hoare<br />
. . . ou design by contracts<br />
Vantagens: Democratiza a verificação formal de SIs ao colocar o<br />
papel da verificação na mão de quem<br />
desenha/desenvolve o SI alvo<br />
Desvantagens: Desenhar anotações é uma arte que nem to<strong>dos</strong><br />
dominam ( Democratização elitista :) )<br />
<strong>Sistemas</strong>: fortemente liga<strong>dos</strong> ás linguagens alvo.<br />
Java: JML, LOOP tool, ESC/JAVA, Bandera,<br />
Jive, Jack etc...<br />
C♯: Spec♯<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Especificar e Derivar<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Segundo Subproblema central <strong>dos</strong> Méto<strong>dos</strong> Formais<br />
Obter uma implementação de uma especificação aprovada<br />
Soluções?<br />
A própria linguagem de especificação é uma linguagem de<br />
programação =⇒ Q.E.D.<br />
Refinamento<br />
Extracção<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Especificar e Derivar<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Refinamento<br />
Técnica que permite a síntese “passo a passo” de implementações a<br />
partir de especificações.<br />
1 passo = uma escolha de implementação (e.g. um conjunto<br />
por uma lista ligada, uma ordenação pela ordenação<br />
“quicksort”, etc. . . )<br />
cada passo tem de ser formalmente justificado (e.g. não altera<br />
nem o comportamento e nem as propriedades da especificação<br />
fonte)<br />
<strong>Sistemas</strong>: Z, VDM, B, SPECWARE<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Especificar e Derivar<br />
Extracção<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Lógica inerente aos sistemas de prova assistida = lógica<br />
intuicionista =⇒ Isomorfismo de Curry-Howard<br />
Isomorfismo de Curry-Howard<br />
λ-calculo lógica programação<br />
tipo enunciado lógico especificação<br />
termo demonstração programa<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Especificar e Derivar<br />
Extracção<br />
Conceito: Seja T o teorema<br />
<strong>Sistemas</strong>: COQ<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
∀(x, y) ∈ N 2 .∃(q, r) ∈ N 2 .(y = (q × x + r) ∧ r < x)<br />
Na lógica intuicionista na na interpretação de<br />
Curry-Howard, uma demonstração de T é uma<br />
função que calcula o par (q, r) que testemunha da<br />
validade de T =⇒ Q.E.D.<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Especificar e Transformar<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Abstrair e Refinar<br />
A situação: Necessidade de mecanismos de transformação de<br />
modelos (e.g. definir uma variação, uma<br />
simplificação, extensão etc...) para expressar provas<br />
complexas, modulares em especificações de tamanho<br />
grande etc...<br />
Exemplo: Abstracção de especificações para focar a<br />
especificação sobre um determinado comportamento<br />
alvo da demonstração<br />
<strong>Sistemas</strong>: ASF+SDF, JaKarTa<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Especificar e Transformar<br />
Potencial das Combinações<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Não existe nenhuma ferramenta que permite resolver de forma<br />
global e satisfatória o problema central<br />
⇓<br />
pertinência das plataformas de especificação permitindo a<br />
colaboração de vários méto<strong>dos</strong> formais: JaKarTa<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Uma Contribuição: JaKarTa<br />
Visita Guiada<br />
Especificar e Analisar<br />
Especificar e Demonstrar<br />
Especificar e Derivar<br />
Especificar e Transformar<br />
Objectivo: permitir um tratamento satisfatório e global.<br />
uma arquitectura centrada numa plataforma de especificação<br />
própria;<br />
mecanismos de comunicação com diferentes méto<strong>dos</strong> formais<br />
(sistemas de prova, demonstradores de teoremas, linguagens<br />
de programação);<br />
mecanismos de administração e automação de demonstrações<br />
(em COQ);<br />
mecanismos de transformações de especificação;<br />
mecanismos de prova de correcção das transformações<br />
realizadas.<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Plano<br />
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
1 Contexto e Motivação<br />
2 Desenvolvimento Formal de Software<br />
Aplicações<br />
Considerações Finais e Perspectivas<br />
3 Panorama <strong>dos</strong> formalismos e das ferramentas<br />
4 Conclusões<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Algumas aplicações bem sucedidas<br />
Muitos exemplos, <strong>dos</strong> quais:<br />
Aplicações<br />
Considerações Finais e Perspectivas<br />
hardware, protocolos, redes, SOs, sistemas críticos,<br />
plataformas de execução, software, etc...<br />
Áreas de aplicações:<br />
Aviação (NASA, FAA, ARIANE, etc...),<br />
Caminhos de ferro (Metro, etc...)<br />
<strong>Sistemas</strong> nucleares<br />
<strong>Sistemas</strong> médicos<br />
<strong>Sistemas</strong> embebi<strong>dos</strong><br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Algumas aplicações bem sucedidas<br />
Uma contribuição<br />
Aplicações<br />
Considerações Finais e Perspectivas<br />
Verificação formal da plata-forma JavaCard (em conjunto com G.<br />
Barthe, G. Dufay):<br />
Definição pioneira de uma metodologia para automaticamente<br />
obter (1) da Especificação do ambiente de execução de JavaCard e<br />
(2) da Demonstração de (citação de Milner)<br />
Well-typed (JavaCard) Programs cannot go wrong<br />
uma implementação da plataforma e de um módulo de verificação<br />
estática de programas (BCV) demonstra<strong>dos</strong> correctos<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Algumas aplicações bem sucedidas<br />
Aplicações<br />
Considerações Finais e Perspectivas<br />
Caso (antigo) da verificação formal do projecto CISC da IBM<br />
(Huxley Park- UK & Oxford): Actualização de um SI.<br />
de 800 000 linhas de código, 268 000 reescritas, 37 000 via Z<br />
(só especificação, sem provas)<br />
resulta<strong>dos</strong>:<br />
custos de desenvolvimento −9%<br />
2.5 vezes menos de bugs e os bugs detecta<strong>dos</strong> foram menos<br />
importantes (logo implicaram menos custos de reparação).<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Considerações Finais e Perspectivas<br />
Tendência<br />
Aplicações<br />
Considerações Finais e Perspectivas<br />
Emergência de um mercado “aliciante” (i.e. $$!) ainda por liderar<br />
(por mais quanto tempo?):<br />
Intel, Microsoft, IBM, NASA, Esterel Technology, Prover<br />
Technology, Compaq/HP, SIBS (pt), Sidereus (pt), etc...<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Considerações Finais e Perspectivas<br />
Aplicações<br />
Considerações Finais e Perspectivas<br />
Tendência<br />
Importância estratégica <strong>dos</strong> Common Criteria cada vez maior<br />
Perspectivas: 2 eixos.<br />
Desenvolvimento conceptual e técnico de novas soluções<br />
(formalismos e ferramentas)<br />
A tendência actual: Utilização cada vez mais intensiva <strong>dos</strong><br />
méto<strong>dos</strong> formais (caso FORMAVIE, Trusted Logic etc. . . )<br />
⎧<br />
⎨<br />
⎩<br />
- competência valiosa e procurada<br />
- o informático, além de saber produzir SIs,<br />
deverá igualmente saber validá-los, produzir garantias<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Considerações Finais e Perspectivas<br />
Aplicações<br />
Considerações Finais e Perspectivas<br />
Tendência<br />
Importância estratégica <strong>dos</strong> Common Criteria cada vez maior<br />
Perspectivas: 2 eixos.<br />
Desenvolvimento conceptual e técnico de novas soluções<br />
(formalismos e ferramentas)<br />
A tendência actual: Utilização cada vez mais intensiva <strong>dos</strong><br />
méto<strong>dos</strong> formais (caso FORMAVIE, Trusted Logic etc. . . )<br />
⎧<br />
⎨<br />
⎩<br />
- competência valiosa e procurada<br />
- o informático, além de saber produzir SIs,<br />
deverá igualmente saber validá-los, produzir garantias<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>
Contexto e Motivação<br />
Desenvolvimento Formal de Software<br />
Panorama <strong>dos</strong> formalismos e das ferramentas<br />
Conclusões<br />
Considerações Finais e Perspectivas<br />
Aplicações<br />
Considerações Finais e Perspectivas<br />
Tendência<br />
Importância estratégica <strong>dos</strong> Common Criteria cada vez maior<br />
Perspectivas: 2 eixos.<br />
Desenvolvimento conceptual e técnico de novas soluções<br />
(formalismos e ferramentas)<br />
A tendência actual: Utilização cada vez mais intensiva <strong>dos</strong><br />
méto<strong>dos</strong> formais (caso FORMAVIE, Trusted Logic etc. . . )<br />
⎧<br />
⎨<br />
⎩<br />
- competência valiosa e procurada<br />
- o informático, além de saber produzir SIs,<br />
deverá igualmente saber validá-los, produzir garantias<br />
S. Melo de Sousa <strong>Fiabilidade</strong> <strong>dos</strong> <strong>Sistemas</strong> <strong>Informáticos</strong>