A DSL Approach to Improve Productivity and Safety in Device Drivers Development Gilles Muller Mutation Testing Although peripheral devices come out at a frantic pace and require fast releases of drivers, little progress has been made to improve the development of drivers. Too often, this development consists of decoding hardware intricacies, based on inaccurate documentation. Then, assembly-level operations need to be used to interact with the device. These low-level operations reduce the readability of the driver and prevent safety properties from being checked. This paper presents an approach based on domain-specific languages to overcome these problems. After a thorough domain analysis, we define a language, named DEVIL, dedicated to defining the basic communication with a device. DEVIL allows the programmer to easily map a device documentation into a device description. This description formally specifies the access mechanisms, the type and layout of data, as well as behavioral properties involved in operating the device. Once compiled, a DEVIL description implements an interface which models an idealized device and abstracts the hardware complexity. Unlike a general-purpose language, DEVIL allows a description to be checked for consistency. This not only improves the safety of the interaction with the device but also discovers bugs early in the development process. To assess our approach, we have shown that DEVIL is expressive enough to specify a large number of devices including Ethernet, video, disk, sound, LED display, interrupt, DMA and mouse controllers. To evaluate productivity improvement over traditional development in C, we report a first experiment based on mutation testing.