Coordination Models and Languages (Coordination'08)
Fiji: A Platform for Data-Intensive Sensor Network Applications
Matt Welsh, Harvard University, USA
Sensor networks are becoming increasingly important for data-intensive applications that involve moderate to high data rates, fine-grained timestamping of recorded signals, and computationally-intensive processing within the network. Examples of this new class of applications include volcano monitoring, structural health monitoring, and biomedical data capture. In contrast to the first generation of sensor networks, which were focused on low-duty-cycle data collection and aggregation, these new applications demand much greater data fidelity and computational sophistication.
At the same time, wireless sensor platforms are inherently resource-constrained, leading to severe limitations of computational horsepower, memory capacity, and radio bandwidth. The stringent application demands and resource constraints conflate to make programming complex sensor applications a very difficult task, even for experts in embedded systems. As a result there is a vast gap between the needs of domain scientists wishing to develop and deploy a sensor network and the level of expertise required to realize a resource-efficient implementation.
In this talk, I will present Fiji, a new programming platform intended to make it much easier for domain scientists to leverage wireless sensor networks. Fiji is based on the concept of macroprogramming, in which a program describing the global behavior of the network is compiled down to an efficient node-level binary. This is accomplished using a flexible dataflow-based intermediate form supported by multiple compilers for each target language. Fiji also provides a powerful node-level runtime and OS for resource-aware programming, allowing applications to naturally adapt to varying resource availability.
Distributed Applications and Interoperable Systems (DAIS'08)
New Uses of Simulation in Distributed System Engineering
Alexander L. Wolf, Imperial College London, UK
Simulation has been used by software engineers for many years to study the functionality and performance of complex distributed system designs. For example, they are used to understand network protocols, tune distributed systems, and improve distributed algorithms. They are appealing to engineers because of their inherent efficiency and scalability. Unlike many other development artifacts, simulations seem to be used, and therefore well maintained, throughout the development process, both as early design tools and as late evaluation tools. Given the effort invested in the construction and maintenance of simulations, and the degree to which developers trust in them, we wonder whether there are other purposes to which they can be put. In this talk we present two such uses, one to increase the power of large-scale distributed experimentation and the other to develop a rigorous testing method for distributed systems.
Formal Methods for Open Object-based Distributed Systems (FMOODS'08)
Guiding distributed systems synthesis with language-based security policies
Andrew Myers, Cornell University
The distributed information systems we use every day are becoming more complex and interconnected. Can we trust them with our information? Currently there is no good way to check that distributed software uses information securely, even if we have the source code. Many mechanisms are available, but are error-prone: for example, encryption, various cryptographic protocols, access control, and replication. But it is hard to know when we are using these mechanisms in a way that correctly enforces application security requirements.
This talk describes a higher-level approach to programming secure systems. Instead of using security mechanisms directly, the programming language incorporates explicit security policies specifying the confidentiality, integrity, and availability of information. The compiler then automatically transforms the source code to run securely on the available host machines, and uses a variety of security mechanisms in order to satisfy security policies. The result is systems that are secure by construction. We look at two applications of this approach: building secure web applications using partitioning beween clients and servers, and building more general secure systems by synthesizing fault-tolerance protocols for availability.
Joint work with Steve Chong, Jed Liu, Nate Nystrom, Xin Qi, K. Vikram, Steve Zdancewic, Lantian Zheng, and Xin Zheng.