Direct (Directed Testing of Embedded Software) is an infrastructure for the analysis and testing of multi-threaded embedded software. Direct provides the following features:
Change impact analysis of multi-threaded C programs.
- Tracking changes in source code as fragments of code are deleted, inserted or moved.
- Monitoring the state of a multi-threaded program as a function of the states of its constituent threads, as the threads transfer control to the Operating System via control primitives or other user defined functions of interest.
Benefit: changes in program state due to a change in source code are an indicator of potential bugs caused by the change.
Sensitivity Analysis.
- Models changes in compiler options, linked libraries, changes in the underlying operating system.
- Direct is capable of injecting delays in all or select threads to model changes in execution times of various control primitives or of blocks of code.
Benefit: this is an effective mechanism to accumulate a large set of reachable states of the program. This is useful for both exposing bugs due to thread interleavings as well as perform change impact analysis, tracking states after a change against a large set of states that were gathered before the change.
Configurable instrumentation and interoperability.
- Direct can be easily re-targeted to a new OS via a configuration file that gives the set of primitives to monitor.
- For the eCos development platform, Direct provides the capability to execute all code extraneous to the user program in zero time. This implies that bugs reported by Direct are real bugs that will be seen in the actual environment.
Direct is in development. We have completed the infrastructure to enable us to do both sensitivity analysis and change impact analysis. We are currently working on moving from random delay injection based coverage to a more directed setting, where we aim to use directed local perturbations in the execution of threads to generate new program states that haven't been seen before. We expect to release the tool at the end of summer, 2009. If you are interested in some capability not currently supported, let us know by email.
For developers only: These pages are viewable only by people in the DvlabFriendsGroup.
Downloading, Installing, and Using Direct
Requirements:
- Operating systems: linux.
Software: a C compiler, and Ocaml 3.10.
Direct Documentation
A technical report that covers the Direct infrastructure for sensitivity and change impact analysis will be made available below. It is based on submitted work pending acceptance:
K. Chatterjee, L. de Alfaro, V. Raman, C. Sanchez. Analyzing the Impact of Change in Multi-threaded Programs. Technical report, School of Engineering, University of California, Santa Cruz, CA 95064, USA, 2009. Postscript PDF
Direct is written in Ocaml and in C, and it runs on a linux platform using the eCos Synthetic Target and Hardware Abstraction Layer.
Authors
The current developers of Direct are Krishnendu Chatterjee, Luca de Alfaro, Vishwanath Raman, and Cesar Sanchez.
Financial Support
The Direct project has been partially supported by:
- NSF CAREER award CCR-0132780
- NSF grants CCR-0234690 and CCR-0720884
Dvlab Open Wiki