前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过395篇论文告诉你大模型在软件工程中的85种应用场景

通过395篇论文告诉你大模型在软件工程中的85种应用场景

作者头像
Antony
发布2024-06-04 09:09:01
3160
发布2024-06-04 09:09:01
举报

本文提供了LLM应用于软件工程的85个场景,以及软件工程应用大模型的路线图。此外,笔者总结了两个发现,供读者参考。

大型语言模型(LLMs)已经显著影响了众多领域,包括软件工程(SE,Software Engineering)。对于LLMs在SE中的应用、效果以及可能的局限性的全面理解仍然处于早期阶段。为了弥补这一差距,论文团队对LLM4SE进行了系统性文献综述(SLR),将SE任务分为六个活动:需求工程、软件设计、软件开发、软件质量保证、软件维护和软件管理,并选择并分析了过去几年的395篇研究论文,总结出了结了LLMs在85个SE活动中的具体应用。并发现LLMs在软件开发中应用最广泛,有229篇论文提到了超过24个SE任务。并给出了LLM引入SE的路线图(Roadmap)。

该论文可以从https://github.com/xinyi-hou/LLM4SE_SLR公开获取。

LLM在SE中的85个应用场景

论文团队将将SE任务分为六个活动类别:需求工程、软件设计、软件开发、软件质量保证、软件维护和软件管理。并根据395篇论文中提到的应用场景,归集到上述6个活动类别之后,有如下的分类。

论文团队是这么解读的“在软件开发领域观察到的研究数量最多,约占总研究量的56.65%。这强调了到目前为止,主要关注点在于利用大型语言模型(LLMs)来增强编码和开发流程。软件维护任务约占研究份额的22.71%,凸显了LLMs在帮助软件更新和改进中的重要性。软件质量保证领域大约占有15.14%的研究比例,表明了在自动化测试程序方面日益增长的兴趣。

相比之下,需求工程和软件设计活动分别仅占研究份额的大约3.9%和0.92%,这表明这些领域到目前为止的探索相对有限。软件管理领域在研究中的代表性最低,仅占0.69%的比例。这种分布强调了对开发和维护任务的重要关注,同时也指出了在测试、设计和管理领域进一步研究的潜在途径。

类别

场景及论文提及次数

总数

需求工程

Anaphoric ambiguity treatment (4) Requirements classification (4)engineering Requirement analysis and evaluation (2)Specification generation (2)Coreference detection (1)Requirements elicitation (1)Specification formalization (1)Traceability automation (1)Use cases generation (1)

17

软件设计

GUI retrieval (1)Rapid prototyping (1)Software specification synthesis (1)System design (1)

4

软件开发

Code generation (118)Code completion (22)Code summarization (21)Code search (12)Code translation (12)Code understanding (8)API inference (5)Program synthesis (6)API recommendation (5)Code editing (5)Code representation (3)Code comment generation (2)Method name generation (2)Code recommendation (2)Agile story point estimation (1)API documentation augment (1)API documentation smells (1)API entity and relation extraction (1)Data analysis (1)Fuzz driver generation (1)Control flow graph generation (1)Identifier normalization (1)Instruction generation (1)Type inference (1)Others (14)

247

质量保证

Vulnerability detection (18)Test generation (17)assurance Bug localization (5)Verification (5)Testing automation (4)Fault localization (3)Defect detection (2)GUI testing (2)Static analysis (2)Binary taint analysis (1)Compiler fuzzing (1)Decompilation (1)Invariant prediction (1)Malicious code localization (1)Mobile app crash detection (1)Resource leak detection (1)Test prediction (1)

66

软件维护

Program repair (35)Code clone detection (8)Code review (7)Debugging (4)Bug reproduction (3)Review/commit/code classification (3) Duplicate bug report detection (3)Logging (3)Log parsing (3)Code revision (2)Sentiment analysis (3)Vulnerability repair (2)API misuses repair (1)Bug prediction (1)Bug triage (1)Code coverage prediction (1)Code review explained (1)Code-Review defects repair (1)Crash bug repair (1)Dockerfile Repair (1)Incivility detection (1)Patch correctness prediction (1)Patch detection (1)Program merge conflicts repair (1)Rename Refactoring (1)Tag recommendation (1)Technical debt payback (1)Traceability recovery (1)Web test repair (1)Type error repair (1)Others (5)

99

软件管理

Effort estimation (2)Software tool configuration (1)

3

LLMs在需求工程中的应用

LLMs在需求工程中发挥着多方面的作用,主要涉及处理语言歧义、需求分类、共指消解、需求获取和软件可追溯性。例如,ChatGPT已证明在解决指代歧义和增强需求清晰度方面具有显著能力。此外,BERT模型在需求分类和术语识别方面超越了传统方法,展现出强大的迁移性和泛化能力。

LLMs在软件设计中的应用

在软件设计领域,LLMs的应用扩展到了GUI检索和快速原型设计。它们通过微调基于BERT的模型来应对GUI检索的挑战,并使用提示设计技术来增强快速原型设计过程,促进了更直观和以用户为中心的软件设计。

LLMs在软件开发中的应用

LLMs在软件开发中扮演着重要角色,特别是在代码生成、代码补全和代码摘要任务中。它们通过预训练学习丰富的语言知识和语义表示,从而提高代码编写的效率和准确性,并促进了代码编写和开发过程的自动化和智能化。

LLMs在软件质量保证中的应用

在软件质量保证方面,LLMs被用于漏洞检测、测试生成、缺陷定位和验证等任务。它们结合序列和图嵌入进行有效的漏洞检测,并利用数据增强技术提高缺陷定位的性能。

LLMs在软件维护中的应用

在软件维护中,LLMs用于缺陷预测、程序修复、代码审查和调试。它们在自动程序修复方面显示出有效性,能够生成语法正确且上下文相关的代码,加快缺陷修复过程。

LLMs在软件管理中的应用

尽管LLMs在软件管理领域的应用还相对有限,但它们已展现出在工作量估计等方面的潜力,有助于提供有价值的见解和辅助决策过程。

LLM4SE实施路线图

论文团队为未来利用大型语言模型进行软件工程(LLM4SE)的发展提供了一个路线图,笔者总结一下是这样的。

01**自动化编码、开发和个性化开发人员辅助**:

- 自动化编码的追求包括自动生成代码片段、错误修复、系统优化以及创建智能、个性化的开发者辅助,这些辅助能够感知上下文并适应个人需求。

- LLM的生成能力可以被利用来帮助开发者更好地理解需求,并生成语法和语义上正确的代码,从而加速开发周期并提高软件质量。

- 利用LLM的自然语言处理能力来开发感知上下文的工具,允许与开发者以更直观和响应性的方式进行交互。

- 微调LLMs以适应特定的编码任务和开发者辅助可以进一步提高它们的准确性和效率,定制自动化流程以满足不同项目和个人的独特需求。

02**推进测试和分析**:

- 将LLMs纳入软件测试方法为增强测试用例生成、错误分类和缺陷预测开辟了途径,从而提高软件测试过程的精确度和效率。

- 例如,LLMs显示出针对项目特定需求微调以生成定制测试用例的潜力,这提高了早期发现微妙错误或安全漏洞的可能性。

- 将LLMs与传统的SE技术整合,包括静态和动态程序分析,是更严格代码分析的有吸引力的方向。

- 在形式分析方法中利用LLMs的潜力,包括形式验证,是值得研究的另一个领域。

03**将编程知识整合到LLMs中**:

- 一个关键的未来方向是将专业的代码表示方法和编程领域知识整合到LLM4SE中。

- 这种整合旨在提高LLMs生成不仅功能准确,而且安全并符合编程标准的代码的能力。

