My Research Interests

My primary research interests are component-based software development, distributed systems and ubiquitous computing. I'm particular interested in building autonomous infrastructure to allow service composition and system restructuring.

Within the past two decades, the development of raw computing power coupled with the proliferation of computer devices has grown at exponential rates. This phenomenal growth, along with the advent of the Internet has led to a new age of accessibility to people, to systems, and most importantly, to information. Access to information becomes omni-present through PCs, hand-held and wireless devices. While we're all fascinated by this revolution, we ask ourselves how people will manage their systems effectively with such greatly increased complexity. To be more specific:

  • How to organize a constellation of distributed components into a federated system?
  • How to compose services provided by individual components to fulfill more sophisticated tasks?
  • How to make components interact and coordinate with each other effectively?
  • How to build more intelligent and proactive components?
  • How to allow users to transparently access information from multiple distributed sources?
  • How to allow critical computer operations to run with minimum human interaction?
  • How to enforce security and privacy in such systems?
  • How to guarantee such systems to be fault-tolerant?

Among these issues component (service) composition and system adaptation are the most interesting topics to me. With respect to adaptation, there are two important levels: component-level adaptation and system-level adaptation. A component should be self-adaptive in the sense that it must be aware of its environment and surrounding context, and then act accordingly. It should be able to find and generate rules for how best to interact with neighboring systems. It should also know how to make use of available resources or even negotiate the use of underutilized elements of other systems, changing both itself and its environment in the process. A system should be self-adaptive in the sense that it is aware of environmental and component changes, adjusting component composition or configuring system architecture dynamically to achieve high dependability based on the learned knowledge. To me, system-level adaptation is the more challenging problem, and is what I would particularly like to delve into.

I'm currently participating in the research and development of Project RADAR and Project Aura.

RADAR Project

RADAR (Reflective Agents with Distributed Adaptive Reasoning) is a large research project funded by DARPA's Cognitive Computing Initiative. Its goal is to develop software-based cognitive personal assistants that can help people improve productivity in their workplace. I'm working on the high-level architecture of RADAR under Prof. David Garlan's guidance. The most significant challenge facing us is how to enable a variety of heterogeneous agents to coordinate seamlessly and effectively to accomplish sophisticated tasks. At present I'm experimenting on a prototype of a key component in the architecture: the Task Manager, which is intended to manage high-level tasks and coordinate communications among agents in a personal space.

Aura Project

Aura is a ubiquitous computing framework allowing computational tasks moving from one environment to another with minimum user distraction. One of the core elements in an Aura system is the notion of a "supplier". Each supplier is an application wrapper with an abstract description of the services the application provides. I designed and developed a generic framework for developing Aura suppliers on Windows platform. This framework allows miscellaneous Windows applications to be easily plugged into an Aura system. Major design challenges were to create a flexible, asynchronous communication mechanism, parallelism, portability, and system extensibility. I'm also participating in the research in context-awareness.