Contents
Ponder2 Overview
Ponder2 comprises a self-contained, stand-alone , general-purpose object management system with message passing between objects. It incorporates an awareness of events and policies and implements a policy execution framework. It has a high-level configuration and control language called PonderTalk and user-extensible managed objects are programmed in Java.
The design and implementation of Ponder2 has been designed to achieve the following goals:
Simplicity. The design of the system must be as simple as possible and incorporate as few built-in elements as possible.
Extensibility. It must be possible to dynamically extend the policy environment with new functionality, to interface with new infrastructure services and to manage new resources.
Self-containment. The policy environment must not rely on the existence of infrastructure services and must contain everything necessary to apply policies to managed resources.
Ease-of-use. The environment must facilitate the use of policies in new environments and prototyping new policy systems for different applications.
Interactivity. It must be possible for managers and developers to simply interact with the policy environment and the managed objects, issue commands to the managed objects and create new policies.
Scaleability. The policy environment must be executable on constrained resources such as Gumstix, PDAs and mobile phones as well as for more traditional distributed systems' management.
Ponder2 can interact with other software and hardware components and is being used in environments ranging from single devices, to personal area networks, ad-hoc networks and distributed systems. Ponder2 is configured and controlled using PonderTalk, a high-level, object orientated language.
Ponder2 implements a self-managed cell (SMC). Management services interact with each other through asynchronous events propagated through a content-based event bus. Policies provide local closed-loop adaptation, managed objects generate events, policies respond and perform management activities on the same set of managed objects. Everything in Ponder2 is a Managed Object. The basic Ponder2 system comprises Event Types, Policies, Domains and External Managed Objects. It is up to the user to create or reuse Managed Objects for other purposes. A Managed Object, including all those mentioned, has to be loaded dynamically into the SMC from a library, thereby producing a factory managed object (c.f. a Java class). The factory managed object can now be sent messages to create new instances of managed objects; these managed objects are the ones which do the work of the system. This is the same as any object oriented system where the class has to be loaded before instances can be created. Once loaded, Ponder2 makes no distinction between factory managed objects and other managed objects. Both types can be sent messages asking them to do something and they both return replies. In the case of the factory managed objects they return a new instance of their underlying type.
Background
Ponder was a highly successful policy environment used by many in both industry and academia. Yet its design suffered from the some of the same disadvantages as existing policy-based frameworks. Their designs were dependent on centralised infrastructure support such as LDAP directories and CIM repositories. The deployment model was often based on centralised provisioning and decision-making. Therefore they did not offer the means for policy execution components to interact with each other, collaborate or federate into larger structures. Policy specification was seen as an off-line activity, and policy frameworks did not allow them to interact easily with the managed systems. Consequently such frameworks were difficult to install, run, and experiment with. Additionally, they usually did not scale to smaller devices as is needed in pervasive systems.
Ponder2 has already been applied in a number of research projects for health monitoring using body-area networks of sensors and actuators [7], unmanned autonomous vehicles [8] as well as large web-service based infrastructures [9]. The software, documentation and tutorials are available from this site.