- 利用代码嵌入、语法树解析和语义分析的先进技术可以显著改进LLMs的生成能力。

- 将特定领域的规则和最佳实践嵌入到这些模型中,将使它们能够自动生成符合行业或语言特定指南的代码,以确保安全性和风格。

04**增强LLMs在现有SE任务中的性能**:

- 针对特定领域的挑战,许多SE领域,包括安全关键系统和特定行业,由于开源数据集的缺乏,阻碍了LLMs在这些专业领域的应用。

- 未来的研究可以专注于创建特定领域的数据集,并微调LLMs以适应这些领域的独特挑战和复杂性。

05**建立全面的LLM4SE评估框架**:

- 建立一个通用且适应性强的LLM4SE评估框架对于学术界和工业界都是迫切需要的。

- 在学术界,这样的框架使LLM性能、效果和局限性的评估变得有序,作为验证模型实际准备情况的基准。

- 在工业界,与现实世界开发团队的合作使用这个框架,可以提供关于LLMs实用性的经验性见解,包括它们对生产力、代码质量和团队协作的影响,同时也揭示了模型偏见、代码语义误解和上下文特定限制等挑战。

- 建立这个框架对于标准化评估和促进LLMs在学术研究和实际应用中的负责任采用至关重要。

06**软件工程为大型语言模型(SE4LLM)**:

- 随着LLMs的能力和复杂性的持续扩展,出现了为这些模型的开发、优化和维护提供专门化的SE实践的相互需求。

- SE4LLM包括设计可扩展和可维护的架构、创建高效的训练算法、为模型的鲁棒性和公平性开发严格的测试框架,以及实施伦理指南和合规机制的一系列挑战和机会。

- SE与LLMs的融合,不仅促进了更复杂和适应性模型的发展,还开辟了跨学科研究和创新的新途径,汇聚了AI和SE社区的专业知识。

- 这符合一个更广泛的愿景,其中SE实践成为LLMs生命周期的一个组成部分,确保它们的鲁棒性、效率和与社会价值的伦理对齐。

两个额外发现

论文团队研究了2020年至2024年论文编写时的395篇论文,如下图所示。

由此可以有两个启示:

1)投身LLM4SE领域还不算晚。从时间分布上看,2023年随着ChatGPT的横空出世开启LLM的“平民化”时代,LLM的论文数量也实现了井喷。之前虽然也是逐年递增,但是整体数量上只是2023年的一个零头。所以2023年可以理解成为LLM4SE的元年,估计2024年的论文只会更多。现在入局还不算晚。

2)想要学习LLM4SE, 就要去arXiv读论文。这个就不展开了,自己看饼图就一目了然了。

看到这里了,点个赞呗。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试那些事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • LLM在SE中的85个应用场景
    • LLMs在需求工程中的应用
      • LLMs在软件设计中的应用
        • LLMs在软件开发中的应用
          • LLMs在软件质量保证中的应用
            • LLMs在软件维护中的应用
              • LLMs在软件管理中的应用
              • LLM4SE实施路线图
                • 01**自动化编码、开发和个性化开发人员辅助**:
                  • 02**推进测试和分析**:
                    • 03**将编程知识整合到LLMs中**:
                      • 04**增强LLMs在现有SE任务中的性能**:
                        • 05**建立全面的LLM4SE评估框架**:
                          • 06**软件工程为大型语言模型(SE4LLM)**:
                          • 两个额外发现
                          • 看到这里了,点个赞呗。
                          相关产品与服务
                          脆弱性检测服务
                          脆弱性检测服务(Vulnerability detection Service,VDS)在理解客户实际需求的情况下,制定符合企业规模的漏洞扫描方案。通过漏洞扫描器对客户指定的计算机系统、网络组件、应用程序进行全面的漏洞检测服务,由腾讯云安全专家对扫描结果进行解读,为您提供专业的漏洞修复建议和指导服务,有效地降低企业资产安全风险。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档