Skip to content

contractautomataproject/ContractAutomataLib

Repository files navigation

Build and Testing Coverage Status Mutation testing badge Quality Gate Status Codacy Badge License: GPL v3 Sonatype Nexus Maven Central Repository javadoc DOI GitHub code size in bytes Open in Code Ocean

Contract Automata Library

About

This repository contains the Contract Automata Library (CATLib), which is the main repository of the Contract Automata Toolkit. Contract automata are a formalism developed in the research area of foundations for services and distributed computing. They are used for specifying the interfaces of services, called behavioural contracts, as finite state automata, with functionalities for composing contracts and generating the orchestration or choreography of a composition of services, and with extensions to modalities (MSCA) and product lines (FMCA). CATLib implements contract automata and all their operations.

News

The article "Contract Automata Library" has been published in Science of Computer Programming:

Basile, D. and ter Beek, M.H., 2022. Contract Automata Library. Science of Computer Programming. https://doi.org/10.1016/j.scico.2022.102841

Getting Started

User Documentation

For information on the usage and installation of the library, check the User Documentation at the Github Page https://contractautomataproject.github.io/ContractAutomataLib/.

API Documentation

For the API documentation, check the links below.

This documentation is up-to-date to the commit 4e1044e of 29 April 2022.

The following documentation has been created using the Model-based Software Engineering tool Sparx Enterprise Architect:

The javadoc documentation for the release to the Maven Central Repository is available at https://javadoc.io/doc/io.github.contractautomataproject/catlib.

License

The tool is available under GPL-3.0 license.

Branches

This is the main branch of the repository. The branch gh-pages contains the GitHub page of this repository.

Contacts

Davide Basile - davide.basile@isti.cnr.it.

Legacy

In previous iterations this software was called CAT (Contract Automata Tool). Later on, with the addition of support for product lines, the software's name was extended to FMCAT (Featured Modal Contract Automata Tool). It was a monolithic piece of software comprehending both a prototypical implementation of the library and a front-end. The front-end was available both as command line or as a GUI. The command-line front-end has been discontinued. The GUI front-end was later factorised out to another repository (CAT_App), whilst the remaining library is now called CATLib. The set of software supporting contract automata is now called "Contract Automata Toolkit", for continuity with its previous iteration.

The source code has been completely rewritten in 2020. It was redesigned using the new functionalities introduced with Java 8 (streams, lambda). If you are reaching this repository from some previous paper on contract automata (e.g., JSCP2020, LMCS2020), you may be interested in checking an old version of the repository, before its refactoring. The latest version of this repository before its refactoring started is available at 06c5c32519bb5b67a2e7d331b512cae0aa37a2e1. The case studies of these papers can be found in this previous version under the folders demoJSCP and demoLMCS2020. The repository at https://github.com/davidebasile/experimentsReproducibilityCoordination2021 contains a comparison of the two versions of the library (before and after the refactoring).

About

The Contract Automata Library implements Contract Automata and their operations (e.g., composition, synthesis). This is the main repository of the Contract Automata Toolkit.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages