GGrantIndex
← Search

CAREER: Informed Decision Making for Software Change

$425,268FY2023CSENSF

College Of William And Mary, Williamsburg VA

Investigators

Abstract

Software engineers continuously change source code to add new functionality and make improvements to software systems. Unfortunately, during this process, engineers often make code changes that increase software defects, unintended system behavior, and code deterioration. Low-quality code changes have significant consequences for end-users, organizations, and society, as they create excessive costs in software development, operation, and maintenance. In fact, in 2020, the estimated cost of low-quality software in the United States was two trillion dollars. A crucial cause for low-quality code changes is the fact that software engineers often have insufficient knowledge about the code, which leads them to make poor decisions on how to correctly change it. Obtaining such knowledge is extremely challenging, in part because documented code-related information is unstructured, fragmented, and scattered across various software artifacts/repositories without explicit traceability relationships among them. To address these fundamental challenges, this project will process and manage code change decisions documented in software artifacts/repositories to assist engineers in making informed decisions on how to correctly change source code. The premise that guides this project, supported by prior research results, is that documented code change decisions contain valuable code-related knowledge that can inform software engineers in designing and implementing code changes that meet software requirements and minimize the introduction of defects, unintended system behavior, and code deterioration. This project will produce a novel theory of decision-making for code change, as well as novel techniques and interactive/integrated tool support to better capture, trace, and recommend code change decision information, useful to design and implement high-quality code changes. The results of this project will allow software engineers to easily capture and manage their decisions in software artifacts while they are solving new feature/enhancement requests and defect reports. Additionally, engineers will better learn from prior decisions to produce software that is less faulty and easier to maintain. Organizations and society will benefit from software systems that support their business processes more effectively, leading to lower costs in software development, operation, and maintenance. This project is centered on three goals. First, it will develop a theory of code change decisions that will document: (i) strategies and patterns of code change decision-making, (ii) factors that make adequate and poor code change decisions, and (iii) actionable guidelines on how software engineers should make/reuse code change decisions to solve new problems. Second, it will design and develop novel automated techniques and interactive tool support for capturing and tracing information elements of code change decisions, while engineers document code-related knowledge in various software artifacts. Third, it will design and develop novel automated techniques and interactive tool support to inform engineers about: (i) the reasons why past code changes were made, (ii) past code change decisions relevant to solve a new feature/enhance request or defect report, and (iii) evidence of the impact that past decisions had on code quality and defect introduction. The proposed theory and techniques will be developed through cross-cutting research on empirical software engineering, automated text analysis, machine/deep learning, information retrieval, and human-computer interaction. The project aims to educate the next generation of software engineers with a strong foundation and skills to build and evolve high-quality software. Students at all scholarly levels will learn about code change decisions and the way these can be used to effectively build and maintain software. The project will create reusable educational course packages, integrate research tools into course projects, organize community-building and outreach events, and recruit/retain students from underrepresented groups. This award reflects NSF's statutory mission and has been deemed worthy of support through evaluation using the Foundation's intellectual merit and broader impacts review criteria.

View original record on NSF Award Search →