Many applications in large scale cyber-physical systems (LCPS) and machine-to-machine (M2M) start with single purpose systems designed for homogeneous sensor platforms using specific network protocols. The system consists of a fixed set of sensors, and the applications cannot be easily duplicated or ported to other platforms for large number deployment. The separation of design abstractions between the low-level hardware and high-level applications has not been as successful in these systems as that for server-based systems, not to mention making them dynamically adaptable and evolvable to new services, and new environments. Except for low level building blocks, there is very little reuse from one project to another.
It is clear that there is a need for better middleware support to ease the deployment of machine-to-machine (M2M) applications. One missing block is a flexible middleware support so that developers and users of an LCPS/M2M system do not need to be constrained by which and how sensors have been deployed in a target environment.The built-in intelligence from the middleware can dynamically perform sensor detection, device selection, system configuration, software deployment, and system reconfiguration.
Like the transition from low-level coding to high-level programming on top of of a general purpose OS and an optimizing compiler, we would like to make LCPS/M2M programming as platform independent as possible using simple, high-level primitives instead of the node-centric programming. Another missing block is the intelligent mapping from a high-level flow based program ( FBP) to self-identified, context-specific sensors in a target environment. The automatic mapping capability in the middleware allows an application developer to specify simply what types of sensors are needed rather than which sensors are used. Such a flexibility is important in order for the same application logic to be adopted by different users at their individual homes or offices with a dynamic, evolving set of heterogeneous sensors.
WuKong framework consists of two major components to fill the gap caused by the two aforementioned missing blocks: intelligent middleware and flow-based developing framework. WuKong middleware is regarded as a Virtual Middleware (VMW). The reasons for this are twofold. First, as sensor networks become more wide-spread, it is increasingly likely that applications will want to take advantage of different types of sensors available in a given area. Having a virtual sensor will allow applications to run on heterogeneous networks of sensors. Second, when the system decides to reconfigure the network, the process of reprogramming nodes will be easier using a virtual machine design so that code updates can be smaller since the virtual sensor can offer higher level primitives specific for LCPS/M2M applications. On top of WuKong middleware, WuKong framework can postpone binding logical components with physical devices until an application is deployed, rather than when an application is developed. With the intelligent middleware and FBP, WuKong framework enables intelligent binding for LCPS and M2M systems.
The grand vision for WuKong project is that future LCPS should have "zero- cost" deployment where users of an LCPS application do not need to be concerned on how and where to deploy sensors. The built-in intelligence from the proposed LCPS support can automatically perform the optimal sensor node configuration, bandwidth allocation, fault management, and re-configuration in response to new missions and new device deployment. Much like the past transition from low-level assembly codes to high-level programming using general purpose OS and compiler support, LCPS programming may be as platform-independent as possible while keep only the most essential system primitives to allow automatic performance optimization.