Walid M. Taha William Marsh Rice University
SoD: Synthiszizing Device Drivers
The goal of this project is develop a framework for designing software-intensive systems based on recent work on multi-stage programming languages. Our thesis is that the concept of staging, originally developed to support program optimization, is a fundamental technique in the emerging science of design of software-intensive systems. We believe that many software-intensive systems can be designed more effectively using a linguistic framework that reflects the staging distinctions separating high-level software designs from their implementations on particular platforms.
In earlier work, we helped develop the conceptual foundations of multi-stage programming including the construction of core calculi and type systems that support staging and the development of a realistic language incorporating staging called MetaOCaml. In this project, we intend to show how staging can be used to improve the process of designing software in industry where the phase distinction between program designs and deployed implementations is acute. We will focus on the design of device drivers because the deployed code for controlling a device varies greatly depending on the vagaries of the device interface and the hardware platform to which it is attached. In this context, we must extend staging techniques to handle event-driven computation, concurrency, and strict limitations on resources.