Software Engineering at Khoury College of Computer Sciences
Building the solutions that keep software ecosystems working
Software is the heart of the systems that run our world. Researchers working in this area at Khoury College of Computer Sciences study the methodologies, tools, and frameworks that support software development — for example, code libraries, developer environments, quality assurance procedures, and software architecture.
Software engineering research also addresses human and social factors in development work, including how professional communication and collaboration can be supported and steps to make the field equitable. All of these strands of research result in better solutions for the challenges that developers face and provide new insights into software and its applications, improve programmer productivity, and enhance overall software quality.
Making a global impact
Khoury College research helps the global software ecosystem keep working. Open-source software, freely distributed programming code that anyone can use and contribute to, is the foundation of our digital world. To work effectively in open-source contexts, software developers must have an entire set of practices, tools, and solutions that embrace everything that supports and surrounds development —from technical, workflow, policy, and human perspectives. Software engineering provides the insights, and its results are advancing the infrastructure and practices that keep our software — and our world — going.
Sample research areas
- Automated approaches to help developers write better software
- Computer-aided modeling, verification, analysis, and synthesis of systems
- Continuous integration/continuous delivery (CD/CI)
- Distributed computing
- Foundations of software and system design
- Modularity in software development
- Open-source ecosystems
- Program analysis
- Programming environment tools
- Software design, implementation, and analysis
- Software engineering for research software
- Software testing and quality assurance
Domains of interest
- Aerospace
- Compilers
- Cyber-physical systems
- Memory management
- Neural networks
- Problem solving in STEM areas
Meet researcher Jonathan Bell
Bell discusses how software testing research has the potential to impact numerous domains.
Current project highlights
“Continuous Integration” (CI)
Continuous Integration is now a standard software engineering practice, in which testing can occur frequently — potentially at every change in the code, enabling quick tracing of errors and corrections. Although this makes debugging faster, cheaper, and more effective, it also brings implementation challenges. Khoury College researchers are building new tools to address these issues, providing open-source solutions as well as integrating findings into testing software for widely used programs.
Flaky tests
One major problem faced by developers who adopt CI approaches arises from “flaky tests,” inconsistent test failures that appear random and may or may not result from problems in the code. Khoury College faculty are researching why these flaky test results occur by doing “software archeology,” building tools to automatically review thousands of revisions of software projects, running tests, and creating a data set of the conditions under which flaky results happen. In turn, this work is spurring research on testing, with the result that new knowledge can help developers identify and repair the causes of test failures faster.
Open-source software supply chain
Modern software built in languages such as Java, Python, and TypeScript increasingly relies on other code libraries built to expand the languages’ technical capacity and support specific functionality. Taken together, languages and libraries form the open-source software supply chain, but unfortunately, it’s a chain that is very vulnerable to breaks at critical links. It’s a global challenge to keep these entire software supply chains operational, secure, and free from these breaks. Researchers at Khoury College have developed new ways to address this challenge by building an open-source observatory to analyze code libraries, identifying and rectifying problems before they cause breaks, and helping keep these essential chains intact.
Recent research publications
Crossover in Parametric Fuzzing
Authors: Katherine Hough, Jonathan Bell
Khoury College researchers have developed a new technique to improve software testing. “Linked crossover” testing combines elements from multiple successful test cases to create better ones. This approach consistently outperforms existing methods for finding software defects, making it a promising tool for enhancing software reliability.
Flexible and Optimal Dependency Management via Max-SMT
Authors: Donald Pinckney, Federico Cassano, Arjun Guha, Jonathan Bell, Massimiliano Culpo, Todd Gamblin
Khoury researchers are developing new package managers (the tools used to install and update software). These are essential but often have limitations or defects. The approach could be both more flexible and efficient than existing methods.
DeFlaker: Automatically detecting flaky tests
Authors: Jonathan Bell, Owolabi Legunsen, Michael Hilton, Lamyaa Eloussi, Tifany Yung, Darko Marinov
Khoury researchers have developed DeFlaker, a testing tool to analyze software tests to help determine if a failed test is flaky (one that gives potentially random results) or reflects an actual defect to remedy. Flaky tests slow down software development and this tool promises to help make things more efficient by reducing time spent troubleshooting flaky tests.
Related labs and groups
Faculty members
-
Jonathan Bell
Jonathan Bell is an assistant professor at Khoury College. His research focuses on automated approaches to help developers write better software, particularly in Java and JavaScript.
-
Arjun Guha
Arjun Guha is an associate professor at Khoury College. His programming languages research addresses security and reliability problems in web programming, systems, and robotics.
-
Olin Shivers
Olin Shivers is a professor at Khoury College. By focusing on the interaction between systems and higher-order typed programming languages, he can assist programmers in building robust, complex software.
-
Frank Tip
Frank Tip is a professor at Khoury College and a former researcher with IBM and Samsung. He studies a host of software engineering and program analysis topics, including the use of program analysis in tools that make programmers more productive and software more reliable.
-
Dakuo Wang
Dakuo Wang is an associate professor at Khoury College. He is also an ACM Distinguished Speaker and gives talks around the world on his research into human-centered AI (HCAI) systems.