1974年1月创刊(月刊)
主管/主办:重庆西南信息有限公司
ISSN 1002-137X
CN 50-1075/TP
CODEN JKIEBK
编辑中心
    计算机软件* 栏目所有文章列表
    (按年度、期号倒序)
        一年内发表的文章 |  两年内 |  三年内 |  全部
    Please wait a minute...
    选择: 显示/隐藏图片
    1. 二进制代码相似性检测技术综述
    方磊, 武泽慧, 魏强
    计算机科学    2021, 48 (5): 1-8.   DOI: 10.11896/jsjkx.200400085
    摘要781)      PDF(pc) (1459KB)(3549)    收藏
    代码相似性检测常用于代码预测、知识产权保护和漏洞搜索等领域,可分为源代码相似性检测和二进制代码相似性检测。软件的源代码通常难以获得,因此针对二进制代码的相似性检测技术能够适用的场景更加广泛,学术界也先后提出了多种检测技术,文中对近年来该领域的研究进行了综述。首先总结代码相似性检测的基本流程和需要解决的难题(如跨编译器、跨编译器优化配置、跨指令架构检测);然后根据关注的代码信息的不同,将当前的二进制代码相似性检测技术分为4类,即基于文本的、基于属性度量的、基于程序逻辑的和基于语义的检测技术,并列举了部分代表性方法和工具(如Karta,discovRE,Ge-nius,Gemini,SAFE等);最后根据发展脉络和最新研究成果,对该领域的发展方向进行了分析和论述。
    参考文献 | 相关文章 | 多维度评价
    2. 反向调试技术研究综述
    徐建波, 舒辉, 康绯
    计算机科学    2021, 48 (5): 9-15.   DOI: 10.11896/jsjkx.200600152
    摘要444)      PDF(pc) (1838KB)(1107)    收藏
    在软件的开发测试部署过程中,调试工作耗费了开发人员非常多的精力和时间,有时一个很难被发现的错误会导致多次重启调试。反向调试是软件调试的一种技术,无需重启即可向后查看运行的指令及状态,这能够大大提高软件调试的速度,降低软件开发的难度,有效修复程序运行时发生的错误。该技术的核心问题是运行状态的恢复,目前针对该问题的解决方法主要有状态保存和状态重构。文中主要从反向调试的原理、学术研究、产品实现、技术应用等方面梳理其发展情况,对该技术进行分析研究,总结了基于时间和基于指令的状态保存反向调试技术以及两种反向执行重构状态的方法,并提出了有关记录重放程序执行、定位分析软件错误、反向数据流恢复这3方面的应用,可为反向调试技术的研究应用提供一定的参考。
    参考文献 | 相关文章 | 多维度评价
    3. 一种面向形式化表格需求模型的测试用例生成方法
    汪文轩, 胡军, 胡建成, 康介祥, 王辉, 高忠杰
    计算机科学    2021, 48 (5): 16-24.   DOI: 10.11896/jsjkx.201000048
    摘要416)      PDF(pc) (1897KB)(944)    收藏
    现代安全关键性系统的软件规模和复杂性的快速增长给这类安全关键性软件系统的开发带来了很多挑战。传统文本文档的需求描述方法无法保证此类系统的开发进度和系统可靠性要求。为此文中提出了一种兼具可读性和可自动分析的形式化表格需求建模方法。文中介绍了一种针对这种表格模型测试用例的自动生成方法,工作包括对该形式化需求表格模型展开语义分析,建立需求模型的控制树结构,得到其测试等价类;为了减少不必要的测试,定义了不同安全级别的软件需求模型的测试覆盖标准,并针对不同覆盖率准则分别给出基于控制树结构的测试路径约束选择方法;对于每条路径约束测试等价类,提出了基于域错误的测试用例选择方法,能够自动生成所需的检测域错误的测试用例集。最后,通过一个需求模型实例展示了所提方法的有效性。
    参考文献 | 相关文章 | 多维度评价
    4. SymFuzz:一种复杂路径条件下的漏洞检测技术
    李明磊, 黄晖, 陆余良, 朱凯龙
    计算机科学    2021, 48 (5): 25-31.   DOI: 10.11896/jsjkx.200600128
    摘要536)      PDF(pc) (2058KB)(1206)    收藏
    当前漏洞检测技术可以实现对小规模程序的快速检测,但对大型或路径条件复杂的程序进行检测时其效率低下。为实现复杂路径条件下的漏洞快速检测,文中提出了一种复杂路径条件下的漏洞检测技术SymFuzz。SymFuzz将导向式模糊测试技术与选择符号执行技术相结合,通过导向式模糊测试技术对程序路径进行过滤,利用选择符号执行技术对可能触发漏洞的路径进行求解。该技术首先通过静态分析获取程序漏洞信息;然后使用导向式模糊测试技术,快速生成可以覆盖漏洞函数的测试用例;最后对漏洞函数内可以触发漏洞的路径进行符号执行,生成触发程序漏洞的测试用例。文中基于AFL与S2E等开源项目实现了SymFuzz的原型系统。实验结果表明,SymFuzz与现有的模糊测试技术相比,在复杂路径条件下的漏洞检测效果提高显著。
    参考文献 | 相关文章 | 多维度评价
    5. 安全关键软件术语推荐和需求分类方法
    杨志斌, 杨永强, 袁胜浩, 周勇, 薛垒, 程高辉
    计算机科学    2021, 48 (5): 32-44.   DOI: 10.11896/jsjkx.210100105
    摘要387)      PDF(pc) (3149KB)(1361)    收藏
    安全关键软件需求中的相关知识大多需要手工提取,既费时又费力。近年来,人工智能技术逐渐被应用于安全关键软件设计与开发过程中,以减少工程师的手工劳动,缩短软件开发的生命周期。文中提出了一种安全关键软件术语推荐和需求分类方法,为安全关键软件需求规约提供了基础。首先,基于词性规则和依存句法规则对候选术语进行提取,通过术语相似度计算和聚类方法对候选术语进行聚类,将聚类结果推荐给工程师;其次,基于特征提取方法和分类方法将安全关键软件需求自动分为功能、安全性、可靠性等需求;最后,在AADL(Architecture Analysis and Design Language)开源建模环境OSATE中实现了原型工具TRRC4SCSTool,并基于工业界案例需求、安全分析与认证标准等构建实验数据集进行了实验验证,证明了所提方法的有效性。
    参考文献 | 相关文章 | 多维度评价
    6. 数据驱动的开源贡献度量化评估与持续优化方法
    范家宽, 王皓月, 赵生宇, 周添一, 王伟
    计算机科学    2021, 48 (5): 45-50.   DOI: 10.11896/jsjkx.201000107
    摘要280)      PDF(pc) (1723KB)(1151)    收藏
    在当今数字化时代,开源技术、开源软件和开源社区日益重要,而通过量化分析方法研究开源领域的问题也已经成为一个重要的趋势。开发者是开源项目中的核心,其贡献度的量化以及量化后的贡献度提升策略,是开源项目能够健康发展的关键。文中提出了一种数据驱动的开源贡献度量化评估与持续优化方法,并通过一个实际的工具框架Rosstor(Robotic Open Source Software Mentor)进行了实现。该框架包含两个主要部分:1)贡献度评估模型,采取了熵权法,可以动态客观地评估开发者的贡献度;2)贡献度持续优化模型,采取了深度强化学习方法,最大化了开发者的贡献度。文中选取了GitHub上若干著名的开源项目的贡献者数据,通过大量且充分的实验验证了Rosstor不仅能够使所有项目上开发者的贡献度得到大幅度提升,而且还具有一定的抗干扰性,充分证明了所提方法和框架的有效性。Rosstor框架为当下广泛开展的开源项目和开源社区的可持续健康发展提供了方法和工具方面的支持。
    参考文献 | 相关文章 | 多维度评价
    7. 一种AltaRica 3.0模型中类的平展化方法
    祁健, 胡军, 谷青范, 荣灏, 展万里, 董彦宏
    计算机科学    2021, 48 (5): 51-59.   DOI: 10.11896/jsjkx.200700184
    摘要307)      PDF(pc) (2982KB)(527)    收藏
    AltaRica是一类面向复杂安全关键系统的建模语言,卫士转换系统(Guarded Transition System,GTS)是最新的AltaRica 3.0的执行语义模型。AltaRica 3.0层次结构语法模型中类的平展化是将AltaRica 3.0语法模型转换为等价的平展化GTS语义模型过程中的一个重要步骤。文中提出了一种AltaRica 3.0模型中类的平展化优化方法。首先,设计专用的数据结构来存储AltaRica 3.0模型中类的语义结构,并对原有的ANTLR(Another Tool for Language Recognition)元语言描述的AltaRica 3.0模型颗粒度进行重新精化和定义;其次基于ANTLR生成相应的词法和语法分析器,并自动构造输入模型的语法树,通过对语法树的遍历,取得细粒度的类的关键信息并进行存储;然后设计了专用的算法,高效地实现了类的平展化过程;最后通过实例系统的分析,验证了所提方法的正确性和有效性。
    参考文献 | 相关文章 | 多维度评价
    8. 面向恶意软件检测模型的黑盒对抗攻击方法
    陈晋音, 邹健飞, 袁俊坤, 叶林辉
    计算机科学    2021, 48 (5): 60-67.   DOI: 10.11896/jsjkx.200300127
    摘要353)      PDF(pc) (2755KB)(1145)    收藏
    深度学习方法已被广泛应用于恶意软件检测中并取得了较好的预测精度,但同时深度神经网络容易受到对输入数据添加细微扰动的对抗攻击,导致模型输出错误的预测结果,从而使得恶意软件检测失效。针对基于深度学习的恶意软件检测方法的安全性,提出了一种面向恶意软件检测模型的黑盒对抗攻击方法。首先在恶意软件检测模型内部结构参数完全未知的前提下,通过生成对抗网络模型来生成恶意软件样本;然后使生成的对抗样本被识别成预先设定的目标类型以实现目标攻击,从而躲避恶意软件检测;最后,在Kaggle竞赛的恶意软件数据集上展开实验,验证了所提黑盒攻击方法的有效性。进一步得到,生成的对抗样本也可对其他恶意软件检测方法攻击成功,这验证了其具有较强的攻击迁移性。
    参考文献 | 相关文章 | 多维度评价
    9. 程序调试中的树形结构演变可视化模型
    苏庆, 黎智洲, 刘添添, 吴伟民, 黄剑锋, 李小妹
    计算机科学    2021, 48 (5): 68-74.   DOI: 10.11896/jsjkx.200100133
    摘要264)      PDF(pc) (3900KB)(787)    收藏
    树形结构作为一种非线性数据结构,在程序执行过程中的演变过程较为抽象,尤其是在对其进行加工型操作时,容易发生内存泄漏。针对编程初学者难以掌握树形结构的逻辑演变过程,以及在程序中发生内存泄漏错误时调试较为困难的问题,文中提出了一种对程序调试过程中树形结构的演变过程进行可视化呈现的处理模型TEVM(Tree Evaluation Visualization Model)。针对单个可视化程序在调试步骤前和调试步骤后的两个树形结构,设计了一种将树形结构转换为线性表示的结构对比算法,得出了它们的包括泄漏树在内的结构差异;同时设计了一种树形结构布局方法,并计算它们的布局差异。根据结构差异和布局差异生成可视化演变序列,调用绘图引擎对该序列进行解析和执行,从而完成对树形结构及其演变过程的动态、平滑和直观的可视化呈现,帮助编程初学者快速理解树形结构相关程序的执行过程,提升调试效率。将TEVM模型集成于一个面向编程实训教学的集成开发环境原型 Web AnyviewC中,取得了较好的应用效果。
    参考文献 | 相关文章 | 多维度评价
    10. 基于类粒度的克隆代码群稳定性实证研究
    张久杰, 陈超, 聂宏轩, 夏玉芹, 张丽萍, 马占飞
    计算机科学    2021, 48 (5): 75-85.   DOI: 10.11896/jsjkx.200900062
    摘要251)      PDF(pc) (2539KB)(610)    收藏
    克隆代码研究与软件工程中的各类问题密切相关。现有的克隆代码稳定性研究主要集中于克隆代码与非克隆代码的比较以及不同克隆代码类型之间的比较,少有研究对克隆代码的稳定性与克隆群所分布的面向对象类进行相关分析。基于面向对象类的粒度进行了克隆群稳定性实证研究,设计了4项与克隆群稳定性相关的研究问题,围绕这些研究问题,将克隆群分为类内、类间和混合3组,并基于4种视角下的9个演化模式进行了克隆群稳定性的对比分析。首先,检测软件系统所有子版本中的克隆代码,识别并标注所有克隆代码片段所属的类信息;其次,基于克隆片段映射方法完成相邻版本间克隆群的演化映射和演化模式的识别与标注,并将映射和标注结果合并为克隆代码演化谱系;然后,在不同视角下,针对3组克隆群进行稳定性计算;最后,根据实验结果对比分析了3组克隆群的稳定性差异。在7款面向对象开源软件系统总共近7 700个版本上进行的克隆群稳定性实验结果表明:约60%的类内克隆群的生命周期率达到50%及以上,类间克隆和混合克隆群的生命周期率达到50%及以上的占比均约为35%;类内克隆群发生变化的次数最少,类间克隆群发生合并、分枝和延迟修复演化模式的次数相对略多,混合克隆群发生片段减少、内容一致变化和不一致变化的次数最多。总体而言,类内克隆群的稳定性表现最佳,混合克隆群在演化中可能需要重点跟踪或优先重构。克隆代码稳定性分析方法及实验结论将为克隆代码的跟踪、维护以及重构等克隆管理相关软件活动提供有力的参考和支持。
    参考文献 | 相关文章 | 多维度评价
    11. 基于连续型深度置信神经网络的软件可靠性预测
    亓慧, 史颖, 李灯熬, 穆晓芳, 侯明星
    计算机科学    2021, 48 (5): 86-90.   DOI: 10.11896/jsjkx.210200055
    摘要243)      PDF(pc) (1761KB)(730)    收藏
    为了提高软件可靠性智能预测的精度,采用连续型深度置信神经网络算法用于软件可靠性预测。首先提取影响软件可靠性的核心要素样本,并获取样本要素的关键特征;然后建立连续型深度置信神经网络(Deep Belief Network,DBN)的软件可靠性预测模型,输入待预测样本,通过多个受限波尔兹曼机(Restricted Boltzmann Machine,RBM)层的预处理训练,以及多次反向微调迭代获取DBN权重等参数,直到达到最大RBM层数和最大反向微调迭代次数;最后获得稳定的软件可靠性预测模型。实验结果证明,通过合理设置DBN隐藏层节点数和学习速率,可以获得良好的软件可靠性预测准确率和标准差。与常用的软件可靠性预测算法相比,所提算法的预测准确度高且标准差小,在软件可靠性预测方面的适用度较高。
    参考文献 | 相关文章 | 多维度评价
    12. 知识驱动的相似缺陷报告推荐方法
    余笙, 李斌, 孙小兵, 薄莉莉, 周澄
    计算机科学    2021, 48 (5): 91-98.   DOI: 10.11896/jsjkx.200600159
    摘要319)      PDF(pc) (1736KB)(631)    收藏
    软件缺陷在软件开发过程中不可避免,提交的缺陷报告则是分析和修复缺陷的重要信息来源。开发人员常通过借鉴相似的历史缺陷报告和修复信息来辅助对当前新缺陷的分析和修复。文中提出了一种知识驱动的相似缺陷报告推荐方法。该方法首先利用信息检索和Word Embedding技术构建缺陷知识图谱;然后利用TF-IDF和Word Embedding技术计算缺陷报告之间的文本相似度,同时综合考虑缺陷的各项属性,从而得到缺陷报告之间的主次要属性相似度;最后将上述相似度融合成综合相似度,利用综合相似度推荐相似缺陷报告。实验结果表明,与基线方法相比,在Firefox数据集上所提方法的性能平均提高了12.7%。
    参考文献 | 相关文章 | 多维度评价
    13. 融合聚类算法和缺陷预测的测试用例优先排序方法
    肖蕾, 陈荣赏, 缪淮扣, 洪煜
    计算机科学    2021, 48 (5): 99-108.   DOI: 10.11896/jsjkx.200400100
    摘要314)      PDF(pc) (4745KB)(784)    收藏
    持续集成环境下,软件快速更新加快了回归测试执行的频率,但缺陷快速反馈的需求对回归测试又提出了更高要求。测试用例优先排序技术研究测试用例的重要性,通常将缺陷探测能力强的测试用例优先执行,使其提早发现软件缺陷,其可解决持续集成环境下的快速反馈需求。缺陷预测技术可通过被测系统代码特征和历史缺陷来预估信息预测软件在新版本中发现缺陷的可能性,传统基于聚类的测试用例优先排序方法大多未考虑不同类簇数和特征子集对聚类结果的影响。文中将缺陷预测应用到聚类优先排序方法,构建测试用例和代码关联矩阵,对测试用例进行聚类分析,结合缺陷预测结果和最大最小距离策略指导簇间和簇内排序。通过实验验证发现,类簇数和聚类特征子集选择对排序效果有一定影响,当未能获取最佳类簇数和特征子集时,相比单一的聚类优先排序方法,所提方法可更有效地提高回归测试效率。
    参考文献 | 相关文章 | 多维度评价
    14. CodeSearcher:基于自然语言功能描述的代码查询
    陆龙龙, 陈统, 潘敏学, 张天
    计算机科学    2020, 47 (9): 1-9.   DOI: 10.11896/jsjkx.191200170
    摘要782)      PDF(pc) (1915KB)(1294)    收藏
    在项目开发过程中,开发者需要为实现某一功能而编写代码;在不确定如何使用特定编程语言来实现当前待开发功能时,其往往会在文档或网络资源中进行代码查询。因此,代码查询的有效性会直接影响软件开发的效率。目前,已有相当数量的工具可以用来辅助开发者进行代码查询,但这些工具普遍存在输入形式复杂或者匹配精确度低等问题。文中提出的CodeSearcher 是一种基于自然语言功能描述的代码查询方法。CodeSearcher 将软件开发垂直领域的问答网站Stack OverFlow 的问答记录转换为〈自然语言描述,代码片段〉数据对,使用神经网络模型将“自然语言描述”和“代码片段”映射到相同的向量空间并进行匹配,从而能够支持开发者使用待开发功能的自然语言描述来查询相应代码。CodeSearcher 不同于一般的代码查询系统,一方面,它只需要代码本身而不依赖于代码的注释或说明,因此可以支持更多代码查询的场景;另一方面,它拓展了代码查询的流程,使其不再局限于一次性的查询反馈流程,而是在这中间加入了代码询答的流程,利用返回代码片段之间的差异性元素帮助开发者挑选目标代码,使得开发者不需要详细阅读所有返回的代码片段。实验结果表明,CodeSearcher 相较于基准有着更好的效果。
    参考文献 | 相关文章 | 多维度评价
    15. 基于迁移学习和过采样技术的跨项目克隆代码一致性维护需求预测
    欧阳鹏, 陆璐, 张凡龙, 邱少健
    计算机科学    2020, 47 (9): 10-16.   DOI: 10.11896/jsjkx.200400041
    摘要563)      PDF(pc) (1534KB)(965)    收藏
    近年来,随着软件需求的不断增加,开发人员通过复用已有的代码向项目中引入了大量的克隆代码。随着软件版本的迭代和更新,克隆代码会发生变化,而克隆代码变化会导致额外的维护代价,并逐渐成为软件维护的负担。研究人员尝试利用机器学习方法开展克隆代码一致性维护需求预测研究,通过预测克隆代码的变化是否会导致额外的维护代价,来帮助软件质量保障团队更有效地分配维护资源,从而提高工作效率并降低运维成本。然而,在软件开发的初期阶段,软件项目往往没有经过充分的演化,缺少历史数据用于构建有效的预测模型,因此跨项目克隆代码一致性维护需求预测方法被提出。文中以减少跨项目数据分布差异为切入点,提出了基于迁移学习和过采样技术的跨项目克隆代码一致性维护需求预测方法CPCCP+,旨在将测试集与数据集映射到核空间中,通过迁移主成分分析方法减小跨项目数据的分布差异,并对数据集的类不平衡问题进行处理,从而提高跨项目预测模型的性能。在实验数据集方面,选取了7个开源数据集,合计形成42组跨项目克隆代码一致性维护需求预测任务。将提出的方法与使用基分类器的方法进行比较,评估指标包含Precision,Recall和F-Measure。实验结果表明,CPCCP+能更有效地进行跨项目克隆代码一致性维护需求的预测。
    参考文献 | 相关文章 | 多维度评价
    16. CompCert编译器目标代码生成机制分析
    杨萍, 王生原
    计算机科学    2020, 47 (9): 17-23.   DOI: 10.11896/jsjkx.200400018
    摘要582)      PDF(pc) (1472KB)(1264)    收藏
    CompCert是著名的C语言可信编译器,是经过形式化验证的编译器的杰出代表,近年来被广泛应用于学术界和工业界的许多研发工作中。CompCert编译器的当前版本支持多种目标机结构。文中对CompCert编译器目标代码生成机制进行剖析,主要介绍其设计逻辑、翻译过程、语义保持性以及代码结构,并给出了CompCert编译器重定向设计的要点。文中工作有助于实现CompCert重定向,比如实现面向重要国产处理器的后端。
    参考文献 | 相关文章 | 多维度评价
    17. 面向Java的Randoop自动化单元测试生成工具性能分析
    刘芳, 洪玫, 王潇, 郭丹, 杨正卉, 黄小丹
    计算机科学    2020, 47 (9): 24-30.   DOI: 10.11896/jsjkx.200200116
    摘要842)      PDF(pc) (2432KB)(1780)    收藏
    自动化单元测试是现代软件开发研究的热点。Randoop自动化单元测试用例生成工具针对Java和.NET代码,基于反馈指导随机生成测试用例,在业界应用广泛。为了有效使用Randoop进行自动化测试,采用经验软件工程的方法,通过实验分析Randoop的性能特点;实验选取4个有代表性的Java开源项目,分析Randoop生成测试用例的代码覆盖率和变异体检测能力,以及它们与时间成本和被测类源代码的代码结构之间的关系。实验发现,Randoop可以在短时间内生成有效的测试用例,生成测试用例的性能随时间增加而上升,并在测试用例生成时间为120s时趋于稳定,其平均变异体覆盖率达55.59%,且平均变异体杀死率为28.15%。Randoop生成的测试用例的性能与被测类源代码的代码结构和复杂度存在一定的关系。该研究为软件测试人员有效使用Randoop工具提供了有价值的参考。
    参考文献 | 相关文章 | 多维度评价
    18. 基于脚本预测和重组的内存泄漏测试加速技术
    李吟, 李必信
    计算机科学    2020, 47 (9): 31-39.   DOI: 10.11896/jsjkx.200100075
    摘要321)      PDF(pc) (2425KB)(639)    收藏
    内存泄漏是云应用、Web服务、中间件等各类连续工作型软件中的一种常见缺陷,它会导致程序运行速度减慢、资源耗尽崩溃等软件稳定性问题。现有测试一般以较长周期运行测试用例来检测泄漏缺陷,用于检测泄漏的测试用例通常需要运行数小时以上才能产生足以暴露泄漏的内存表现。整个测试过程代价高昂,若对测试用例不加筛选,可能会耗费大量的时间在暴露泄漏可能性低的测试用例上,降低了泄漏发现的效率。为了弥补现有技术的不足,并解决Java Web程序长时间运行的内存泄漏缺陷不易发现、不易诊断及不易修复的难题,文中对内存泄漏的发现技术进行了研究,提出了基于机器学习的内存泄漏测试脚本预测方法,通过构建内存特征模型,对存在内存泄漏的脚本进行训练及预测,基于训练的模型进行脚本内存泄漏风险值预测,并给出相应的参数打分,以指导后续的脚本重组,从而预测获取更可能造成内存泄漏的功能测试脚本。同时,提出了脚本重组优化方法,改善其缺陷揭示能力。对预测和重组后的脚本进行优先测试,可以加速泄漏缺陷的发现。最后通过案例验证表明了所提框架具有较强的泄漏发现能力,重组优化后的测试脚本在发现缺陷的速度方面比普通脚本高出一倍以上,从而缩短了内存膨胀问题的暴露时间,达到了提高测试效率以及保障软件质量的目的。
    参考文献 | 相关文章 | 多维度评价
    19. 基于支配关系的数据流测试用例生成方法
    吉顺慧, 张鹏程
    计算机科学    2020, 47 (9): 40-46.   DOI: 10.11896/jsjkx.200700021
    摘要350)      PDF(pc) (1706KB)(703)    收藏
    程序控制流的设计是为实现正确的数据流服务的,数据流测试是非常重要的。文中将面向all-uses数据流准则的测试用例生成问题建模为多目标优化问题,提出了一种基于遗传算法的测试用例生成方法。通过构建待测程序的控制流图进行数据流分析,计算出程序中所有的定义-使用对,得到测试目标,利用面向多测试目标的遗传算法生成满足all-uses准则的最优解。遗传算法中定义了一种改进的基于支配关系的适应度函数,在分析测试用例对定义-使用对的覆盖程度时考虑了存在重定义的可能性,且考虑了定义结点和使用结点在执行路径中的先后顺序。实验结果表明,所提方法可以有效地生成满足all-uses准则的测试用例,相比其他方法可以有效地提升测试目标的覆盖率,降低生成测试用例所需的迭代次数。
    参考文献 | 相关文章 | 多维度评价
    20. 基于关键词Trie树的GCC抽象语法树消除冗余算法
    韩磊, 胡建鹏
    计算机科学    2020, 47 (9): 47-51.   DOI: 10.11896/jsjkx.190600042
    摘要515)      PDF(pc) (1549KB)(1109)    收藏
    GCC(GNU Compiler Collection)编译器编译C语言源程序所生成的抽象语法树文本中包含大量与源代码无关的冗余信息,若直接进行解析,会严重影响分析效率,降低分析精确度,同时会占用大量存储空间。针对此问题,提出一种基于关键词Trie树的GCC抽象语法树消除冗余算法,其根据包含抽象语法树文本有用信息节点的关键词建立Trie树,可实现对抽象语法树文本无用节点的过滤,从而达到优化编译的效果。相比传统KMP消除冗余算法,关键词Trie树算法可以有效避免去冗余过程中常量、变量等有用信息节点的丢失,确保数据的完整性;同时,关键词Trie树算法可以最大限度地减少重复前缀或后缀字符串的比较次数,节省了时空开销。挑选不同长度的C语言源码文件进行去冗余实验,测试该算法的性能,并将其与传统KMP算法进行对比。实验结果表明,所提算法的去冗效率和查准率均得到了极大的提高。
    参考文献 | 相关文章 | 多维度评价
    首页 | 前页| 后页 | 尾页 第1页 共1页 共20条记录