Reliable and Resilient Networked Software Systems

Today’s software systems are interactive and distributed.

Their current dominant architecture is centralized, which is unsuited for the age of programmable network devices and plentiful mobile devices and sensors, because the architecture prevents independent processing, causes latency, and undermines user control and privacy. Decentralized architectures solve these problems by providing offline availability, low latency and data privacy. However, decentralized architectures – compared to established, centralized solutions – require new solutions for trust, fault tolerance, and concurrency control. The Software Technology Group researches and develops declarative programming platforms. These platforms manage the complexity of the setting by controlling the evaluation of applications to automatically ensure “out-of-the-box” guarantees.

We research resiliency and reliability of networked software systems at several levels.

  • Programming APIs inspired by solutions like functional reactive programming improve on callback-based solutions where consistency can not be guaranteed for complex interactions.
  • Language designs and implementations stemming from multitier programming improve decentralized applications that interact according to smart contracts, by preventing classes of bugs that arise from a global, untrusted execution environment where applications should behave but do not.
  • We investigate resilient and disruption-tolerant networking protocols that enable message dissemination even in highly unreliable settings, providing the higher-level programming abstractions with a suitable messaging layer.
  • We research how reliability and resiliency at the networking layer can be increased. Programmable networking is becoming increasingly popular for enabling in-network application execution. For this to be effective, the network programming itself has to be safe and reliable. To this end, we research advanced type systems for safe network programming.