Improving driver robustness: an evaluation of the Devil approach

To keep up with the frantic pace at which devices come out, drivers need to be quickly developed, debugged and tested. We have recently introduced a new approach to improve driver robustness based on an Interface Definition Language, named Devil. Devil allows a high-level definition of the communication of a device. A computer automatically checks the consistency of a Devil specification and generates stubs that include run-time checks. We use mutation analysis to evaluate the improvement in driver robustness offered by Devil. To do so, we have injected programming errors using mutation analyses into Devil based Linux drivers and the original C drivers. We assess how early errors can be caught in the development process, by measuring whether errors are detected either at compile time or at run time. The results of our experiments on the IDE Linux disk driver show that nearly 3 times more errors are detected in the Devil driver than in the original C driver.

[1]  Laurent Réveillère,et al.  A DSL approach to improve productivity and safety in device drivers development , 2000, Proceedings ASE 2000. Fifteenth IEEE International Conference on Automated Software Engineering.

[2]  Greg Kroah-Hartman,et al.  Linux Device Drivers , 1998 .

[3]  R. Lipton,et al.  Mutation analysis , 1998 .

[4]  A. Jefferson Offutt,et al.  Constraint-Based Automatic Test Data Generation , 1991, IEEE Trans. Software Eng..

[5]  R.A. DeMillo,et al.  An extended overview of the Mothra software testing environment , 1988, [1988] Proceedings. Second Workshop on Software Testing, Verification, and Analysis.

[6]  Laurent Réveillère,et al.  Devil: an IDL for hardware programming , 2000, OSDI.

[7]  Jean Arlat,et al.  Dependability of COTS Microkernel-Based Systems , 2002, IEEE Trans. Computers.

[8]  J. R. Abrial,et al.  The B-Book: Mathematics , 1996 .

[9]  Laurent Réveillère,et al.  The Devil Language , 2000 .

[10]  Marco Vieira,et al.  On the emulation of software faults by software fault injection , 2000, Proceeding International Conference on Dependable Systems and Networks. DSN 2000.

[11]  Joseph M. Newcomer,et al.  Developing Windows NT Device Drivers: A Programmer's Handbook , 1999 .

[12]  Jean-Raymond Abrial,et al.  The B-book - assigning programs to meanings , 1996 .

[13]  Richard J. Lipton,et al.  Hints on Test Data Selection: Help for the Practicing Programmer , 1978, Computer.

[14]  J. R. Abrial,et al.  The B-Book: Programming , 1996 .