Software modularity
in ambient-oriented programming
Within the domain of pervasive computing, my research focuses on the capacity of software applications to adapt to their dynamically reconfigurable environments. In particular, my work is advocated to the definition of appropriate language support for three key issues in the development of pervasive computing services: distribution, context dependency and group behaviour. I have developed a programming language model that enables developers to work with these concerns in an structured way.
My current platform is Common Lisp. I have also worked in the AmbientTalk programming language.

In my PhD dissertation I have studied the effects of event-driven distribution on the modularity of programs. We focus on the modularity of two concerns: the capacity of services to adapt to environmental changes —a property known as context-dependent behaviour— and their capacity to coordinate with each other —a property known as group behaviour. We use the ambient-oriented programming (AmOP) paradigm as the basis of our research. This paradigm proposes an event-driven programming model which has been designed specifically for pervasive computing. We identify a list of requirements for a unified model for event-driven distribution, context dependency and group behaviour. In the study of the state of the art we demonstrate that no single approach fulfils these requirements so far. This observation has led us to the definition of a proof-of-concept programming language model, called Lambic.

Lambic is an extension of the generic function-based object system of the Common Lisp programming language. Our model extends the multiple dispatch semantics of generic functions to allow for modularity in pervasive computing. For event-driven distribution, Lambic integrates the properties of the AmOP paradigm, in what we call futurised generic functions. In addition, we provide a novel mechanism to allow flexible selection and composition of behaviour, called predicated generic functions. This mechanism provides language abstractions to influence method dispatch based on the program's context. For group behaviour, we propose a third extension called group generic functions. The main idea of this feature is to encapsulate the coordination of group interactions in the definition of services. Finally, a common underlying execution process ensures that these three features can be effectively used in combination with one another. We validate our work by showing in a number of case studies how Lambic facilitates the natural integration and dynamic adaptation of pervasive computing services.

Link: The Lambic Programming Language Model

Service migration
Another area of interest is code mobility. I have been involved in the development of programming language features for mobility of running applications (known as strong mobility). Unfortunately, strong mobility has been repeatedly questioned in terms of its concrete use in real-world applications, or constrained to purely technical purposes such as load balancing. Our assumption is that this type of mobility may help to mitigate the unavailability of software services due to networks partitions in mobile networks.
Application mobility appears as an alternative to replication strategies which work properly for the fixed parts of an application (such as the software code), but if applied to the runtime state of a program these strategies would imply multiple copies of the same program performing identical computations on multiple devices. Application mobility, on the other hand, allows applications to preserve identity (avoiding multiple instances of a same program over the network), but it requires the programmer (or end user) to move the applications pre-emptively. We believe that, due to the rise of mobile networks, service migration will once again gain importance as a mechanism that enables people to actively take care of the availability of their services.
2012 © Jorge Vallejos