15 research outputs found

    Benefits of Session Types for software Development

    Get PDF
    Session types are a formalism used to specify and check the correctness of communication based systems. Within their scope, they can guarantee the absence of communication errors such as deadlock, sending an unexpected message or failing to handle an incoming message. Introduced over two decades ago, they have developed into a significant theme in programming languages. In this paper we examine the beliefs that drive research into this area and make it popular. We look at the claims and motivation behind session types throughout the literature. We identify the hypotheses upon which session types have been designed and implemented, and attempt to clarify and formulate them in a more suitable manner for testing

    A model of actors and grey failures

    Full text link
    Existing models for the analysis of concurrent processes tend to focus on fail-stop failures, where processes are either working or permanently stopped, and their state (working/stopped) is known. In fact, systems are often affected by grey failures: failures that are latent, possibly transient, and may affect the system in subtle ways that later lead to major issues (such as crashes, limited availability, overload). We introduce a model of actor-based systems with grey failures, based on two interlinked layers: an actor model, given as an asynchronous process calculus with discrete time, and a failure model that represents failure patterns to inject in the system. Our failure model captures not only fail-stop node and link failures, but also grey failures (e.g., partial, transient). We give a behavioural equivalence relation based on weak barbed bisimulation to compare systems on the basis of their ability to recover from failures, and on this basis we define some desirable properties of reliable systems. By doing so, we reduce the problem of checking reliability properties of systems to the problem of checking bisimulation

    Mungo and StMungo: tools for typechecking protocols in Java

    Get PDF
    We present two tools that support static typechecking of communica- tion protocols in Java. Mungo associates Java classes with typestate specifications, which are state machines defining permitted sequences of method calls. StMungo translates a communication protocol specified in the Scribble protocol description language into a typestate specification for each role in the protocol by following the message sequence. Role implementations can be typechecked by Mungo to ensure that they satisfy their protocols, and then compiled as usual with javac. We demonstrate the Scribble, StMungo and Mungo toolchain via a typechecked POP3 client that can communicate with a real-world POP3 server

    A Theory of Composing Protocols

    Get PDF
    In programming, protocols are everywhere. Protocols describe the pattern of interaction (or communication) between software systems, for example, between a user-space program and the kernel or between a local application and an online service. Ensuring conformance to protocols avoids a significant class of software errors. Subsequently, there has been a lot of work on verifying code against formal protocol specifications. The pervading approaches focus on distributed settings involving parallel composition of processes within a single monolithic protocol description. However we observe that, at the level of a single thread/process, modern software must often implement a number of clearly delineated protocols at the same time which become dependent on each other, e.g., a banking API and one or more authentication protocols. Rather than plugging together modular protocol-following components, the code must re-integrate multiple protocols into a single component. We address this concern of combining protocols via a novel notion of ‘interleaving’ composition for protocols described via a process algebra. User-specified, domain-specific constraints can be inserted into the individual protocols to serve as ‘contact points’ to guide this composition procedure, which outputs a single combined protocol that can be programmed against. Our approach allows an engineer to then program against a number of protocols that have been composed (re-integrated), reflecting the true nature of applications that must handle multiple protocols at once. We prove various desirable properties of the composition, including behaviour preservation: that the composed protocol implements the behaviour of both component protocols. We demonstrate our approach in the practical setting of Erlang, with a tool implementing protocol composition that both generates Erlang code from a protocol and generates a protocol from Erlang code. This tool shows that, for a range of sample protocols (including real-world examples), a modest set of constraints can be inserted to produce a small number of candidate compositions to choose from. As we increasingly build software interacting with many programs and subsystems, this new perspective gives a foundation for improving software quality via protocol conformance in a multi-protocol setting

    A theory of composing protocols

    Get PDF
    In programming, protocols are everywhere. Protocols describe the pattern of interaction (or communication) between software systems, for example, between a user-space program and the kernel or between a local application and an online service. Ensuring conformance to protocols avoids a significant class of software errors. Subsequently, there has been a lot of work on verifying code against formal protocol specifications. The pervading approaches focus on distributed settings involving parallel composition of processes within a single monolithic protocol description. However we observe that, at the level of a single thread/process, modern software must often implement a number of clearly delineated protocols at the same time which become dependent on each other, e.g., a banking API and one or more authentication protocols. Rather than plugging together modular protocol-following components, the code must re-integrate multiple protocols into a single component. We address this concern of combining protocols via a novel notion of ‘interleaving’ composition for protocols described via a process algebra. User-specified, domain-specific constraints can be inserted into the individual protocols to serve as ‘contact points’ to guide this composition procedure, which outputs a single combined protocol that can be programmed against. Our approach allows an engineer to then program against a number of protocols that have been composed (re-integrated), reflecting the true nature of applications that must handle multiple protocols at once. We prove various desirable properties of the composition, including behaviour preservation: that the composed protocol implements the behaviour of both component protocols. We demonstrate our approach in the practical setting of Erlang, with a tool implementing protocol composition that both generates Erlang code from a protocol and generates a protocol from Erlang code. This tool shows that, for a range of sample protocols (including real-world examples), a modest set of constraints can be inserted to produce a small number of candidate compositions to choose from. As we increasingly build software interacting with many programs and subsystems, this new perspective gives a foundation for improving software quality via protocol conformance in a multi-protocol setting

    A theory of protocol composition

    Get PDF
    Real-world communication protocols are often built out of a number of simpler protocols that cater for some specific functionality (e.g., banking, authentication). However much of the formal definitions of protocols used for program verification treat protocols as monolithic units. Composition is considered for implementations of a protocol, but not for the protocols themselves as engineering components. We propose primitives and techniques for the modular composition of protocols. Our notion of composition defines an interleaving of two or more protocols in a way that satisfies user-specified context-dependent constraints which serve to explain “contact points” between the protocols. The resulting approach gives a theoretical basis for protocol (re-)engineering based on a process calculus with constraint annotations. We have implemented our approach as a tool for Erlang that supports generation of protocol compositions with formal guarantees, and code generation/extraction

    Alcohol, microbiome, life style influence alcohol and non-alcoholic organ damage

    Get PDF
    This paper is based upon the "8th Charles Lieber's Satellite Symposium" organized by Manuela G. Neuman at the Research Society on Alcoholism Annual Meeting, on June 25, 2016 at New Orleans, Louisiana, USA. The integrative symposium investigated different aspects of alcohol-induced liver disease (ALD) as well as non alcohol -induced liver disease (NAFLD) and possible repair. We revealed the basic aspects of alcohol metabolism that may be responsible for the development of liver disease as well as the factors that determine the amount, frequency and which type of alcohol misuse leads to liver and gastrointestinal diseases. We aimed to (1) describe the immuno-pathology of ALD, (2) examine the role of genetics in the development of alcoholic hepatitis (ASH) and NAFLD, (3) propose diagnostic markers of ASH and non-alcoholic steatohepatitis (NASH), (4) examine age and ethnic differences as well as analyze the validity of some models, (5) develop common research tools and biomarkers to study alcohol-induced effects, 6) examine the role of alcohol in oral health and colon and gastrointestinal cancer and (7) focus on factors that aggravate the severity of organ-damage. The present review includes pre-clinical, translational and clinical research that characterizes ALD and NAFLD. Strong clinical and experimental evidence lead to recognition of the key toxic role of alcohol in the pathogenesis of ALD with simple fatty infiltrations and chronic alcoholic hepatitis with hepatic fibrosis or cirrhosis. These latter stages may also be associated with a number of cellular and histological changes, including the presence of Mallory's hyaline, megamitochondria, or perivenular.and perisinusoidal fibrosis. Genetic polymorphisms of ethanol metabolizing enzymes and cytochrome p450 (CYP) 2E1 activation may change the severity of ASH and NASH. Other risk factors such as its co-morbidities with chronic viral hepatitis in the presence or absence of human deficiency virus were discussed. Dysregulation of metabolism, as a result of ethanol exposure, in the intestine leads to colon carcinogenesis. The hepatotoxic effects of ethanol undermine the contribution of malnutrition to the liver injury. Dietary interventions such as micro and macronutrients, as well as changes to the microbiota have been suggested. The clinical aspects of NASH, as part of the metabolic syndrome in the aging population, have been presented. The symposium addressed mechanisms and biomarkers of alcohol induced damage to different organs, as well as the role of the microbiome in this dialog. The microbiota regulates and acts as a key element in harmonizing immune responses at intestinal mucosal surfaces. It is known that microbiota is an inducer of proinflammatory T helper 17 cells and regulatory T cells in the intestine. The signals at the sites of inflammation mediate recruitment and differentiation in order to remove inflammatory inducers and promote tissue homeostasis restoration. The change in the intestinal microbiota also influences the change in obesity and regresses the liver steatosis. Evidence on the positive role of moderate alcohol consumption on heart and metabolic diseases as well on reducing steatosis have been looked up. Moreover nutrition as a therapeutic intervention in alcoholic liver disease has been discussed. In addition to the original data, we searched the literature (2008-2016) for the latest publication on the described subjects. In order to obtain the updated data we used the usual engines (Pub Med and Google Scholar). The intention of the eighth symposia was to advance the international profile of the biological research on alcoholism. We also wish to further our mission of leading the forum to progress the science and practice of translational research in alcoholism. (C) 2017 Elsevier Inc. All rights reserved.Peer reviewe

    A model of actors and grey failures

    No full text
    Existing models for the analysis of concurrent processes tend to focus onfail-stop failures, where processes are either working or permanently stopped,and their state (working/stopped) is known. In fact, systems are often affectedby grey failures: failures that are latent, possibly transient, and may affectthe system in subtle ways that later lead to major issues (such as crashes,limited availability, overload). We introduce a model of actor-based systemswith grey failures, based on two interlinked layers: an actor model, given asan asynchronous process calculus with discrete time, and a failure model thatrepresents failure patterns to inject in the system. Our failure model capturesnot only fail-stop node and link failures, but also grey failures (e.g.,partial, transient). We give a behavioural equivalence relation based on weakbarbed bisimulation to compare systems on the basis of their ability to recoverfrom failures, and on this basis we define some desirable properties ofreliable systems. By doing so, we reduce the problem of checking reliabilityproperties of systems to the problem of checking bisimulation
    corecore