CAREER: Informed Decision Making for Software Change
CAREER: Informed Decision Making for Software Change
批准号:
2239107
负责人:
Oscar Javier Chaparro Arenas
金额:
$55.01万
依托单位国家:
美国
项目类别:
Continuing Grant
财政年份:
2023
资助国家:
美国
项目状态:
未结题
起止时间:
2023-06-01 至 2028-05-31
中文摘要
软件工程师不断修改源代码,以增加新的功能,并对软件系统进行改进。不幸的是,在这个过程中,工程师经常进行代码更改,这会增加软件缺陷、意外的系统行为和代码劣化。低质量的代码变更对最终用户、组织和社会都有严重的后果,因为它们在软件开发、操作和维护中产生了过多的成本。事实上,在2020年,美国低质量软件的估计成本是两万亿美元。低质量代码更改的一个关键原因是软件工程师通常对代码缺乏足够的知识,这导致他们在如何正确更改代码方面做出错误的决定。获得这样的知识是极具挑战性的,部分原因是与代码相关的文档信息是非结构化的、碎片化的,并且分散在各种软件工件/存储库中,它们之间没有明确的可跟踪关系。为了解决这些基本的挑战,这个项目将处理和管理记录在软件工件/存储库中的代码变更决策,以帮助工程师做出关于如何正确更改源代码的明智决策。指导这个项目的前提,由先前的研究结果支持,是文档化的代码变更决策包含有价值的代码相关知识,这些知识可以告知软件工程师设计和实现满足软件需求的代码变更,并将引入的缺陷、意外的系统行为和代码劣化最小化。这个项目将产生一个新的代码变更决策理论,以及新的技术和交互式/集成工具支持,以更好地捕获、跟踪和推荐代码变更决策信息,这对设计和实现高质量的代码变更很有用。这个项目的结果将允许软件工程师在解决新特性/增强请求和缺陷报告时,轻松地捕获和管理他们在软件工件中的决策。此外,工程师将更好地从先前的决策中学习,从而生产出故障更少、更易于维护的软件。组织和社会将受益于更有效地支持其业务过程的软件系统,从而降低软件开发、操作和维护的成本。这个项目以三个目标为中心。首先,它将开发一个代码更改决策理论,它将记录:(i)代码更改决策的策略和模式,(ii)做出适当的和糟糕的代码更改决策的因素,以及(iii)关于软件工程师应该如何制定/重用代码更改决策以解决新问题的可操作指导方针。其次,它将设计和开发新的自动化技术和交互式工具,以支持捕获和跟踪代码更改决策的信息元素,同时工程师在各种软件工件中记录与代码相关的知识。第三,它将设计和开发新的自动化技术和交互式工具支持,以告知工程师:(i)过去代码更改的原因,(ii)过去代码更改决策与解决新特性/增强请求或缺陷报告相关,以及(iii)过去决策对代码质量和缺陷引入的影响的证据。所提出的理论和技术将通过对经验软件工程、自动文本分析、机器/深度学习、信息检索和人机交互的交叉研究来发展。该项目旨在教育下一代的软件工程师,使他们具备构建和发展高质量软件的坚实基础和技能。所有学术水平的学生都将学习代码更改决策以及如何使用这些决策来有效地构建和维护软件。该项目将创建可重复使用的教育课程包,将研究工具整合到课程项目中,组织社区建设和外展活动,并从代表性不足的群体中招募/留住学生。该奖项反映了美国国家科学基金会的法定使命,并通过使用基金会的知识价值和更广泛的影响审查标准进行评估,被认为值得支持。
英文摘要
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.
期刊论文(0)
专著(0)
科研奖励(0)
会议论文
海外基金