Publicação
Tools and techniques for the static verification of progress in communication-centred systems
| Resumo: | Com a crescente disseminação da computação distribuída nos últimos anos, a forma como prevenimos os erros de programas concorrentes é cada vez mais importante. O desenvolvimento de programas concorrentes é difícil, exigindo ao programador um grande esforço para tentar “prever” possíveis estados futuros do programa. Num sistema concorrente a execução¸ ˜ao pode ter um amplo número de caminhos possíveis cujo resultado pode ser inesperado. Mesmo realizando intensivos testes de software, pode-se nunca chegar a explorar a sequência necessária para encontrar os caminhos que levam a certos erros, tornando estes testes insuficientes. Um dos erros difíceis de detetar ´e a ocorrência de pontos de bloqueio, designados por deadlocks. Um sistema possui a propriedade de progresso, quando na sua execução¸ ao não ocorrem pontos de bloqueio. É necessário provar que nenhum caminho possível revela surpresas, para garantir que existe progresso no sistema. A nossa abordagem procura garantir a ausência de pontos de bloqueio, para além de outras propriedades de correção, implementando técnicas de verificação a serem usadas em ferramentas de análise estática (apenas inspecionando o código fonte). A verificação vai ser realizada em sistemas concorrentes baseados em troca de mensagens, onde vão ser garantidas as propriedades de fidelidade e progresso. Garantindo estas propriedades é possível ter a certeza que as mensagens trocadas seguem um protocolo bem definido e que o sistema está livre de pontos de bloqueio. A linguagem de modelação de sistemas usada no contexto deste trabalho é baseada no calculo π introduzido por Milner, Parrow e Walker [5, 6], um modelo universal de computação que permite modelar e especificar de uma forma precisa sistemas de processos concorrentes, servindo posteriormente de suporte para técnicas rigorosas de análise de propriedades. Para garantir a propriedade de progresso vai ser usado um sistema de tipos que unifica a noção de evento com os tipos de sessão introduzido por Honda, Kubo e Vasconcelos [2, 3] que permitem descrever o protocolo de comunicação entre dois participantes pontoa- ponto. O uso da noção de evento introduzido por Vieira e Vasconcelos [9], permite capturar as dependências das comunicações entre processos e suporta a verificação que estas estão bem estruturadas. Como objetivo, vão ser endereçadas comunicações ponto-a-ponto sendo-nos dadas as especificações dos tipos (incluindo as anotações de eventos) e a ordenação de eventos, por forma a conferir se o programa está de acordo com as especificações. |
|---|---|
| Autores principais: | Camacho, André Filipe Marinhas Henriques da Silva |
| Assunto: | Verificação de software Sistema de tipos Fidelidade Progresso Concorrência Teses de mestrado - 2014 |
| Ano: | 2014 |
| País: | Portugal |
| Tipo de documento: | dissertação de mestrado |
| Tipo de acesso: | acesso aberto |
| Instituição associada: | Universidade de Lisboa |
| Idioma: | inglês |
| Origem: | Repositório da Universidade de Lisboa |
| Resumo: | Com a crescente disseminação da computação distribuída nos últimos anos, a forma como prevenimos os erros de programas concorrentes é cada vez mais importante. O desenvolvimento de programas concorrentes é difícil, exigindo ao programador um grande esforço para tentar “prever” possíveis estados futuros do programa. Num sistema concorrente a execução¸ ˜ao pode ter um amplo número de caminhos possíveis cujo resultado pode ser inesperado. Mesmo realizando intensivos testes de software, pode-se nunca chegar a explorar a sequência necessária para encontrar os caminhos que levam a certos erros, tornando estes testes insuficientes. Um dos erros difíceis de detetar ´e a ocorrência de pontos de bloqueio, designados por deadlocks. Um sistema possui a propriedade de progresso, quando na sua execução¸ ao não ocorrem pontos de bloqueio. É necessário provar que nenhum caminho possível revela surpresas, para garantir que existe progresso no sistema. A nossa abordagem procura garantir a ausência de pontos de bloqueio, para além de outras propriedades de correção, implementando técnicas de verificação a serem usadas em ferramentas de análise estática (apenas inspecionando o código fonte). A verificação vai ser realizada em sistemas concorrentes baseados em troca de mensagens, onde vão ser garantidas as propriedades de fidelidade e progresso. Garantindo estas propriedades é possível ter a certeza que as mensagens trocadas seguem um protocolo bem definido e que o sistema está livre de pontos de bloqueio. A linguagem de modelação de sistemas usada no contexto deste trabalho é baseada no calculo π introduzido por Milner, Parrow e Walker [5, 6], um modelo universal de computação que permite modelar e especificar de uma forma precisa sistemas de processos concorrentes, servindo posteriormente de suporte para técnicas rigorosas de análise de propriedades. Para garantir a propriedade de progresso vai ser usado um sistema de tipos que unifica a noção de evento com os tipos de sessão introduzido por Honda, Kubo e Vasconcelos [2, 3] que permitem descrever o protocolo de comunicação entre dois participantes pontoa- ponto. O uso da noção de evento introduzido por Vieira e Vasconcelos [9], permite capturar as dependências das comunicações entre processos e suporta a verificação que estas estão bem estruturadas. Como objetivo, vão ser endereçadas comunicações ponto-a-ponto sendo-nos dadas as especificações dos tipos (incluindo as anotações de eventos) e a ordenação de eventos, por forma a conferir se o programa está de acordo com as especificações. |
|---|