Multitier programming languages aim to address the complexity of developing distributed systems abstracting over low level implementation details such as data representation formats, serialization and network protocols. Defining the functionalities of different peers – e.g., the server and the client – in the same compilation unit, multitier languages also simplify reasoning about software behavior, as crosscutting functionalities are not artificially split by network communication. Unfortunately, using the same compilation unit for all tiers does not scale to a real-world codebase, severely hindering the potential of multitier languages.
In this paper, we address this issue with a module system for multitier languages. Our module system supports encapsulating each (cross-peer) functionality, disentangling modularization and distribution and enabling the definition of a distributed system as a composition of multitier modules representing each subsystem. Based on a novel feature, abstract peer types, our module system enables the modularization of distributed reusable functionalities defined over abstract peers. The resulting abstract modules can be defined separately, independently from any specific architecture, and can be eventually composed.
Our case studies on distributed algorithms, distributed data structures, as well as on the Apache Flink task distribution system, show that multitier modules allow the definition of reusable (abstract) patterns of interaction in distributed software and enable separating the modularization and distribution concerns, properly separating functionalities in distributed systems.
Wed 17 Jul
|10:30 - 10:50|
|10:50 - 11:10|
|11:10 - 11:30|
Towards Language-Parametric Semantic Editor Services based on Declarative Type System Specifications
|11:30 - 11:50|
|11:50 - 12:10|