Wearable Internet-of-Things (IoT) devices, such as smart watches, smart glasses, and cloud-enabled hearing aids promise to improve our everyday lives. However, developing such systems is challenging. System developers must account for the differences in users and hardware platforms, and anticipate how a system will respond to the changing operating conditions. For example, a hearing aid may use its onboard processor to augment speech in relatively quiet surroundings but rely on more powerful cloud computing resources to enhance speech as users encounters more noisy environments. Today, developers lack effective programming languages and tools to help them create and improve such IoT systems.
This project investigates how adaptive IoT systems may be developed using policy-driven software adaptation and synthesis. Central to our approach is to separate the functionality of a system (encapsulated in software components) from its run-time adaptation (specified as a policy). Developers will be provided with a language to write policies that control when components are executed, their concurrency, and dynamically selects which alternate component implementation should be used. The policy language will be combined with data-driven techniques that integrate simulation, program analysis, and machine learning techniques to configure the parameters of a policy as well as synthesize new policies.
An overview of our work on IoT systems is available below: