Furthermore, most of the work in WSNs has followed a
vertical design paradigm whereby all the necessary components
and services are implemented holistically with little or
no modularization for code optimization. Such an approach
has been employed to address a significant array of problems
and challenges, ranging from medium access to routing to
time synchronization, but mostly, scenario dependent. Thus,
a very critical open challenge is arguably the (lack of)
availability and reusability of software components across
different solutions and platforms. In order to achieve components
and solution re-usability we need to have a completely
different approach from the non-modular, holistic, ad hoc
design which can address the following technical challenges: