• 科研快讯

复旦大学计算机科学技术学院CodeWisdom团队在软件工程领域顶级会议ESEC/FSE 2022上发表多项研究成果

2022.11.24

在刚刚结束的2022年国际软件工程领域顶级会议ESEC/FSE 2022上,由我院彭鑫教授、赵文耘教授、陈碧欢副教授、吴毅坚副教授等带领的CodeWisdom团队(复旦大学软件工程实验室)发表了多项研究成果,其中包括4篇主会论文(Research Papers)。

关于深度学习系统(DL系统)性能问题的研究论文《Understanding Performance Problems in Deep Learning Systems》系统分析了DL系统中的224个性能缺陷,总结了10类症状(如执行时间过慢、内存泄漏、GPU利用率异常等)和15类根因(如API误用、模型参数不合理、DL库版本不匹配、数据处理低效、硬件不匹配等)。在此基础上,构建了包含58个性能缺陷的数据集并评估了现有的性能缺陷分析方法,发现现有方法只能检测最多12个性能缺陷。最后,提出并实现了一个基于规则的性能缺陷检测工具,在130个开源DL系统中检测到了488个新的性能缺陷,其中105个性能缺陷已经被开发人员确认。

关于开源软件漏洞问题的研究论文《Tracking Patches for Open Source Software Vulnerabilities》针对开源软件漏洞补丁开展了实证研究,以了解当前漏洞数据库中开源软件漏洞补丁的质量和特征。研究发现当前漏洞数据库中开源软件漏洞补丁的质量并不理想。补丁缺失情况较为普遍,当前漏洞数据库中漏洞的补丁覆盖率仅为 41.0% 左右。对于有多个补丁的漏洞,当前漏洞数据库经常会遗漏一些补丁。其次,针对当前漏洞数据库中补丁信息缺失和不准确的问题,提出了一个基于多源知识的方法Tracer来自动追踪CVE的补丁信息。Tracer可以极大地补充或增强当前的漏洞数据库,也有助于用户更准确、更快速地识别到补丁。

关于微服务系统智能化运维的研究论文《TraceCRL: Contrastive Representation Learning for Microservice Trace Analysis》提出了一种基于图神经网络和对比学习的微服务系统调用链表示学习方法。机器学习和深度学习技术被广泛应用于微服务系统智能化运维中的调用链分析中,但使用这些方法都需要将调用链表示为向量。然而,现有的基于规则的表示方法往往难以表示调用链的复杂结构,且实际系统中往往缺乏高质量的标注数据,难以使用有监督方法训练调用链表示模型。针对这些问题,论文提出了一种基于对比学习的调用链表示方法,该方法利用自监督和数据增强方法训练调用链表示调用链表示模型,可以将调用链表示为低维向量,并应用于多种下游任务。基于开源基准系统的实验表明,该方法可以有效表示调用链信息,从而提升下游任务准确性。

关于软件开发问答的研究论文《How to Formulate Specific How-To Questions in Software Development?》设计了一个将自顶向下与自底向上分析相结合的编程任务知识图谱构造方法。该方法通过一种迭代化的方式从软件开发问答网站Stack Overflow的问题标题中抽取和挖掘软件开发任务及其关系,并构建软件开发任务知识图谱。在此基础上实现了一个基于软件开发任务知识图谱的交互式软件开发问题构造工具。相关技术为面向任务的交互式软件开发问答、资源和代码推荐打下了基础。

此外,CodeWisdom团队还有一篇论文《Trace Analysis Based Microservice Architecture Measurement》在Industry Track上发表,一个工作《RegMiner: Mining Replicable Regression Dataset from Code Repositories》在Tool Demo Track上发表。其中,《Trace Analysis Based Microservice Architecture Measurement》提出了一种基于分布式链路追踪的微服务架构评估方法,定义了14个架构评估指标来衡量微服务系统的服务独立性和调用链复杂度,相关成果在阿里云进行了初步应用。《RegMiner: Mining Replicable Regression Dataset from Code Repositories》介绍了一个从代码演化历史信息中自动挖掘可复现回归缺陷的工具RegMiner,该工具能够从代码版本库中自动挖掘回归缺陷,识别出缺陷引入版本和缺陷修复的版本,以及触发该缺陷的测试用例。RegMiner在8周时间内构建了一个包含1035个可复现的回归缺陷数据集,这是目前已知最大的可复现回归缺陷集。