Authors:
David Greaves
and
Daniel Gordon
Affiliation:
University of Cambridge, Computer Laboratory, United Kingdom
Keyword(s):
Compensation, Model Checking, Code Reflection, Ubiquitous Computing, Control Plane, Application Scripting.
Related
Ontology
Subjects/Areas/Topics:
Distributed and Parallel Applications
;
Internet Technology
;
Web Information Systems and Technologies
Abstract:
Pushlogic is a scripting language for a dynamic population of devices (sensors/processors/actuators) and dynamic number of concurrent applications in a reliable or safety-critical system. System stability is assured by idempotency constraints and intrinsic error recovery capabilities arise from the reversible nature of Pushlogic. It is a constrained language amenable to automated reasoning. It defines ‘re-hydration’ for dynamic binding of rules to new device instances and a load-time model checker that runs before a new bundle of rules may join a domain of participation. In a typical application, complex embedded devices are partitioned into passive components known as ‘pebbles’. API reflection is then used to expose the interfaces offered by the pebbles. All proactive and interactive behaviour between pebbles or over the network must then be implemented with Pushlogic and ‘code reflection’, as we call it, exposes this behaviour for automated reasoning.