The use of software to control devices deployed, for example, in medical, transportation, and power systems demands correct software operation. Current approaches to assuring the correct operation of embedded software face significant challenges in scaling to the next generation of embedded applications. A promising strategy for meeting these challenges is to deploy ""monitoring"" software that will ""watch"" and ""warn"" of problematic situations that the operational software should adapt to avoid. Unfortunately, current approaches for software monitoring result in excessive overhead and are not sensitive to the fundamental timeliness requirements in embedded software.
This project is investigating technologies for the timely and efficient monitoring of software in embedded systems. Specifically, the project explores the synergistic combination of three approaches: (1) exploiting the results of static analysis to calculate a minimal ""residual"" analysis problem to be monitored at run-time, (2) ""adapting"" the degree of observation of the software dynamically during execution while preserving the fidelity of monitoring, and (3) using scheduling techniques to ensure that monitors detect patterns of software behavior with a ""predictable"" worst-case delay. Together these techniques are being combined into a single predictable, adaptable, residual (PAR) monitoring infrastructure within which a variety of implementation strategies will be realized. Evaluation of the cost-effectiveness of these techniques will be carried out in the context of RTSJ and sensor-network infrastructures and applications. These techniques and the PAR infrastructure are the basis for projects in both real-time systems and software validation courses to train the next generation of embedded software engineers.
Computer software is a critical component of modern society's infrastructure. Assuring that software operates correctly is a significant challenge. One approach that has been explored in recent years is to equip application software with additional software whose purpose is to "watch" the operation of the application looking for erroneous behavior and inform interested parties so that errors can be fixed quickly. As one might anticipate adding monitoring to an application may slow it down. This project explores a range of techniques to minimize the application slow down arising from monitoring. The project advances the state of the art in this area by (1) developing a number of techniques for identifying when certain parts of the program do not need to be monitored (because they are guaranteed to be error free), (2) developing techniques that make the execution of monitors faster when they are needed, and (3) developing the theoretical foundations that allow monitors to be incorporated into "real time" systems for which correctness is judged not only by calculating the expected answer, but by doing so in given amount of time. As an application of these ideas, we have incorporated our monitoring techniques into a device that is capable of gathering data on the migratory behavior of Cranes. This system has been used to monitor the migration of a small number of Sandhill Cranes and in the coming years many more birds will be equipped with this device. The monitoring software on board the device will help to ensure that the devices operates correctly and transmits data back to ecologists concerned with Crane behavior, habitat, and survival.