This project aims at producing an extensible web-based framework to specify and analyse systems of coordinated components. It will involve developing a server with a graphical web-based frontend, and the design of an extensible architecture with clear separations between the core model, the frontends, and the backends.
Synchronous dataflow coordination languages describe high-level and expressive communication patterns between concurrent objects. Reo is a visual synchronous coordination model that can be used to specify, analyse, and execute systems of orchestrated concurrent objects. The largest collection of tools to analyse, specify, and execute Reo systems is currently developed as an extensible plugin for Eclipse. This collection relies heavily on the data structures used within Eclipse, making it non-trivial to start contributing and to reuse existing algorithms. Furthermore, there is currently poor support for these tools.
A recent extension to Reo addresses its static nature - Reo connectors typically have a fixed set of ports and channels. This extension adds new mechanisms to express collections of similar connectors. E.g., a special merger with an arbitrary number of entries. A prototype tool that type-checks such families of connectors exists in github.com/joseproenca/parameterised-connectors, but it lacks a good (visual and interactive) tool support.
Nowadays every recent browser has a good support for JavaScript, and a vast collection of graphical libraries exist to interact with the user. These libraries can be used to interact with Reo models, with a more reusable core representation of connectors that can be easily extended and reused by third parties.
The goal of this project is to design and prototype a unifying and extensible framework for Reo based on web-tools, possibly including the following tasks.