1974年1月创刊(月刊)
主管/主办:重庆西南信息有限公司
ISSN 1002-137X
CN 50-1075/TP
CODEN JKIEBK
编辑中心
    软件与数据库技术 栏目所有文章列表
    (按年度、期号倒序)
        一年内发表的文章 |  两年内 |  三年内 |  全部
    Please wait a minute...
    1. 融合文本与分类信息的重复缺陷报告检测方法
    范道远, 孙吉红, 王炜, 涂吉屏, 何欣
    计算机科学    2019, 46 (12): 192-200.   https://doi.org/10.11896/jsjkx.181102232
    摘要 (157)   PDF (1743KB) (388)  
    软件缺陷是软件出现错误、故障的根源。软件缺陷是需求分析不合理、编程语言不严谨、开发人员缺少经验等因素导致的。软件缺陷不可避免,提交缺陷报告是发现缺陷并改进缺陷的重要途径。缺陷报告是描述缺陷的载体,对缺陷报告的修复是完善软件的必要手段。维护人员和用户因同一缺陷重复提交报告,导致缺陷报告库中存在大量冗余的报告,手动分诊已无法适应越来越复杂的软件系统。重复缺陷报告检测能过滤缺陷报告库中冗余的重复报告,并将人力与时间投入到新的缺陷报告上。当前研究方法的预测准确率始终不高,其难点在于寻找一个合适且全面的方法来衡量缺陷报告之间的相似性。借鉴集成方法的思想,提出了一种基于文本信息、分类信息相融合的重复缺陷报告检测方法——BSO(combination of BM25F、LSI and One-Hot)。在数据预处理的基础上,文中将重复缺陷报告分割为文本信息域与分类信息域。在文本信息域上使用 BM25F与LSI算法,得到两个方法的相似性打分,运用相似性融合方法将两个方法的相似性打分进行整合;在分类信息域上使用One-Hot算法得到相似性打分。运用相似性融合方法,融合文本信息域与分类信息域的相似性打分,为每个缺陷报告对应一个重复缺陷报告推荐列表,并计算重复缺陷报告检测的准确率。 利用Python语言,在公开的数据集OpenOffice上与基线方法以及较新水平方法REP、DBTM进行对比。实验结果表明,与DBTM相比,本文方法的准确率平均提高了4.7%;与REP方法相比,本文方法的准确率平均提高了6.3%;与基线方法相比,本文方法的准确率提升较高。实验结果充分证明了BSO方法的有效性。
    参考文献 | 相关文章 | 多维度评价
    2. 一种基于重叠社区发现的软件特征提取方法
    刘春, 张国良
    计算机科学    2019, 46 (12): 201-207.   https://doi.org/10.11896/jsjkx.181001856
    摘要 (116)   PDF (1332KB) (312)  
    近年来从软件产品的文本描述中提取软件特征获得了大量关注。考虑到产品文本描述中的句子能够更加清晰地表达一个特征的含义,并且文本描述中的每个句子可能会涉及多个软件特征,文中提出了一种通过发现软件产品文本描述中重叠的句子聚簇来提取软件特征的方法。基于复杂网络中的LMF重叠社区发现算法,所提方法通过自定义文本描述中句子之间的相识性度量,构建句子之间的相似性网络,然后发现句子相似性网络中的句子社区,实现对句子的聚类。每个句子社区蕴含一个软件特征,包含了所有潜在描述该软件特征的文本句子。所发现的句子社区可能存在重叠的句子,这些重叠句子同时涉及多个句子社区所蕴含的软件特征。进一步,为了帮助人们更好地理解句子社区所蕴含的特征,所提方法设计了相应的算法来从所有句子社区中依次选择熵最小的社区,并从所选社区中挑选最有代表性的、且其他社区还未选择的句子来作为一个社区所蕴含特征的描述符。文中爬取Softpedia.com网站的软件产品文本描述信息作为实验数据。实验结果表明,所提方法与现有代表性方法相比在准确性与时间方面具有更好的表现。
    参考文献 | 相关文章 | 多维度评价
    3. 一种动态约简的多目标测试用例优先级排序方法
    张娜, 徐海霞, 包晓安, 徐璐, 吴彪
    计算机科学    2019, 46 (12): 208-212.   https://doi.org/10.11896/jsjkx.181102106
    摘要 (132)   PDF (1327KB) (333)  
    针对蚁群算法在求解MOTCP问题时存在收敛速度慢、易陷入局部最优等缺陷,提出了一种动态约简的在线指导蚁群信息素更新的多目标测试用例优先级排序方法。该方法引入一种动态约简的思想,首先根据各测试用例覆盖需求的情况,对覆盖有相同需求的初始测试用例集进行初次约简。其次,根据测试用例在执行过程中能否检测出错误以及检测出的错误的严重程度来设计一种测试用例失效度的判别方法,在蚁群每一次迭代后均对未检测出错误的测试用例进行二次约简,以减少下一轮迭代时蚁群需要经过的测试用例数,通过两次约简大幅度缩短排序时间。同时,在蚁群的每次迭代过程中,考虑测试用例的重要度、失效度和实际执行时间3个因子对下一轮信息素的影响,设计一种同时在3个影响因子下在线指导更新蚁群信息素的方法,使蚁群能够更快更准确地寻找到下一个测试用例。最后,将该方法、传统蚁群排序方法和多目标优化排序方法分别应用于多个开源软件程序进行实验比较。仿真实验结果表明,所提动态约简的在线更新信息素的优先级排序方法在缺陷检错能力以及有效执行时间等性能指标方面均有较大优势,能更早发现等级较高的错误。
    参考文献 | 相关文章 | 多维度评价
    4. 基于操作历史图的分布式Key-Value数据库一致性检测算法
    廖彬, 张陶, 李敏, 于炯, 国冰磊, 刘炎
    计算机科学    2019, 46 (12): 213-219.   https://doi.org/10.11896/jsjkx.181102097
    摘要 (113)   PDF (1753KB) (222)  
    分布式数据库系统的副本机制在提高系统可靠性及性能的同时,导致了多副本数据管理的一致性问题;数据一致性的实现需要一致性协议模型来进行预防,也需要一致性检测算法对非一致数据进行检测。首先,对读写操作记录之间的时序关系、安全一致性及并行一致性原则等概念进行定义;其次,根据操作记录集合中读写操作之间的并行与时序关系,提取出操作记录集合向操作记录图转化的规则,并在此基础上设计了操作记录向历史记录图的转化算法;然后,以历史记录图为输入,设计了违反一致性查找算法,查找并返回图中所有违反安全与并行一致性读操作的集合;最后,基于Cassandra进行实验并将读写一致性设置为ONE,通过YCSB产生并行读写压力测试,与同类算法的对比实验验证了所提算法在功能与效率两方面的优越性。
    参考文献 | 相关文章 | 多维度评价
    5. 基于约束求解的代码查询技术在StackOverflow上的实证研究
    陈正钊, 姜人和, 潘敏学, 张天, 李宣东
    计算机科学    2019, 46 (11): 137-144.   https://doi.org/10.11896/jsjkx.191100501C
    摘要 (164)   PDF (1464KB) (290)  
    代码查询在代码复用的过程中起着十分重要的作用,而面向程序员的专业问答网站StackOverflow上围绕代码的问答则是代码复用的一个典型场景。在这个现实场景中,采取的是人工回答的方式,而人工回答往往存在实时性较差、提问描述不准确、回答可用性不高等缺点,但如果采取代码查询的方式搜寻可用代码来实现自动化并替代人工回答,则可以省去大量的人力和时间成本。目前已经出现了许多代码查询技术,但大都缺少在真实案例上的应用经验,文中以Satsy的思路为参考,实现了针对Java语言的基于约束求解的代码查询技术,并设计了实证研究,以StackOverflow为研究对象,主要研究如何将基于约束求解的代码查询技术应用在该网站上围绕代码的问答中。首先对网站上的问题进行了分析,针对Java语言提取了浏览量高的35个问题作为查询问题;然后在GitHub上抓取了约3万行代码,将它们转换成约束的形式并构建了一个较大规模的代码库以支持代码查询;最后通过对这35个问题的查询结果进行分析,评估了该技术在StackOverflow上的实际应用效果。结果表明,该技术在所研究的具体问题和代码规模上具有较好的实际应用效果,在相当高的程度上能替代人工回答。
    参考文献 | 相关文章 | 多维度评价
    6. 基于日志可视化分析的微服务系统调试方法
    李文海, 彭鑫, 丁丹, 向麒麟, 郭晓峰, 周翔, 赵文耘
    计算机科学    2019, 46 (11): 145-155.   https://doi.org/10.11896/jsjkx.181102210
    摘要 (303)   PDF (2474KB) (709)  
    云计算时代,越来越多的企业开始采用微服务架构进行软件开发或者传统巨石应用改造。然而,微服务系统具有较高的复杂性和动态性,当系统出现故障时,目前没有方法或者工具能够有效支持对故障根源的定位。为此,文中首次提出通过调用链信息关联单次业务请求在所有服务上产生的业务日志,并在此基础上研究基于日志可视化分析的微服务系统调试方法。首先定义了微服务的日志模型,规范化微服务日志可视化分析所需要的数据信息;然后针对4种典型的微服务故障(有异常抛出的普通故障、无异常抛出的逻辑故障、服务异步调用序列未控制导致的故障以及服务多实例版本或状态不一致导致的故障)总结出5种可视化调试策略,用于支持对故障根源的定位,5种策略包括:单条调用链日志查看、不同调用链对比、服务异步调用分析、服务多实例分析以及调用链分段。为了实现服务异步调用分析和服务多实例分析,文中设计了两个算法,同时,设计并实现了一个原型工具LogVisualization。LogVisua-lization可以收集微服务系统运行时产生的日志信息、调用链数据以及集群的节点和服务实例信息,能够以较小的代码侵入性,实现通过调用链信息关联所有业务日志,支持用户使用5种策略进行可视化调试。最后,将该原型工具应用于实际的微服务系统,通过与现有工具(Zipkin+ELK)的实验对比,验证了该原型工具在4种微服务故障根源定位上的有用性和高效性。
    参考文献 | 相关文章 | 多维度评价
    7. 基于卷积神经网络的代价敏感软件缺陷预测模型
    邱少健, 蔡子仪, 陆璐
    计算机科学    2019, 46 (11): 156-160.   https://doi.org/10.11896/jsjkx.191100502C
    摘要 (209)   PDF (1522KB) (433)  
    基于机器学习的软件缺陷预测方法受到软件工程领域学者们的普遍关注,通过缺陷预测模型可一定程度地分析软件中的缺陷分布,以此帮助软件质量保障团队发现软件中潜在的错误并合理分配测试资源。然而,现有多数的缺陷预测方法是基于代码行数、模块依赖程度、栈引用深度等人工提取的软件特征进行缺陷预测的。此类方法未考虑到软件源码中潜在的语义特征,可能导致预测效果不理想。为了解决以上问题,文中利用卷积神经网络挖掘源码中隐含的语义特征,并将其用于软件缺陷预测的任务中。在源码语义特征的有效挖掘方面,采用三层卷积神经网络提取数据抽象特征。在数据不平衡处理方面,采用代价敏感的方法,即分别给予正例与反例不同的权重,平衡正反例对模型训练的影响。在实验数据集方面,选取了开源缺陷标注数据集PROMISE中8个软件中的多个版本,合计19个项目。在模型性能比较方面,将提出的基于卷积神经网络的代价敏感软件缺陷预测模型(Cost-Sensitive Three-Layer Convolutional Neural Network,CS-TCNN)分别与逻辑回归、深度置信网络等模型进行比较,评估指标为在缺陷预测研究领域中普遍使用的AUC和MCC。实验结果充分说明了CS-TCNN能更有效地提取程序代码中的语义特征,进而提高软件缺陷预测模型的预测效果。
    参考文献 | 相关文章 | 多维度评价
    8. 基于校正因子的随机TBFL方法
    王蓁蓁, 刘嘉
    计算机科学    2019, 46 (11): 161-167.   https://doi.org/10.11896/jsjkx.191100503C
    摘要 (104)   PDF (1406KB) (201)  
    运用测试集对程序错误语句定位的算法被统称为TBFL(Testing Based Fault Localization)方法。目前通用算法一般都没有利用测试员、程序员关于测试用例和程序的先验知识,致使这些“资源”被浪费。随机TBFL方法是一类新型TBFL方法,其精神就是在随机理论的框架下,把这些先验知识(抽象为先验分布)和实际测试活动结合起来,从而更好地定位程序错误语句。事实上,随机TBFL算法可以看成这类算法的一般“模式”,人们可以从这个一般框架里开发出不同的算法。文中方法就是将随机TBFL算法加以简化得到的,主要是从各个测试用例的具体测试活动着手,对程序变量X的先验概率加以校正,如果测试集里有n个用例,便可以得到程序变量Xn个校正值,将n个校正值效应迭加,并且标准化,即得到程序变量X的后验概率,用它作为寻找错误语句的向导。由于提出的简化算法是借助一个校正因子矩阵而得到的,因此所提算法被称为基于校正因子的随机TBFL方法。文中还提出了3个有关不同TBFL算法的比较标准,并依据它们在一些具体实例上的表现证实所提算法的有效性。
    参考文献 | 相关文章 | 多维度评价
    9. 改进的神经语言模型及其在代码提示中的应用
    张献, 贲可荣
    计算机科学    2019, 46 (11): 168-175.   https://doi.org/10.11896/jsjkx.191100504C
    摘要 (120)   PDF (1928KB) (220)  
    语言模型旨在刻画文本段的发生概率,作为自然语言处理领域中的一类重要模型,近年来其被广泛应用于不同软件分析任务,例如代码提示。为提高模型对代码特征的学习能力,文中提出了一种改进的循环神经网络语言模型——CodeNLM。该模型通过分析词向量形式表示的源代码序列,能够捕获代码规律,实现对序列联合概率分布的估计。考虑到现有模型仅学习代码数据,信息的利用不充分,提出了附加信息引导策略,通过非代码信息的辅助来提高代码规律的刻画能力。针对语言建模任务的特点,提出了节点逐层递增策略,通过优化网络结构来改善信息传递的有效性。实验中,针对9个Java项目共203万行代码,CodeNLM得到的困惑度指标明显优于n-gram类模型和传统神经语言模型,在代码提示应用中得到的平均准确度(MRR指标)较对比方法提高了3.4%~24.4%。实验结果表明,CodeNLM能有效地实现程序语言建模和代码提示任务,并具有较强的长距离信息学习能力。
    参考文献 | 相关文章 | 多维度评价
    10. 用于软件缺陷预测的集成模型
    胡梦园, 黄鸿云, 丁佐华
    计算机科学    2019, 46 (11): 176-180.   https://doi.org/10.11896/jsjkx.180901685
    摘要 (148)   PDF (1263KB) (387)  
    软件缺陷预测的目的是有效地识别出有缺陷的模块。对于类别平衡数据,传统的分类器具有较好的预测效果,但当数据类别比例分布不均衡时,传统的分类器往往偏向于多数类,易使得少数类模块被误分。但是,真实的软件缺陷预测中的数据往往是类别不平衡的。为了处理软件缺陷中的这种类别不平衡问题,文中提出了基于改进的类权自适应、软投票与阈值移动的集成模型,该模型在不改变原始数据集的情况下,从训练阶段和决策阶段同时考虑处理类别不平衡的问题。首先,在类权值学习阶段,通过类权自适应学习得到不同类的最优权值;然后,在训练阶段,使用前一步得到的最优权值训练3个基分类器,并通过软集成的方法组合3个基分类器;最后,在决策阶段,根据阈值移动模型来做出决策,以得到最终预测类别。为了证明所提方法的有效性,实验采用NASA软件缺陷标准数据集和Eclipse软件缺陷标准数据集进行预测,并在相同的数据集上将其与近年提出的几种软件缺陷预测方法在召回率值Pd、假正例率值PfF1度量值F-measure方面进行了对比。实验结果表明,所提方法的召回率Pd平均提高了0.09,F1度量值F-measure上平均提高了0.06。因此,文中提出的处理软件缺陷预测中类别不平衡问题的方法的整体性能优于其他软件缺陷预测方法,具有较好的预测效果。
    参考文献 | 相关文章 | 多维度评价
    首页 | 前页| 后页 | 尾页 第1页 共43页 共424条记录