| Métodos Formais em Engenharia de Software |
|---|
| Cálculo de Sistemas de Informação |
| Programação Ciber-física |
| Verificação Formal |
| Anos anteriores |
| Calendário | Sumários |
| Alumni |
Em UCs passadas, nomeadamente em MFES, já foi abordada a verificação dedutiva de algoritmos imperativos sequenciais e de algoritmos funcionais. Nesta UC serão abordadas técnicas para especificação e verificação de algoritmos não sequenciais, nomeadamente algoritmos concorrentes, self-stabilizing e distribuídos.
Na primeira parte será abordada a especificação de algoritmos usando TLA+, uma linguagem introduzida por Leslie Lamport precisamente com o objectivo de simplificar a especificação de algoritmos não sequenciais. As especificações em TLA+ podem ser verificadas automaticamente com o model-checker TLC, e esta abordagem lightweight fez com que o TLA+/TLC tenha sido frequentement adoptado pela indústria (e.g. Amazon) para verificar algoritmos complexos.
Na segunda parte será abordada a verificação dedutiva destes mesmos algoritmos, técnica que permitirá verificar a sua correção para qualquer configuração possível, o que não é possível com o model-checking que apenas pode ser usado para verificar um conjunto de configurações limitado. Para tal será usado o Why3, já previamente introduzido em MFES, uma ferramenta que usa SMT solvers para efectuar a prova automática das condições de verificação inerentes à verificação dedutiva.
| Tipo | Horário | Sala |
|---|---|---|
| Teórica | 4ªf. 9h-11h | CP2 2.11 |
| Teórico-prática | 4ªf. 11h-12h | CP2 2.11 |
| # | Data | Docentes | Sumário |
|---|---|---|---|
| 1 | 5 Fev | MAC | Introdução ao TLA+: a Temporal Logic of Actions, especificação de sistemas de transição de estados, propriedades de safety. |
| 2 | 12 Fev | MAC | Introdução ao TLA+: propriedades de liveness e refinamento. Especificação e verificação de algoritmos concorrentes com TLA+. |
| 3 | 19 Fev | MAC | Especificação e verificação de algoritmos concorrentes com TLA+. |
| 4 | 26 Fev | MAC | Especificação e verificação de algoritmos self-stabilizing com TLA+. |
| 5 | 5 Mar | MAC | Especificação e verificação de algoritmos distribuídos com TLA+. |
| 6 | 12 Mar | MAC | Especificação e verificação de algoritmos distribuídos com TLA+. |
| 7 | 19 Mar | MAC | 1º Teste |
| 8 | 26 Mar | JSP | Verificação dedutiva de sistemas de transição em Why3 |
| 9 | 2 Abr | JSP | Verificação dedutiva de algoritmos concorrentes em Why3 |
| 10 | 9 Abr | JSP | Verificação dedutiva de algoritmos de exclusão mútua com passagem de ‘token’ em Why3 |
| 11 | 23 Abr | JSP | Verificação dedutiva de algoritmos distribuídos (com troca de mensagens) em Why3 |
| 12 | 30 Abr | JSP | Refinamento de sistemas de transição em Why3 |
| 13 | 7 Mai | JSP | Verificação de um algoritmo de consenso de blockchain em Why3 |
| 14 | 28 Mai | JSP | 2º Teste |
| 16 Jun | MAC+JSP | Exame |
O segundo teste será substituído pela entrega de (no mínimo) duas formalizações em Why3, de entre os exercícios propostos no final das aulas. Lista-se aqui todas as propostas, para referências (os detalhes podem ser consultados nas notas das aulas):
Aconselha-se que a escolha recaia sobre dois modelos distintos. Por exemplo, não deverão submeter (apenas!) duas versões do algoritmo de Peterson! Mas se acrescentarem um outro exercício, o facto de enviarem duas versões servirá para valorizar o trabalho (em caso de dúvida sobre a escolha de exercícios não hesitem em enviar email!).
A data para entrega (não muito rígida) será a do segundo teste. Será criada uma entrada para esse efeito no Blackboard.