Image Processing Reference
In-Depth Information
a test harness. This allows to check for the correctness of function of code written and persistence
over a longer period of development with often complicated integration. This divides the problem
of checking for correct functionality into smaller pieces, is extremely popular in programming (e.g.,
JUnit []) and recently also available for TinyOS [] and the nesC language []. It is widely appli-
cable especially for agile methods such as test-driven development. Unit testing is a powerful tool,
yet not sufficient to test the comprehensive system, as the system is more than just the union of its
components. Complex interactions induced by the inherent parallelism and nondeterminism in dis-
tributed systems require additional testing on the complete system functionality, e.g., to assure that
asserted preconditions hold. As our test architecture follows an integrative approach, unit testing can
easily be integrated and ameliorate the coverage of tests.
11.4.3.4 Memory Profiling
Embedded system design revolves around the efficient usage of resources and correct functionality.
Memory usage analysis is therefore a very important indicator of the status of a project. A simple, yet
powerful test extension is a histogram of the memory usage (see Figure .) and to test on a known
upper bound of a specific platform, e.g.,  kb in the case of an MSPF [].
11.4.3.5 Notification on Build Failures
CI typically contains a notiication mechanism. In the case of CruiseControl, these can be configured,
e.g., to send email notification to all developers involved upon a failed build. hese email notifications
contain complete coverage of build status and the error logs in question. Repetitive notifications can
be used to emphasize urgency and as a result are powerful mechanism to successful progress in teams.
The results are anonymous and offer an objective way of telling everyone what went wrong based on
a reference installation of both the toolchain and codebase. This eliminates defects stemming from
individual developers computer setups, e.g., developers forgetting to include libraries that they use
locally. Apart from the technical perspective, the social implication of this mechanism are obvious:
No more personal confrontations of fellow developers neither across institutional borders nor in close
vicinity of a shared office that are detrimental to productivity. Anonymity in this case is very healthy
since it provides objective, qualitative, and quantitative measures (Figure .).
11.4.3.6 Graphical Reporting
The features presented in the previous sections all rely on a tool running on some input and pro-
viding output data, generating reports as they are executed. While the original logs and text files
generated are important when digging deep into details, a powerful graphical reporting interface
helps to present an overview of the most critical aspects from the wealth of information and con-
texts. his provides the benefit to allow for depicting long periods of project development including
dependencies in a concise representation. In some cases, as for the memory histograms shown in
Figure . such an overview reveals trending information, thus aiding in the interpretation by
providing powerful visual feedback.
11.4.4 Continuous Integration in the Sensor Network Context
The concept of regression builds, unit testing, and test automation are not new and already very
successful in the enterprise software world. In this context, Java or similar programming languages
prevail and software is typically built for and run on large servers. This is a software-focussed
approach that does not take into account the hardware intricacies in deeply embedded systems,
suchasthedetailsofthesensornodehardwareplatformortheinluenceoftheenvironment.his
is completely different to WSNs. he distributed and embedded nature of today's WSN systems does
not allow for mapping the aforementioned procedures and tools directly from enterprise scale CI.
 
Search WWH ::




Custom Search