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. In other words, we work to identify and understand meaningful problems faced by real developers in the constantly shifting modern landscape of software engineering. We then formulate projects that work towards solving these problems by designing state-of-the-art, automated approaches applying novel adaptations of machine learning (ML), Deep Learning (DL), program analysis, computer vision, and natural language processing (NLP) techniques.
In essence, we aim to make it as easy as possible for engineers to go from ideas to working software.
Research Focus Areas
Given their ubiquity in today's society, creating effective developer tools and software engineering practices for mobile applications is essential. Our research looks to build forward-thinking programming tools for mobile apps.
AI and Software Engineering
Our lab conducts research that aims to leverage new advances in artificial intelligence (with a focus on Deep Learning) to help build automated developer tools. Additionally, we examine how we best design tools and practices to engineer reliable systems that make use of artificial intelligence.
Given the complexity of modern applications, bugs often contnue 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.
Given that software is interwoven into user's 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 reich source of information that describes software in a visual manner. They allow users to intuitively understand software functionality. Our research aims to automatically analyze users interfaces to automate software tasks.
Our lab follows open science practices. We strive to make all our papers, software, and data freely available to the public to support replication, scientific progress, and the advancement of software engineering research.
SHF: Small Towards a Holistic Causal Model for Continuous Software Traceability
- Award Info: National Science Foundation Award CCF-2007246
- Funding Amount: $500,000
- Funding Period: October 1st, 2020 - September 30th, 2023
Collaborative Research: SHF: Medium: Bug Report Management 2.0
- Award Info: National Science Foundation Award CCF-1955853
- Funding Amount: $1,200,000
- Funding Period: October 1st, 2020 - September 30th, 2024
EAGER: Mapping Future Synergies between Deep Learning and Software Engineering
- Award Info: National Science Foundation Award CCF-1927679
- Funding Amount: $82,828
- Funding Period: July 15th, 2019 - June 30th, 2020
Identifying and Tracing Security-Related Software Requirements
- Award Info: Cisco Advanced Security Research Grant
- Funding Amount: $100,000
- Funding Period: July, 2019 - July, 2020