## 3 Middleware for WSN Virtualization
### Middleware for Multi Radio Support
\begin{table}
\begin{tabular}{l l l l l l} \hline \hline \multirow{2}{*}{**Name**} & \multirow{2}{*}{**Software Architecture Design**} & **Sensor** & **Network** & **Multi Radio** & **Heterogeneity** \\  & & **Virtualization** & **Virtualization** & **Support** & **Support** \\ \hline \multirow{4}{*}{I-Living [94]} & \(\bullet\) & Application Driven architecture & & & \\  & \(\bullet\) & JAVA - API, & & & \\  & \(\bullet\) & SOAP based design & NO & YES & YES & NO \\  & \(\bullet\) & TCP/IP & & & & \\ \hline \multirow{4}{*}{ROA based MW Framework [76]} & \(\bullet\) & ROA following & & & & \\  & \(\bullet\) & SWE and modeled & YES & NO & YES & NO \\  & \(\bullet\) & Sensor ML & & & & \\ \hline \multirow{4}{*}{MiLAN [75]} & \(\bullet\) & Adaptive System & & & & \\  & \(\bullet\) & TCP/IP & & & & \\  & \(\bullet\) & Graph based Model & & & & \\  & \(\bullet\) & Application Centric Design & & & & \\ \hline \multirow{4}{*}{Smart Home} & \(\bullet\) & Hardware Abstraction Layer at & & & & \\  & & Gateway & & & & \\ \cline{1-1} Virtualization & \(\bullet\) & Embedded Linux & YES & YES & NO & NO \\ \cline{1-1}  & \(\bullet\) & Multi-Task OS & & & & \\ \cline{1-1}  & \(\bullet\) & Service Oriented Architecture & & & & \\ \hline \multirow{4}{*}{PRESTO [50]} & \(\bullet\) & Data Base approach & & & & \\  & \(\bullet\) & Predictive Storage Architecture & YES & NO & NO & YES \\  & \(\bullet\) & Caching mechanism & & & & \\ \hline \multirow{4}{*}{SenseWrap [69]} & \(\bullet\) & SOA & & & & \\  & \(\bullet\) & UDP/TCP Zerconf plugin & YES & YES & NO & YES \\  & \(\bullet\) & Protocol Adapters & & & & \\ \hline \multirow{4}{*}{GSN [28]} & \(\bullet\) & Data Base Approach & & & & \\  & \(\bullet\) & Data Oriented Approach & & & & \\ \cline{1-1}  & \(\bullet\) & SQL Based Query & NO & YES & NO & YES \\ \cline{1-1}  & \(\bullet\) & Declarative programming Model & & & & \\ \cline{1-1}  & \(\bullet\) & Container-based architecture & & & & \\ \hline \multirow{4}{*}{Hourglass [57]} & \(\bullet\) & SOA & & & & \\  & \(\bullet\) & Circuit Description Language & & & & \\ \cline{1-1}  & \(\bullet\) & TCP/IP & YES & YES & NO & NO \\ \cline{1-1}  & \(\bullet\) & Publish Subscribe Approach & & & & \\ \hline \multirow{4}{*}{SENSEI [67]} & \(\bullet\) & Service Oriented Architecture & & & & \\ \cline{1-1}  & \(\bullet\) & Modular approach & & & & \\ \cline{1-1}  & \(\bullet\) & RESTful Design & YES & YES & NO & NO \\ \cline{1-1}  & \(\bullet\) & Layered approach & & & & \\ \cline{1-1}  & \(\bullet\) & Dynamic service composition & & & & \\ \hline \hline \end{tabular}
\end{table} 
Table 1: _Cont._Middleware is designed for different goals, like some provide high level of QoS, ease of programming, better management of resources, mobility support, reprogramming of nodes, heterogeneity, virtualization, handling large volume of data and multi radio support. Middleware uses different approaches in the architectural designs to achieve these goals. Furthermore, middleware provides different abstraction levels to the developer, according to the requirements of the application and programming expertise. The middleware designed for handling large amount of sensed data, takes the database approaches like PRESTO [50] and middleware in references [53, 58]. The middleware designed for health care services demand high QoS and has to ensure the transmission and data integrity as proposed by MiLAN [75] and [79, 94]. For the mobility support and applications like fire monitoring middleware employs the mobile agent techniques using tuple space that has the ability to enter or leave the networks as used in Agilla [95]. Moreover, the middleware for a single application and multiple applications have different attributes. From the developers' point of view, if we intend to go for ease of programming, then, declarative programming model based middlewares are selected. Declarative programming technique provides a high level of abstraction from the low level programming details.