The convergence
between telecommunications and computing offers new opportunities and challenges
for a large market of innovative network-wide services. However, most
assumptions about traditional asynchronous distributed services over Local Area
Networks are being challenged over the Internet by technological advances along
two lines. On one hand, the growth and pervasiveness of the Internet is enabling
novel asynchronous services to a much larger community of users; this calls for
a sharper attention to issues related to fault tolerance, flexibility, and
customizability. On the other hand, the recent advances in the area of wireless
and ad hoc networks and the availability of powerful portable info appliances at
a reasonable price is fostering the diffusion of mobile computing, which
provides support to nomadic users; and this calls for software architectures
including context-aware components.
Software design
methods for the new architectures are different not only for scalability,
connectivity, heterogeneity, and autonomy, but specifically for the ability of
dealing with dynamic and unpredictable changes of their underlying network
environment relatively to the sites where applications are executed (e.g. with
respect to network connectivity, lack of resources, node failures, network
reconfigurations and so on). The essential point is that these applications must
be capable of reacting and adapting to dynamic changes of their network
environment.
Our goal is to
identify proper tradeoffs to relieve the programmer as much as possible from the
burden of dealing explicitly with low-level events taking place in the
distributed system. Our researches concern three areas:
Models of
Computation,
Programming
Languages,
Distributed
System Technology.
These three areas
are indeed a comprehensive framework for network-aware programming that provides
both methods and patterns to develop applications and certify their properties.