Intelligible TinyOS Sensor Systems: Explanations for Embedded Software

As embedded sensing systems are central to developing pervasive, context-aware services, the applications running on these systems should be intelligible to system programmers and to users. Given that sensor systems are programmed in low-level languages, manually writing high-level explanations about their decision model requires knowledge about the system architecture, and is error-prone. We explore the possibility of extracting explanations which are small and expressive, but still preserve bit-level accuracy when needed. We contribute a tool which automatically and soundly generates compact, graphical explanations from sensor software implementation at compile-time. We base our algorithm on the techniques of (i) finite-state machine model extraction from software as used in model checking, and (ii) abstraction of program execution traces. We experiment with extracting explanations from heavyweight, low-level TinyOS applications for a mainstream sensor platform.

[1]  Stefania Gnesi,et al.  Formal verification , 2001 .

[2]  Anind K. Dey,et al.  Assessing demand for intelligibility in context-aware applications , 2009, UbiComp.

[3]  Richard Han,et al.  NodeMD: diagnosing node-level faults in remote wireless sensor systems , 2007, MobiSys '07.

[4]  Ramesh Govindan,et al.  Deriving State Machines from TinyOS Programs Using Symbolic Execution , 2008, 2008 International Conference on Information Processing in Sensor Networks (ipsn 2008).

[5]  Brad A. Myers,et al.  An Exploratory Study of How Developers Seek, Relate, and Collect Relevant Information during Software Maintenance Tasks , 2006, IEEE Transactions on Software Engineering.

[6]  Uwe Hansmann,et al.  Pervasive Computing , 2003 .

[7]  Mary Shaw,et al.  The state of the art in end-user software engineering , 2011, ACM Comput. Surv..

[8]  Anders Kofod-Petersen,et al.  Explanations and Context in Ambient Intelligent Systems , 2007, CONTEXT.

[9]  David E. Culler,et al.  The nesC language: A holistic approach to networked embedded systems , 2003, PLDI '03.

[10]  Peng Li,et al.  T-check: bug finding for sensor networks , 2010, IPSN '10.

[11]  Marc Langheinrich,et al.  Proceedings of the 12th ACM international conference on Ubiquitous computing , 2010, Ubicomp 2010.

[12]  Rajeev Alur,et al.  A Temporal Logic of Nested Calls and Returns , 2004, TACAS.

[13]  Jonathan W. Hui,et al.  T 2 : A Second Generation OS For Embedded Sensor Networks , 2005 .

[14]  Klaus Wehrle,et al.  KleeNet: discovering insidious interaction bugs in wireless sensor networks before deployment , 2010, IPSN '10.

[15]  Doina Bucur,et al.  On software verification for sensor nodes , 2011, J. Syst. Softw..

[16]  John Harrison,et al.  Formal Verification , 2011, Software and Systems Safety - Specification and Verification.

[17]  Luciano Baresi,et al.  Anquiro: enabling efficient static verification of sensor network software , 2010, SESENA '10.

[18]  David Gay,et al.  Software design patterns for TinyOS , 2005, LCTES '05.

[19]  Anind K. Dey,et al.  Toolkit to support intelligibility in context-aware applications , 2010, UbiComp.

[20]  José M. Troya,et al.  Programming Approaches and Challenges for Wireless Sensor Networks , 2007, 2007 Second International Conference on Systems and Networks Communications (ICSNC 2007).

[21]  Magdalena Balazinska,et al.  Specification and Verification of Complex Location Events with Panoramic , 2010, Pervasive.

[22]  Eric Eide,et al.  Efficient memory safety for TinyOS , 2007, SenSys '07.

[23]  TELOS , 2009 .

[24]  Acm Sigplan Proceedings of the ... ACM SIGPLAN/SIGBED Conference on Languages, Compilers, and Tools for Embedded Systems : LCTES , 2004 .

[25]  Robert Szewczyk,et al.  System architecture directions for networked sensors , 2000, ASPLOS IX.

[26]  Daniel Kroening,et al.  A Tool for Checking ANSI-C Programs , 2004, TACAS.

[27]  Anind K. Dey,et al.  Support for context-aware intelligibility and control , 2009, CHI.