首页期刊导航|计算机科学
期刊信息/Journal information
计算机科学
计算机科学

朱完元

月刊

1002-137X

jsjkx12@163.com

023-63500828

401121

重庆市渝北区洪湖西路18号

计算机科学/Journal Computer ScienceCSCD北大核心CSTPCD
查看更多>>本刊的读者对象是:大专院校师生,从事计算机科学与技术领域的科研、生产人员。办刊宗旨是:坚持“双百”方针,活跃计算机科学与技术领域的学术气氛,重点报导国内外计算机科学与技术的发展动态,为我国的计算机科学与技术立于世界之林、达到国际先进水平奋斗而矢志不渝。
正式出版
收录年代

    R语言程序包依赖关系与更新情况的实证研究

    程弘正杨文华
    1-11页
    查看更多>>摘要:作为一款统计分析和统计制图的优秀工具,R在统计分析和人工智能领域得到了广泛应用,并且拥有丰富的开源生态系统,相关R语言程序包(R包)的数量也在持续增长.R包开发模式的特征,即新开发R包往往通过引入已有的R包来实现功能,导致R包之间的依赖关系非常复杂,甚至出现依赖冲突.而引起此问题的原因除了依赖关系外,还有R包的更新.为了了解现有R包的发展现状,需要对R包的依赖和更新情况进行深入实证研究.但已有关于R的实证研究关注的主要是整个R生态系统,没有专门针对R包的依赖和更新的具体分析.为了弥补这一空缺,基于CRAN与GitHub上的数据对常用R包的依赖关系、包的更新情况、存在的依赖冲突隐患以及R包的依赖更新情况4方面展开了详细分析.发现R包之间的依赖关系复杂、每个包依赖的包的数量普遍较多但依赖集中于一部分R包,虽然常用R包的更新频率较快,但其中依然存在不少依赖间的冲突(不一致);同时,还对这些R包的依赖冲突进行了检测和分类.实证研究结果能够让R开发者和使用者更加了解R包的发展现状,同时提供了一些可以帮助R包的开发者在开发过程中避免隐患的建议,总结了研究者在R包依赖和更新相关问题上可以进一步探究的方向.

    R包实证研究依赖更新依赖冲突

    基于词汇的源代码克隆检测技术综述

    刘春玲戚旭衍唐永鹤孙雪凯...
    12-22页
    查看更多>>摘要:代码克隆指在软件开发过程中对源代码复用、修改、重构产生的文本相似或结构相似的代码.代码克隆对提升软件开发效率、节约开发成本有积极作用,但也会引起Bug传播,并对软件的稳定性、可维护性产生负面影响.代码克隆检测在剽窃检测、漏洞检测、版权侵权等领域具有重要的研究意义和应用价值.基于词汇的克隆检测技术能快速检测1-3型克隆,能扩展到其他编程语言,已被广泛应用于大规模克隆检测任务中.文中对近5年基于词汇的克隆检测技术的研究现状进行了梳理,根据相似性算法中的基本计算粒度将其分为4类,并对10余个技术特征进行了分析和总结,讨论其局限性及面临的挑战,最后结合新技术的发展提出了基于词汇的克隆检测技术未来可能的研究方向.

    软件安全源代码克隆检测代码表征深度学习

    一种基于词法特征和数据挖掘的无意义变量名检测方法

    姜艳杰东春浩刘辉
    23-33页
    查看更多>>摘要:标识符是代码的重要组成部分,也是人们理解代码语义的关键元素之一.变量名是最常见的标识符之一,其质量对于代码的可读性和可理解性有着重要的意义.然而,因为各种原因程序员经常使用一些毫无意义的变量名,如"a"和"var"等.这些无意义的变量名严重降低了代码的可理解性,需要进行检测并重构(重命名).为此,提出了一种基于词法特征和数据挖掘的自动化方法,以检测代码中无意义的变量名.首先,对开源代码中的无意义变量名进行了实证分析,发现无意义变量名通常比较短且不包含任何有意义的单词,因此可以利用词法特征筛选出名称较短且不包含有意义单词的可疑变量名.如果可疑变量名包含缩写词,则使用缩写词扩展算法进行扩展,以获得完整的变量名.然后,基于数据挖掘算法判断可疑变量名是否为约定俗成的常用变量名.有些常用的变量名,如"i"和"e",虽然字面上没有明确的语义,但是通过约定俗成的表示规范,程序员可以理解该变量的语义,因此不算是无意义的变量名,也不需要进行重构.如果可疑变量名称不是约定俗成的常用变量名,则断定该变量名为无意义的变量名,并提醒程序员进行重命名.在开源数据集上进行实验,结果表明,该方法具有较高的准确率,其平均查准率为85%,平均查全率为91.5%.

    软件重构代码质量数据挖掘无意义变量名词法特征

    重新审视面向CNN模型的测试样例选取:考虑模型校准

    赵通沙朝锋
    34-43页
    查看更多>>摘要:深度神经网络(DNN)已被广泛应用于各种任务,而在部署前对DNN进行充分测试尤为重要,因此需要构建能够对DNN进行充分测试的测试集.由于标注成本受限,通常通过测试样例选取的方式得到测试子集.然而,人们使用基于预测不确定性的方法(该方法在发现误分类样例和提升重训练表现方面表现出卓越的能力)进行测试样例选取时,忽略了对测试样例的预测不确定性估计是否准确的问题.为了填补上述研究的空白,通过实验定性和定量地揭示了模型校准程度和测试样例选取任务中使用的不确定性指标之间的相关性.校准模型会使模型有更准确的预测不确定性估计,因此研究了不同校准程度的模型用不确定指标选取得到的测试子集质量是否不同.在3个公开数据集和4个卷积神经网络(CNN)架构模型上进行了充分的实验和分析,结果表明在CNN架构模型上:1)不确定指标和模型校准存在一定程度的相关性;2)校准程度好的模型所选择的测试子集质量优于校准程度差的模型选择的测试子集质量.在发现模型误分类样例的能力上,70.57%经过校准训练后的模型对应的实验结果优于未校准模型对应的实验结果.因此在测试样例选取任务中考虑模型校准十分重要,且可以使用模型校准来提升测试样例选取的表现.

    卷积神经网络测试预测不确定性模型校准测试样例选取

    一种结合代码片段和混合主题模型的软件数据聚类方法

    魏林林沈国华黄志球蔡梦男...
    44-51页
    查看更多>>摘要:使用主题模型进行文档聚类是众多文本挖掘任务中一种常见的做法.许多研究针对软件问答网站的数据,利用主题模型进行聚类来分析不同领域在社区的发展情况.然而,这些软件相关数据往往包含代码片段且文本长度分布不均,使用传统单一的主题模型对文本数据建模,易得到不稳定的聚类结果.文中提出了一种结合代码片段和混合主题模型的聚类方法,并使用Stack Overflow作为数据源,构造了在该平台上被提问数量排名前60的Python第三方库数据集,经过建模,该数据集最终划分为以下6个不同的领域:网络安全、数据分析、人工智能、文本处理、软件开发和系统终端.实验结果表明,在自动评估和人工评估的指标上,使用代码片段结合文本进行主题建模,在聚类结果划分的质量上表现良好,而联合多个模型进行实验,一定程度上提高了聚类结果的稳定性和准确性.

    代码片段主题模型StackOverflowPython聚类

    面向TPU粗粒度指令的自动张量化方法

    刘磊周志德刘兴祥车皓阳...
    52-60页
    查看更多>>摘要:张量化是通过调用硬件特定指令对张量运算进行加速的过程.TPU支持多种粗粒度指令,可表示神经网络级别的算子,且没有明确的运算规模限制.现有张量化方法对于粗粒度指令需要手写大量的IR匹配片段,且难以实现灵活的双缓存(ping-pong buffer)形式的指令并行优化,不利于扩展至TPU场景.为此,提出了一种面向TPU粗粒度指令的 自动张量化方法——Tir2TPU.首先,基于TensorIR抽象语法树的分析对运算程序进行指令替换.其次,设计了一种模拟硬件行为的并行模型以实现指令并行优化.最后,构建了基于TPU硬件特征的程序调度空间以实现快速自动调优.实验对矩阵乘法等5种机器学习模型中常用的算子进行了性能评估.实验结果表明,Tir2TPU自动优化生成的算子与TPU自有编译器相比可取得最高3.1倍、平均1.78倍的运算加速,并且可取得平均90%的手工优化性能.

    机器学习编译器张量加速器张量化指令并行算子优化

    基于提示学习的轻量化代码生成方法

    徐一然周宇
    61-67页
    查看更多>>摘要:代码自动生成是提高软件开发效率的有效途径之一,已有的研究一般将代码生成作为一项序列到序列的任务,并且大规模预训练语言模型的微调过程往往伴随着高昂的算力开销.文中提出了 一种基于提示学习的轻量化代码生成方法(Prompt Learning based Parameter-Efficient Code Generation,PPECG),该方法通过查询代码语料库中与当前需求最相似的结果作为提示,指导预训练语言模型进行代码生成,并且在该过程中固定模型的绝大多数参数以实现减少算力开销的 目的.为了验证PPECG的有效性,文中选取了两个代码生成数据集,分别是CONCODE和Solidity4CG,通过计算生成结果的BLEU,Code-BLEU以及Exact Match值来验证PPECG的有效性,实验结果表明,PPECG有效地减少了微调时的显存开销,且在上述指标上基本接近甚至优于目前的SOTA方法,能够较好地完成代码生成的任务.

    代码生成提示学习预训练语言模型信息检索智能合约

    基于机器学习识别偶然正确测试用例

    田帅华李征吴永豪刘勇...
    68-77页
    查看更多>>摘要:基于频谱的故障定位(Spectrum-Based Fault Localization,SBFL)技术已被广泛研究,可以帮助开发人员快速找到程序错误位置,以降低软件测试成本.然而,测试套件中存在一种特殊的测试用例,其执行了错误的语句但能输出符合预期的结果,这种测试用例被称为偶然正确(Coincidental Correct,CC)测试用例.CC测试用例会对SBFL技术的性能产生负面影响.为了减轻CC产生的负面影响,提升SBFL技术性能,文中提出了 一种基于机器学习的CC测试用例识别方法(CC test cases Identifi-cation via Machine Learning,CCIML).CCIML结合怀疑度公式特征和程序静态特征来识别CC测试用例,从而提高SBFL技术的故障定位精度.为了评估CCIML方法的性能,文中基于Defects4J数据集进行对比实验.实验结果表明,CCIML方法识别CC测试用例的平均召回率、准确率和F1分数分别为63.89%,70.16%和50.64%,该结果优于对比方法.除此之外,采用清洗和重标策略处理CCIML方法识别出的CC测试用例后,最终取得的故障定位效果也优于对比方法.其中,在清洗策略和重标策略下,错误语句怀疑度值排在第一位的数量分别为328和312,相比模糊加权K近邻(Fuzzy Weighted K-Nearest Neigh-bor,FW-KNN)方法,定位到的故障数量分别增长了 124.66%,235.48%.

    软件测试故障定位机器学习偶然正确测试用例特征提取

    基于序列的程序语义规则挖掘与违规检测方法

    李孜周宇
    78-84页
    查看更多>>摘要:在软件开发中,违反语义规则的源码可以正常地编译或运行,但却存在性能或功能上的缺陷.因此,如何准确地检测此类缺陷成为了一项挑战.已有的研究通常采用基于项集的规则挖掘与检测方法,但由于未能良好地结合源码的顺序信息与控制流信息,此类方法在检测能力以及准确率上都存在较大的提升空间.针对该问题,提出了一种基于序列的程序语义规则提取与违规检测方法SPUME.该方法将程序源码转化为中间表示序列,使用序列规则挖掘算法从中提取语义规则,并基于语义规则对源码中的缺陷进行检测.为验证SPUME的有效性,文中将其与3种基线方法进行了对比,包括PR-Miner,Tikanga以及Bugram.实验结果表明,相较于基于无序项集进行规则挖掘的PR-Miner,以及结合了图模型的Tikanga,SPUME在检测效果、检测速度以及准确率上都有显著提升.相比基于Ngram语言模型的Bugram方法,SPUME在准确率与其相当的情况下,高效地检测出了更多程序缺陷.

    语义规则挖掘重叠聚类缺陷检测

    YEF2024多方向思维碰撞、引发深度思考

    CCF微信公众号
    84页