Post-doc position:
Component-Based Design of Correct-by-Construction Self-Adaptive Systems

I am looking to hire a post-doc on an 18-month contract. Detailed information available from the INRIA job vacancies site.

Project description

When building large concurrent systems, one of the key difficulties lies in coordinating component behaviour and, in particular, management of the access to shared resources of the execution platform. A simple example consists in managing the memory usage by a set of concurrent components, such as Camel routes [1]. A Camel route connects a number of data sources to transfer data among them. The data can be fairly large and may require additional processing. Hence, Camel routes share and compete for memory. Without additional coordination, simultaneous execution of several Camel routes can lead to OutOfMemory exceptions, even when each route has been tested and sized appropriately on its own. Since, in concurrent environments, it is practically infeasible to envision all possible execution scenarios, synchronization errors can result in race conditions and deadlocks.

To address this concurrency challenge, we have developed JavaBIP [2]. JavaBIP is a Java adaptation of the Behavior, Interaction, and Priority (BIP) framework [3], providing two primitive mechanisms for component coordination: (i) multi-party synchronization of component transitions and (ii) asynchronous event notifications.

The main goal of this post-doctoral project is to extend JavaBIP with new mechanisms for resource management and self-adaptation. Indeed, the environment of modern systems is inherently highly variable. In particular, this is due to interferences among applications sharing common resources and to the migration, e.g. of cloud applications among computing units. Thus, fluctuations of resource availability become the norm rather than an exception. Instead of waiting for the resources to become available, applications adapt their behaviour to the changes in the environment. Mechanisms representing resource availability and dependencies must be explicitly provided in the design framework. To enable efficient coordination, components must advertise their resource requirements to the coordinating engines, which in turn must be able to combine such requirements with information about resource availability to optimise overall system performance.

Theoretical work within the project will aim to develop expressive formal models for the specification and analysis of platform capacities and application requirements for various kinds of resources, on one hand, and adaptation policies, on the hand. These models will form the foundation of a rigorous design approach—to be implemented in JavaBIP—which would provide resource management and self-adaptation mechanisms along with appropriate specification languages, allowing designers to specify and implement component coordination on a high-level of abstraction, in such a manner that behavioural properties, resource-management policies and self-adaptation strategies can be clearly stated, combined and enforced.


  1. The Apache Software Foundation. Apache Camel: Routes.
  2. Bliudze, S., Mavridou, A., Szymanek, R., and Zolotukhina, A. (2017) Exogenous coordination of concurrent software components with JavaBIP. In Software Practice and Experience, 47:1801–1836. doi: 10.1002/spe.2495.
  3. Basu, A., Bensalem, S., Bozga, M., Combaz, J., Jaber, M., Nguyen, T.-H., Sifakis, J. (2011) Rigorous component-based system design using the BIP framework. IEEE Software 28(3):41–48. DOI: 10.1109/MS.2011.27.