As wireless sensor systems and networks thereof transition from research prototypes to commercial deployment their reliable and dependable operation is crucial to widespread adoption and commercial success. Unreliable sensor network operation is oftentimes the result of one or more of the following events: (a) hardware faults (e.g., failure of hardware components such as sensors), (b) software problems (e.g., bugs, incorrect program logic, unsafe operations), or (c) networking issues (e.g., interference, collisions).
Those skilled in the art will readily appreciate that ensuring reliable software operation in wireless sensor networks offers an extremely challenging set of problems. In particular, a combination of severe resource constraints, lack of architectural safety features such as memory protection, and operation in unpredictable environments leads to uncommon and unexpected failures in sensor networks that oftentimes manifest themselves only at run-time through complex trigger mechanisms. As a result, pre-deployment testing using conventional quality assurance tools such as simulators is not sufficient as it does not accurately reflect the sensor system's post-deployment behavior. Consequently—for contemporary sensor systems—in-field testing and validation of deployed systems is necessary.
For post-deployment testing, the more “visibility” a software designer can obtain into program behavior as it executes in-field, the easier the program will be to test, analyze, validate, and if needed, debug. Furthermore, visibility is essential for exercising control (e.g., to correct/mask errors, access control, resource allocation) over software execution in deployed sensor nodes. Unfortunately, obtaining fine-grained visibility into a running software system is hard in any embedded system and even harder in sensor networks where the nodes under test may be several wireless hops away.