Giter Site home page Giter Site logo

corinne-2's Introduction

Python

Corinne

This project presents an extension and improvement work by Corinne, a tool for reading, composing and projection of the Choreography Automata. These are an emerging model based on the concept of finite state automata mainly used for the top-down description of distributed systems choreographies. In particular, the project focuses on the implementation of the verification of Well-formedness, a fundamental characteristic of a c-automaton in order to ensure structural correctness, free from the typical errors of concurrent programming, such as Deadlocks and Race Conditions.

logo-Corinne

Table of Contents

Dependencies

Running

Open a terminal in the main folder of Corinne and type:

python3 main.py

Usage

  • FILE MENU:

    • Open: takes in input DOT files (.gv) in CA syntax, but also it can get Chorgram file (.txt), a grammar used for Global Graph (See Chorgram) and DOT files (.gv) generated by Domitilla (See Domitilla)
      and convert them into DOT files with CA syntax.

    For more details about the CA syntax see DOT.g4 file.

    • Open saved tabs: opens previously saved without the need to open file already opened in other sessions

Once taken one or more files as input, Corinne can apply some functions on it, under the "Trasformations" or verify Well-formedness properties under the "Properties":

  • TRASFORMATIONS:

    • Product: a cartesian product of two CA ;
    • Synchronization: given a CA, it can synchronize two particants of its ;
    • Projection: given a CA, you can select one participant from it and get the relative CFSM (Communicating-FSA)
  • PROPERTIES:

    • Well-formedness: verify both the "Well-sequencedness" and "Well-branchedness" properties.
    • Well-sequencedness: verify only the "Well-sequencedness" property.
    • Well-branchedness: verify only the "Well-branchedness" property.

Corinne

File List

  • main.py : launch the program.
  • guy.py : define the guy and its methods to create every view of the program.
  • controller.py : define methods used by the guy to process files (open, render, ...).
  • fsa.py : an abstract class to define a simple Finite State Machine and its methods.
  • chor_auto.py : a class to define the Choreography Automata (CA), inherits from fsa class.
  • cfsm.py : a class to define the Communicating FSA (CFSA), inherits from fsa class.
  • dot_parser/* : contains the dot parser and every file it need to parse and convert.
  • global_graph_parser/* : contains the Global Graph parser and every files it need to parse and convert.
  • examples/* : some examples.
  • well-formedness.py : define methods to verify well-formedness, well-branchedness and well-sequencedness.

Author

Main author:

Vairo Di Pasquale - vairodp - [email protected]

Other author(s):

Simone Orlando - simoneorlando - [email protected]

Ivan Lanese - lanese - [email protected]

License

This project is licensed under the MIT License - see the LICENSE file for details

corinne-2's People

Contributors

vairodp avatar lanese avatar

Stargazers

 avatar Ale avatar  avatar  avatar giovifz 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.