Software Architectures & Design Calculi

Research team @ HASLab, Univ. Minho

Reo families in your browser

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, 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.

  • define a core representation of Reo connectors;
  • explore different frontends (how to specify and visualise connectors);
  • explore different backends (how to analyse/execute connectors), reusing existing algorithms from the existing Eclipse implementation;
  • relate pointwise (explicit ports) and pointfree (implicit ports) connectors; and
  • support families of connectors.

Possible research questions

  • How to relate different semantic extensions of Reo
  • Find a core algebraic representation of Reo connectors
  • How to automatically transform connectors for various semantic models
  • Analyse families of connectors

What the student will do

  • Survey existing frameworks and libraries for web-based development.
  • Implement a small web server that will allow one to specify and visualise Reo connectors.
  • Create a core (pointfree) representation of (families of) connectors.
  • Relate visual representations and reusable pointfree connectors.
  • Show how to extend the web-based framework.

Relevant literature

Student background and interests

  • Some familiarity with component models and automata.
  • Java (or Scala) programming experience.
  • Some familiarity with web-based technologies is a plus.