Practical Executable Specifications for Distributed Systems Nuno Claudino Pereira Lopes Disserta¸ca˜o para obtenc¸˜ao do Grau de Mestre em Engenharia Inform´atica e de Computadores Ju´ri Presidente: Doutor Nuno Mamede Orientador: Doutor Jos´e Carlos Monteiro Co-Orientador Externo: Doutor Andrey Rybalchenko Vogal: Doutor David Matos Outubro 2009 Let us change our traditional attitude to the construction of programs: Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do. Donald E. Knuth, Literate Programming, CSLI, 1992 Resumo A presente tese descreve o DAHL, um ambiente de programac¸˜ao para o desenvolvimento de sistemas distribu´ıdos. O DAHL oferece uma linguagem de alto n´ıvel especializada para a implementa¸c˜ao de sistemas distribu´ıdos, bem como um ambiente de execu¸c˜ao est´avel e de alto desempenho, que consegue executar programas escritos em DAHL num ambiente de produ¸c˜ao de forma eficiente. AlinguagemDAHL´edeclarativa,baseadaemregrasl´ogicasetemexecuc¸˜aodesencadeadaporeventos, o que permite implementa¸c˜oes concisas, embora leg´ıveis, de aplicac¸˜oes distribu´ıdas. A linguagem DAHL oferece as instru¸c˜oes t´ıpicas de controlo de fluxo, tipos de dados expressivos, bem como um conjunto de predicados de rede e seguran¸ca embutidos. O estado da arte das linguagens para implementar sistemas distribu´ıdos inclui o Mace, que´e baseado em C++ e portanto n˜ao ´e indicado para verfica¸c˜ao formal, e o P2, que ´e baseado em Datalog, uma linguagem orientada para perguntas a bases de dados, que n˜ao ´e suficientemente expressiva para imple- mentar aplica¸c˜oes interessantes. Para al´em disso, a implementa¸c˜ao actual do P2 n˜ao ´e suficientemente eficiente para aplicac¸˜oes que n˜ao sejam puramente limitadas pela rede. O DAHL combina o desempenho e a expressividade do Mace com a concis˜ao do P2 para criar um melhor ambiente de desenvolvimento de sistemas distribu´ıdos. Para demonstrar as potencialidades do DAHL, implement´amos diversas aplicac¸˜oes. Esta tese apre- senta duas dessas implementac¸˜oes: Chord, uma tabela de dispers˜ao distribu´ıda, que ´e um protocolo de rede, e o D’ARMC, um verificador de modelos de software distribu´ıdo, que´e um uma aplicac¸˜ao limitada pelo CPU. Abstract This thesis presents DAHL, a programming environment for the development of distributed systems. DAHL provides a high-level language that is specialized for the implementation of distributed systems, and a stable and high-performance runtime that can efficiently execute DAHL programs in a production environment. The DAHL language is declarative, event-triggered and rule based, which enables concise, albeit clear, implementations of distributed applications. The DAHL language features the usual control-flow statements, expressive data types, as well as a set of network and security related built-in predicates. State-of-the-art languages to implement distributed systems include Mace, which is based on C++ andthuslacksaptitudeforformalverification, andP2, whichisbasedonDatalog, aquerylanguagethat isnotexpressiveenoughtoimplementinterestingapplications. Moreover,thecurrentP2implementation is not efficient enough for non-purely network bound applications. DAHL combines the performance and expressiveness of Mace with the succinctness of P2 to create a better and practical programming environment for the development of distributed applications. To demonstrate the power of DAHL, we implemented several applications of different representative categories. This thesis presents two of them: Chord, a distributed hash table, which is a network driven protocol, and D’ARMC, a distributed software model checker that is CPU-bound. Palavras Chave Keywords Palavras Chave Sistemas Distribu´ıdos Linguagens de Programa¸c˜ao Programa¸ca˜o em Lo´gica Verifica¸ca˜o de Modelos Keywords Distributed Systems Programming Languages Logic Programming Model Checking
Description: