The goal of the Spatial Programming project is to design a programming model that simplifies the task of developing collaborative distributed applications for systems embedded in the physical world. To achieve this goal, we need to provide high level abstractions for network-transparent access to data and services distributed across the physical space. Using these abstractions, the programmers can focus on the algorithmic part of the applications instead of the complex networking details encountered in highly volatile networks of embedded systems.
[Top]
In Spatial Programming (SP), embedded systems are named by their expected locations and properties in a network-transparent fashion. Similar to memory access using variables in a conventional computing system, SP uses spatial references, represented as {space:name} tuples, to access embedded systems in the physical space. The space is the geographical scope of the referenced embedded system, and the name is a content-based name for the same system. An underlying system maintains reference consistency, i.e., the mappings between spatial references and embedded systems. SP is based on four design principles:
- Exposing space as a first order programming concept.
The applications running in the physical world are interested in data and services located within well-defined geographical regions. Therefore, the spatial distribution of nodes across the physical space is a key feature of massive networks of embedded systems that must be exposed to applications.
- Decoupling the access to network resources from networking details.
To alleviate the task of writing complex distributed programs for networks of embedded systems, programmers should not have to perform any specific network-related operations to obtain the requested network resources. In SP, the applications access the embedded systems using spatial references which shield the programmers from the networking details.
- Maintaining reference consistency.
The application that refers to an embedded system with given spatial and content properties must be guaranteed to contact the same node each time it makes subsequent successful references using the same space-content description. This property provides the ability to perform arbitrary distributed computations over a subset of nodes of interest.
- Tolerance to network configuration dynamics.
In highly volatile networks of embedded systems, many applications prefer a partial result, which is semantically acceptable, instead of a failure. To provide this feature, SP requires the application programmer to reason about the possibility of not reaching an embedded system by imposing a timeout on each spatial reference. If a node cannot be reached in the specified time interval, the application receives an exception, and it has to decide about further actions.
We have developed a preliminary implementation of the SP programming model over a Smart Messages (SM) runtime system. The implementation consists of a set of Java classes which include the SM support and provide the necessary SP programming constructs. Essentially, the SM runtime system translates an SP program into an SM program by translating all spatial references into execution migrations.
[Top]
-
Spatial Programming using Smart Messages: Design and Implementation .
Cristian Borcea, Chalermek Intanagonwiwat, Porlin Kang, Ulrich Kremer, and Liviu Iftode. To Appear in Proceedings of the 24th International Conference on Distributed Computing Systems (ICDCS 2004), March 2004.
-
Programming Computers Embedded in the Physical World .
Liviu Iftode, Cristian Borcea, Andrzej Kochut, Chalermek Intanagonwiwat, Ulrich Kremer. In Proceedings of the 9th IEEE International Workshop on Future Trends of Distributed Computing Systems (FTDCS 2003), May 2003.
[Top]
[Top]
[Top]
[Top]