Research

I study how to make software-intensive systems reliable and secure. My research begins with engineering practice: I study how software is built and used, identify where existing assumptions and engineering methods break down, and turn those findings into new methods, tools, and ways of engineering software.

I pursue this problem from several directions: understanding how software fails in practice; developing analysis and assurance methods that prevent failures; making dependencies and reused components easier to understand and govern; and studying how emerging technologies, including AI, change the way software is built and engineered.

My current research is organized around six programs.

Model-Based Agentic Software Engineering

How should we engineer software when implementation becomes abundant but engineering judgment remains scarce?

10 publications

Embedded Software Engineering

How can analysis and assurance become practical for embedded software?

10 publications

Failure-Aware Software Development

What can we learn from the ways software systems fail?

9 publications

Software Engineering for Pre-Trained Models

What changes about software engineering when the reused component is a learned model?

20 publications

Software Supply Chains

How can software reuse remain trustworthy at ecosystem scale?

17 publications

Regular Expression Engineering

What can small programs teach us about large software-engineering problems?

15 publications

Other research

My research also extends beyond these six programs, often through collaborations in which software-engineering questions intersect with other areas.

Software security, reliability, and systems. I have studied software security and reliability across areas including GraphQL, provenance, privacy, trust and safety, anti-phishing interventions, and software testing. Examples include:

Efficient computing systems. My work on efficient computing systems includes adaptive models, inference optimization, edge computing, and energy efficiency:

Engineering education. I study how software engineering and systems thinking can be taught through project-based learning and increasingly capable AI tools:

The complete record is on the Publications page.

Patents