My research interests are in the general field of software engineering, focusing on Software Architecture, Self-adaptive Systems, and Everyday Computing.
Software architecture: Techniques and tools for precisely defining the design of a software system, specifically so that its quality attributes can analyzed early in the development lifecycle. My current specific interests are in how to use architectural modeling techniques to design system that have high degrees of software and physical elements, so-called cyber-physical systems.
Self-adaptive systems: Many systems today have the requirement that they must be kept running 24/7, and be robust and responsive even in changing environments. This requires software to dynamically change. This research is exploring the use of software architectures to provide advice as the system runs on how the system should adapt and change, while still maintaining quality of service requirements.
Software for everyday people: Software is becoming all pervasive and everyday non-computer scientists must interact with software to get their daily tasks done. In this research, I am interested in how people's tasks can be better supported by software, either by capturing mundane tasks so that they can be automated, or by providing simple specification techniques that allow people to define how these tasks should be automated. Current research is focusing on providing software platforms and tools to aid in the automation of workflows for scientists studying human social, cultural, and behavioral structures.