My field of interest is software engineering, and specifically the areas of software architecture, self-adaptive systems, and cyber-physical systems. The common thread that links these areas is the problem of controlling the complexity of large software systems by providing a scientific basis for software design and analysis.
Software Architecture. Successful design of software architecture has always been a major factor in determining the success of a software system. Until recently architectural design has been largely based on ad hoc choice, informal experience, and local expertise. The goal of my research is make this knowledge precise, codified, and available to engineers as a matter of routine engineering. My research group has developed a number of languages and tools to support architectural design, including a widely used architecture design environment called AcmeStudio. Recently we have been investigating the possibility of putting such languages and tools in the hands of "end-user architects" — people in domains such as brain imaging, intelligence analysis, and computational biology who have to compose computational elements, but lack deep technical knowledge of computing to do this effectively.
Self-adaptive Systems. Increasingly systems must continue to operate continuously, interacting with diverse external services not under the control of the system designer. A new paradigm is emerging to handle this challenge: a system is augmented with a control layer that takes responsibility for observing the system's behavior, and for maintaining or improving that behavior through run-time adaptation. Currently we are particularly interested in the application of these ideas to achieve self-securing systems. Additionally we are investigating the use of techniques such as probabilistic model checking, machine learning, and planning to augment adaptive capabilities over time.
Cyber-physical Systems. Today many of the computing systems that we depend on involve a combination of physical and computational elements. These systems include the energy grid, air traffic control, modern automotive/highway systems, and building control and automation systems. These systems are difficult to design in part because they require expertise in many disciplines, such as control theory, physical design, software systems, and distributed systems. In our research we are exploring multi-view design methods, in which different domains of expertise can work with models appropriate to that domain, but the models can be integrated and checked for consistency through shared architectural models. Currently we are working with Toyota on advanced automotive systems involving car-to-highway, and car-to-car communication.