Research

Research Mission

Our research mission is to pursue a more complete understanding of how engineers develop software, and to build the next generation of intelligent developer tools to help facilitate the software engineering process. To accomplish this, we study the methods and techniques by which developers design, create, test, and manage software. In particular, we examine developer needs related to various tasks in the software development lifecycle and design tailored automated approaches for those needs with the intention of facilitating software development and maintenance tasks.

Given the developer-focused nature of our research, we aim to straddle the line between scientific discovery and industrial applicability. We work to identify and understand meaningful problems faced by real developers in the constantly shifting modern landscape of software engineering, and then formulate projects that work towards solving these problems. Most recently, our lab has shifted focus to evaluating, understanding, and building software engienering agents capable of autonomsly carrying out tasks. While these agents have become quite useful, the models and harnesses that comprise them still require further research to maximize thier trustworthiness and usefulness. To this end, the lab is currently exploring how to make agents easier to interpret and trust, more capable, and more reliable.

In essence, the main goal of the lab's research is to make it as easy as possible for engineers to go from ideas to working software.

Research Focus Areas

  • AI for Software Engineering

    Our lab conducts research that aims to leverage new advances in artificial intelligence (with a focus on MLLMs & Deep Learning) to help build automated developer tools. Additionally, we examine how to best design tools and practices to engineer reliable systems that make use of artificial intelligence.

  • Agentic Software Engineering

    Coding agents are being handed more and more of the software engineering process. We work on making them genuinely useful to developers, and on understanding what they can and cannot do. We use machine learning interpretability techniques to explain their behavior and design new forms of benchmarking to measure capabilities honestly.

  • Bug Reporting

    Given the complexity of modern applications, bugs often continue to persist after release, and users need effective mechanisms to report them. Our research has pioneered interactive bug reporting systems, and we continue to advance error reporting methods for software.

  • Software Security

    Given that software is interwoven into users' personal lives, the stakes of software security and privacy have never been higher. Our research examines how we can apply software engineering principles and practices to help ensure the security of complex software systems.

  • Automated UI Analysis

    The Graphical User Interface represents a rich source of information that describes software in a visual manner, allowing users to intuitively understand software functionality. Our research aims to automatically analyze user interfaces to automate software tasks.

  • Open Science

    Our lab follows open science practices. We strive to make all of our papers, software, and data freely available to the public to support replication, scientific progress, and the advancement of software engineering research.

Research Sponsors

The SAGE Lab graciously acknowledges support from our sponsors, including the National Science Foundation, Cisco Systems, and Apple. See the Lab Funding page for the grants supporting our work.