课题基金 / 基金详情

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年,美国低质量软件的估计成本为2万亿美元。低质量代码更改的一个关键原因是软件工程师经常对代码缺乏了解,这导致他们在如何正确更改代码方面做出糟糕的决定。获取此类知识极具挑战性,部分原因是与代码相关的文档化信息是非结构化的、零散的,并且分散在各种软件构件/存储库中,它们之间没有明确的可追溯性关系。为了应对这些基本挑战,该项目将处理和管理软件构件/存储库中记录的代码更改决策,以帮助工程师就如何正确更改源代码做出明智的决策。指导该项目的前提是,有文档记录的代码更改决策包含有价值的代码相关知识,这些知识可以为软件工程师设计和实现满足软件要求的代码更改提供信息,并将缺陷、意外系统行为和代码恶化的引入降至最低。该项目将产生一种新的代码更改决策理论,以及新的技术和交互/集成工具支持,以更好地捕获、跟踪和推荐代码更改决策信息,有助于设计和实现高质量的代码更改。该项目的结果将允许软件工程师在解决新的功能/增强请求和缺陷报告时,轻松地捕获和管理他们在软件构件中的决策。此外,工程师将更好地从以前的决策中学习,以生产出缺陷更少、更易于维护的软件。组织和社会将受益于更有效地支持其业务流程的软件系统,从而降低软件开发、运营和维护的成本。该项目围绕三个目标展开。首先,它将开发一个代码更改决策理论,该理论将记录:(I)代码更改决策的策略和模式,(Ii)做出适当和糟糕的代码更改决策的因素,以及(Iii)关于软件工程师应该如何做出/重用代码更改决策以解决新问题的可行指导方针。其次,它将设计和开发新的自动化技术和交互工具支持,以捕获和跟踪代码更改决策的信息元素,同时工程师将与代码相关的知识记录在各种软件构件中。第三,它将设计和开发新的自动化技术和交互式工具支持,以告知工程师:(I)过去进行代码更改的原因,(Ii)与解决新功能/增强请求或缺陷报告相关的过去代码更改决定,以及(Iii)过去决定对代码质量和缺陷引入的影响的证据。拟议的理论和技术将通过经验软件工程、自动文本分析、机器/深度学习、信息检索和人机交互的交叉研究来发展。该项目旨在培养具有强大基础和技能的下一代软件工程师,以构建和发展高质量的软件。所有学术水平的学生都将学习代码更改决策以及如何使用这些决策来有效地构建和维护软件。该项目将创建可重复使用的教育课程包,将研究工具整合到课程项目中,组织社区建设和外展活动,并从代表不足的群体中招收/留住学生。该奖项反映了NSF的法定使命,并通过使用基金会的智力优势和更广泛的影响审查标准进行评估,被认为值得支持。
英文摘要
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)
会议论文
海外基金