暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
基于神经网络的自动源代码摘要技术综述-宋晓涛,孙海龙.pdf
200
23页
3次
2022-05-19
免费下载
基于神经网络的自动源代码摘要技术综述
*
宋晓
1
,孙海
2,3,4
1
(太原理工大学软件学院,山西太原030024)
2
(软件开发环境国家重点实验(北京航空航天大学),北京100191)
3
(北京航空航天大学软件学院,北京100191)
4
(大数据科学与脑机智能高精尖创新中(北京航空航天大学),北京100191)
通信作者:孙海龙,E-mail:sunhl@buaa.edu.cn
摘 要:源代码的摘要可以帮助软件开发人员快速地理解代码,帮助维护人员更快地完成维护任务.但是,手工编
写摘要代价高、效率低,因此人们试图利用计算机自动地为源代码生成摘要.近年来,基于神经网络的代码摘要技
术成为自动源代码摘要研究的主流技术和软件工程领域的研究热点.首先阐述了代码摘要的概念和自动代码摘要
的定义,回顾了自动代码摘要技术的发展历程,并介绍了生成式摘要的质量评估方法和评估指标;然后分析了神经
代码摘要算法的通用结构、工作流程和面临的主要挑战;给出了代表性算法的分类,并对每类算法的设计原理、
特点和限制条件进行了分析.最后,讨论并展望了未来神经代码摘要技术的发展趋势和研究方向.
关键词:智能软件工程;代码摘要;程序理解;神经网络;深度学习
中图法分类号:TP311
中文引用格式:宋晓涛,孙海龙.基于神经网络的自动源代码摘要技术综述.软件学报,2022,33(1):55–77.http://www.jos.
org.cn/1000-9825/6337.htm
英文引用格式:SongXT,SunHL.SurveyonNeuralNetwork-basedAutomaticSourceCodeSummarizationTechnologies.RuanJian
XueBao/JournalofSoftware,2022,33(1):55–77(inChinese).http://www.jos.org.cn/1000-9825/6337.htm
Survey on Neural Network-based Automatic Source Code Summarization Technologies
SONGXiao-Tao
1
,SUNHai-Long
2,3,4
1
(CollegeofSoftware,TaiyuanUniversityofTechnology,Taiyuan030024,China)
2
(StateKeyLaboratoryofSoftwareDevelopmentEnvironment(BeihangUniversity),Beijing100191,China)
3
(SchoolofSoftware,BeihangUniversity,Beijing100191,China)
4
(BeijingAdvancedInnovationCenterforBigDataandBrainComputing(BeihangUniversity),Beijing100191,China)
Abstract:Source code summaries can help software developers comprehend programs faster and better, and assist maintenance developers
in accomplishing their tasks efficiently. Since writing summaries by programmers is of high cost and low efficiency, researchers have tried
to summarize source code automatically. In recent years, the technologies of neural network-based automatic summarization of source code
have become the mainstream techniques of automatic source code summarization, and it is a hot research topic in the domain of intelligent
software engineering. Firstly, this paper describes the concept of source code summarization and the definition of automatic source code
summarization, presents its development history, and reviews the methods and metrics of the quality evaluation of the generated
summaries. Then, it analyzes the general framework and the main challenges of neural network-based automatic code summarization
algorithms. In addition, it focuses on the classification of representative algorithms, the design principle, characteristics, and restrictions of
each category of algorithms. Finally, it discusses and looks forward to the trends on techniques of neural network-based source code
summarizationinfuture.
Key words:intelligentsoftwareengineering;sourcecodesummarization;programcomprehension;neuralnetwork;deeplearning
*
基金项目:国家重点研发计(2019YFB1705902);国家自然科学基(61972013,61932007);教育部产学合作协同育人项目
(201901195001)
收稿时间:2020-09-02;修改时间:2020-12-27,2021-02-24;采用时间:2021-03-13;jos在线出版时间:2021-04-20
软件学报ISSN1000-9825,CODENRUXUEW E-mail:jos@iscas.ac.cn
Journal of Software,2022,33(1):55−77[doi:10.13328/j.cnki.jos.006337] http://www.jos.org.cn
©中国科学院软件研究所版权所有. Tel:+86-10-62562563
1 引 言
在软件工程领域软件人员面对数目众多的大规模软件和复杂系统需要快速、准确地读懂代码,高效地完成软
件变更和维护等任务.源代码摘(sourcecodesummary)可以帮助开发和维护人员更快地读懂源代码,更好地理
解代码背后的设计思想和代码的行为.因此,代码摘要可以大大地节省开发人员和维护人员的宝贵时间,提高工作
[1]
.鉴于此,源代码的摘要可以提高程序的可读性和可理解性,在整个软件生命周期中起着非常重要的作用.
但是,由于手工编写摘要既费时又费力,所以有许多研
[28]
试图利用计算机自动地为源代码生成摘要.为了便于
简化描述,以下把自动生成源代码摘要的技术简称为自动代码摘要”.2010年至今,自动代码摘要研究逐渐兴
,并成为软件工程和人工智能交叉领域的研究热点,研究人员对代码摘要技术和工具进行了许多探
[912]
,大量
研究成果发表在软件工程领域和人工智能领域的权威会议或期刊上,PLDIICSEFSEASESANER
ICPCMSRAAAIICLR等会议TSEJSSIST等期刊.
代码摘要研究是在自然语言处理技(如机器翻译和自动文本摘要技术)的基础上发展起来
[13]
.因为源代
码与自然语言文本有相似之处,它们都具有语言的自然
[14]
;同时又有本质的区别.源代码是结构化的文本,自然
语言是非结构化文本,所以人们在机器翻译和文本摘要技术的基础上进行了改进,设计了自动代码摘要技术.在软
件工程领域4
[13]
摘要应用:1)文档到文(texttotext)的摘要,如对软件缺陷报告、用户评论等的摘要;2)
代码到文(codetotext)的摘要,如利用源代码或软件变更等生成自然语言摘要;3)代码到代(codetocode)
摘要,是指从源代码中找出重要的代码语句,由这些语句构成代码摘要.4)混合软件制(mixedartifact)
[13]
.
本文主要讨论的是第二类摘要,即源代码到文档的摘要技术.
自动代码摘要研究开始2010,在最初的研究中主要采用信息检索技
[15]
,:vectorspacemodel(VSM)
[16]
latentsemanticindexing(LSI)
[17]
latentDirichletallocation(LDA)
[18]
.2016年后,由于机器学习领域深度神经网
络技术的快速发展,基于深度学习的代码摘要技术逐渐成为自动代码摘要研究中的主流技术.例如,2019年发表
的代码摘要研究文献12,11篇采用的是深度神经网络技术;2020年发表21篇使用深度神经网络进
行代码摘要研究的文献.本文主要对使用深度神经网络方法进行自动代码摘要研究的工作进行总结和分析.
目前已有学者对自动代码摘要的研究成果进行了总
[1,13,19,20]
.Nazar
[1]
对软件制品自动摘要工作进行了
全面的分析,这里的软件制品包括缺陷报告、源代码、邮件列表和开发者讨论信息等,他们主要对利用软件制品
生成摘要的工作进行了综述.但自动源代码摘要研究只是他们总结工作的一部分,没有被充分、全面地分析.Zhu
[19]
对自动源代码摘要研究进行了综述,他们从代码摘要的技术、文本生成方式、摘要的类型和摘要评4
个方面对已有文献进行了回顾,但是,他们对源代码摘要的核心问题阐述不完整,在展望未来发展方向时也没有给
出该领域的发展全景.Moreno
[13]
对自动软件摘要工作进行了总结,他们主要从软件自动摘要方法和摘要评估
方法两个方面简要概括了软件摘要技术的类型、影响因素以及摘要评估的策略,但对每类问题和相关文献都没有
深入的分析.Song
[20]
总结2010–2018年期间代码注释的研究工作,他们从代码注释算法的分类、原理和技
术细节方面进行了归纳和总结,同时概括总结了注释质量评价的研究.从广义上,尽管代码摘要可看作一种特定的
程序注释,但文[20]没有对当前主流的基于神经网络的代码摘要研究进行全面、详细的总结和分析,而且从
2019年至今,采用神经网络方法进行代码摘要研究又有了很大进展,并呈现出新的技术特征.总体上,目前还缺乏
专门针对神经代码摘要研究及其新的发展趋势的系统全面的综述.鉴于此,本文试图从处理过程、算法的分类、
现有工作成果和摘要评估技术四个方面20161–202012月间基于深度神经网络的源代码摘要研究进
行系统全面的分析和总结,以便达到下面目标:(1)全面总结基于神经网络的代码摘要技术,帮助国内专业人员全
面、系统地了解神经代码摘要研究中的基本问题,快速全面地了解自动摘要的方法、技术和最新动向.(2)探讨代
码摘要技术未来的发展方向和现有技术的限制,为学术界开展相关研究提供参考.
本文2节对基于神经网络的自动源代码摘要研究进行概述.先介绍代码摘要和自动代码摘要的定义,然后
对自动代码摘要研究的起源、发展和现状进行描述,并对生成式摘要的质量评估方法和评估指标进行总结.3
节对基于神经网络的代码摘要架构和工作流程进行描述,引出该领域的主要挑战.4节介绍神经代码摘要算法
56 软件学报2022331
of 23
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