My research interests are in the general areas of distributed
computing, computer networks and advanced communication services, and
software engineering. Below are some ideas and projects I worked on
in more or less recent years. The list
of my scholarly publications should
provide a more complete, although perhaps less clear picture of my
research interests and contributions.
Siena
My PhD dissertation and my primary research for a long time was about
a scalable, distributed publish/subscribe system called Siena.
Further information on this research topic is available on my
Siena page.
Content-Based Networking
Content-Based Networking is an advanced communication service. The
idea of content-based networking is an evolution and extension of my
work on scalable publish/subscribe systems. Further information on
this research topic is available on my
Content-Based Networking page.
Information Centric Networking
The idea of Information Centric Networking is that the network should
provide a way access
information rather than hosts. This
idea has many commonalities with the notion of a content-based
network. My work in this area has consisted mostly of trying to
combine the two things. See the articles published at the ACM ICN
conference in 2014 (
Abstract), 2013
(
Abstract), and 2011 (
Abstract).
Automatic Workarounds and Intrinsic Redundancy
Another line of research I developed in recent years is in the general
area of software engineering and more specifically in the area of
autonomic systems. The high-level objective of this research is to
develop systematic ways to increase the fault-tolerance of some
software systems. In particular, I developed the notion
of
automatic workarounds. An automatic workaround is a
workaround deployed automatically at run-time to overcome a failure in
a software system. The development of this idea has led to
technological as well as more general methodological advances. In
terms of technology, workarounds must be realized and engineered so
that they can be deployed within a running applications without
disrupting its flow and without excessive penalties for the user.
More generally, the main idea behind automatic workarounds is to
exploit the intrinsic redundancy of software, responding to a failure
by finding alternative execution paths that avoid the failure while
achieving the same functionality as the failing code.
The key intuition is that modern software, especially modular
software, is intrinsically redundant, in the sense that it is
likely to contain alternative code that was not deliberately designed
as such, and therefore that can be used opportunistically without
incurring the high costs of a redundant design. Furthermore, the
notion of intrinsic redundancy is quite general and can be useful for
other purposes. This line of work has led to two doctoral
dissertations and, among others, a recent articles appeared in ACM
TOSEM (Abstract), and a sequence of other articles
published at the FSE and ICSE conferences in 2010
(Abstract), 2013 (Abstract), 2014
(Abstract), and 2015 (Abstract).
P2PImpulse
The performance of algorithms based on random walks or other "gossip"
protocols depend on the length of the walks or the number of gossip
steps. In particular, a random walks must be
long enough to achieve the desired sampling distribution
independently of the starting node, but exactly how long depends on a
the "mixing rate" of the network, which is a global property of the
network related to the spectrum of the network graph. We therefore
developed a completely decentralized and efficient algorithm
called
P2PImpulse to estimate this mixing rate and more
generally some spectral properties of the network graph. The
fundamental idea of P2PImpulse is to view the network as a sort of
dynamical system and then to compute what amounts to the
impulse
response of such a system, and to use that impulse response to
then identify the dominant dynamic properties of such a system that in
turn correspond to the mixing time. Further information on this
research topic is available on my
P2PImpulse page.
Weevil
With this project, I studied ways to automate the experimentation
process for large-scale distributed systems. The general idea to
achieve automation is to create a script to run an entire experiment,
and to do that using code generation starting from models of the
system under experimentation, the testbed, and the experiment
workload. This research led to the doctoral dissertation of one of
the students I co-supervised at the University of Colorado
(
PDF). The results of this research
were also published at the 20th IEEE/ACM International Conference on
Automated Software Engineering in a paper that was also nominated for
the ASE Best Paper Award (
Abstract,
PDF). Later I also worked on an
extension of this technique to support not only an automated
experimentation process but also a
repeatable one, where
environmental conditions are controlled and statistically significant
results are obtained through multi-trial experiments. This technique
was published at the International Conference on Software Engineering
in 2008 (
Abstract,
PDF).