Giter Club home page Giter Club logo

sessiontypeabs's Introduction

Semi-Dynamic Session Type Tool for ABS

This tool complements the ABS modeling language with support for session types. It can statically verify ABS models against session types and modifies them to enforce those parts of the specified behavior, which can not be statically guaranteed.

I developed this tool during my bachelor thesis. Please consult my thesis for more information on the tool. Link to thesis: Link (This is the first version as it had been originally submitted for review.)

Prerequisites

Please make sure that the following dependencies are available on your system:

  • Kotlin compiler version 1.3.50
  • Erlang version 22.1
  • OpenJDK 11
  • Git version 2.24.0

Furthermore, it is assumed, that the commands in the following sections are executed on the bash shell of a linux system.

Building ๐Ÿ› ๏ธ

To build the tool, first, a modified version of ABS has to be downloaded and be built.

git clone https://github.com/ahbnr/SessionTypeABS.git
git clone --branch thisDestiny https://github.com/ahbnr/abstools.git

cd abstools/frontend
../gradlew assemble

cd ../../SessionTypeABS
./gradlew shadowJar

chmod +x sdstool

The SDS-tool can now be found as an executable .jar file in build/libs. We provide a wrapper script sdstool which can be invoked instead of the JAR file.

Tests ๐Ÿ“‹

Issue the command

./gradlew test

to run all tests.

Usage

The following command

  • statically verifies an ABS model against the given session types
    • (see link for more information on the syntax of .st session type specification files)
  • applies our dynamic enforcement techniques to it
  • compiles the modified model to Erlang
./sdstool compile [flags] [.abs files] [.st files]

With the optional flags, verification or enforcement can be deactivated etc. Use ./sdstool compile --help for further information on them.

After compiling the ABS model, it can be executed like this:

gen/erl/run

Other commands:

  • ./sdstool printModel [.abs files] [.st files] prints the parts of the given ABS model, which are modified by our dynamic enforcement methods.

  • ./sdstool printGlobalTypes [.st files] parses the given session type files and outputs them again.

  • ./sdstool printLocalTypes [.st files] prints the object local session types projected from the given global ones.

Evaluation Scripts

See evalutation/README.md

License

See LICENSE.txt. This license only applies to the files belonging to this project, not to abstools or the other libraries being used.

Used External Libraries And Tools

  • our modified variation of abstools, version 1.8.1
  • ANTLR, version 4.7
  • picocli, version 4.0.0-beta-2
  • Apache Commons IO, version 2.6
  • JUnit 5, version 5.5.0
  • NuProcess, version 1.2.3

sessiontypeabs's People

Contributors

ahbnr avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.