快速检索
    过刊检索
    全选反选导出
    显示模式:
    2025,36(7):2929-2946, DOI: 10.13328/j.cnki.jos.007332, CSTR: 32375.14.jos.007332
    [摘要] (273) [HTML] (46) [PDF 6.75 K] (377)
    摘要:
    差分隐私凭借其强大的隐私保护能力被应用在随机森林算法解决其中的隐私泄露问题, 然而, 直接将差分隐私应用在随机森林算法会使模型的分类准确率严重下降. 为了平衡隐私保护和模型准确性之间的矛盾, 提出了一种高效的差分隐私随机森林训练算法eDPRF (efficient differential privacy random forest). 具体而言, 该算法设计了决策树构建方法, 通过引入重排翻转机制高效地查询输出优势, 进一步设计相应的效用函数实现分裂特征以及标签的精准输出, 有效改善树模型在扰动情况下对于数据信息的学习能力. 同时基于组合定理设计了隐私预算分配的策略, 通过不放回抽样获得训练子集以及差异化调整内部预算的方式提高树节点的查询预算. 最后, 通过理论分析以及实验评估, 表明算法在给定相同隐私预算的情况下, 模型的分类准确度优于同类算法.
    2025,36(7):2947-2963, DOI: 10.13328/j.cnki.jos.007333, CSTR: 32375.14.jos.007333
    [摘要] (624) [HTML] (41) [PDF 6.72 K] (370)
    摘要:
    模糊测试技术在软件质量保障、软件安全测试等领域起到重要作用. 然而, 在面对编译器这样输入语义复杂的系统时, 现有的模糊测试工具由于其变异策略中缺乏对语义的感知能力, 导致生成的程序难以通过编译器前端检查. 提出了一种语义可感知的灰盒模糊测试方法, 旨在提高模糊测试工具在编译器测试领域的效能. 设计并实现了一系列可保持输入语义合法性并探索上下文多样性的变异操作符, 并针对这些操作符的特点开发了高效的选择策略. 将这些策略与传统的灰盒模糊测试工具相结合, 实现了灰盒模糊测试工具SemaAFL. 实验结果表明, 通过应用这些变异操作符, SemaAFL在GCC和Clang编译器上的代码覆盖率相比AFL++和同类工具GrayC提高了约14.5%和11.2%. 在为期一周的实验期间, SemaAFL发现并报告了6个以前未被发现的GCC和Clang缺陷.
    2025,36(7):2964-3002, DOI: 10.13328/j.cnki.jos.007334, CSTR: 32375.14.jos.007334
    [摘要] (774) [HTML] (51) [PDF 6.75 K] (418)
    摘要:
    分布式系统是当今计算生态系统的支柱, 它使得现代计算更加强大、可靠和灵活, 覆盖了从云计算、大数据处理到物联网等多个关键领域. 然而, 由于系统的复杂性, 分布式系统在代码实现过程中总是不可避免地引入一些代码缺陷, 从而对系统的可用性、鲁棒性以及安全性造成巨大威胁. 因此, 分布式系统的测试以及缺陷挖掘工作十分重要. 动态测试技术在系统运行中进行实时分析, 以挖掘其缺陷, 评估其行为和功能, 被广泛用于各种系统应用的缺陷检测中, 并成功发现了许多代码缺陷. 首先提出了分布式系统4层缺陷威胁模型, 并基于它分析了分布式系统测试需求与主要挑战, 提出了对分布式系统进行动态测试的一般框架. 从挖掘不同类型系统缺陷的角度介绍了典型的分布式系统动态测试工具. 总结了包括不同维度测试输入生成、系统关键状态感知、缺陷判定准则构建在内的分布式动态测试的关键技术. 对当前主流分布式系统动态测试工具的覆盖率和缺陷发现能力进行了评估, 从初步实验结果中可以看出多维度测试输入技术能有效提高分布式系统测试效率. 最后, 讨论了分布式系统动态测试的新趋势以及可能的未来发展方向.
    2025,36(7):3003-3021, DOI: 10.13328/j.cnki.jos.007335, CSTR: 32375.14.jos.007335
    [摘要] (161) [HTML] (47) [PDF 6.75 K] (353)
    摘要:
    二进制到源代码函数相似性检测是软件组成成分分析的基础性工作之一. 现有方法主要采用一对一的匹配策略, 即使用单一的二进制函数和单一的源代码函数进行比对. 然而, 由于函数内联的存在, 函数之间的映射关系实际上表现为一对多——单一的二进制函数能够关联至多个源代码函数. 这一差异导致现有方法在函数内联场景下遭受了30%的性能损失. 针对函数内联场景下的二进制到源代码函数匹配需求, 提出了一种面向一对多匹配的二进制到源代码函数相似性检测方法, 旨在生成源代码函数集合作为内联二进制函数的匹配对象, 以弥补源代码函数库的缺失. 通过一系列实验评估了方法的有效性. 实验数据表明, 方法不仅能够提升现有二进制到源代码函数相似性检测的能力, 而且还能够找到内联的源代码函数, 帮助现有工具更好地应对内联挑战.
    2025,36(7):3022-3040, DOI: 10.13328/j.cnki.jos.007336, CSTR: 32375.14.jos.007336
    [摘要] (233) [HTML] (48) [PDF 6.73 K] (312)
    摘要:
    深度学习编译器已被广泛应用于深度学习模型的性能优化和部署. 与传统编译器类似, 深度学习编译器也存在缺陷. 存在缺陷的深度学习编译器会导致编译失败或者产生错误的编译结果, 甚至有时会带来灾难性的后果. 为了深入理解深度学习编译器缺陷的特性, 已有工作针对深度学习编译器早期的603个缺陷进行研究分析. 近年来, 深度学习编译器在快速迭代更新, 伴随着大量新特性的引入和旧特性的弃用. 与此同时, 一些针对深度学习编译器缺陷的检测工具已被开发出来. 因此, 需要分析之前对深度学习编译器缺陷的研究结论是否依然适用. 此外, 缺乏对缺陷症状、根因、位置三者之间关系的深入挖掘, 并且缺乏对触发缺陷的回归测试用例特征和修复缺陷的补丁特征的研究. 为了深入分析当下深度学习编译器缺陷特征和缺陷分布随时间的演化过程, 收集当前3款主流深度学习编译器(即Apache的TVM、Facebook的Glow和华为的AKG)中的613个近期修复的缺陷, 并对缺陷的根因、症状、位置等特征进行人工标注. 基于标注结果, 从多个不同角度深入挖掘缺陷的分布特征,并与已有研究进行对比分析. 同时, 对触发缺陷的回归测试用例和修复缺陷的补丁进行研究. 最终获得12个主要研究发现, 以全面了解深度学习编译器缺陷现状与演变过程, 并为深度学习编译器缺陷的检测、定位、修复提供一系列可行的指导方案. 最后, 为了验证这些研究发现的有效性, 开发了一款基于优化配置的测试工具CfgFuzz. CfgFuzz通过对编译配置选项进行组合测试, 最终检测到8个TVM缺陷, 其中7个缺陷已被开发人员确认或修复.
    2025,36(7):3041-3086, DOI: 10.13328/j.cnki.jos.007338, CSTR: 32375.14.jos.007338
    [摘要] (210) [HTML] (28) [PDF 6.74 K] (284)
    摘要:
    Java语言因丰富的依赖库和便捷的构建工具(如Maven和Gradle)已成为当今最流行的应用项目开发语言之一. 然而, 随着依赖库规模的持续增大, Java项目的依赖管理变得愈益复杂, 也不断超越现有工具的管理能力, 其潜藏问题容易在未预期情况下触发, 严重影响当前项目及所在Java生态中其他项目的构建和运行, 如造成构建错误、运行崩溃或语义冲突等后果. 针对现有调研和技术工作对Java语言依赖管理问题分析不足的缺陷, 提出依赖异味(dependency smell)的概念, 统一建模此类问题, 并对涉及Maven和Gradle构建工具所有类别的依赖管理问题开展大规模实证研究, 分析来自开源社区(如GitHub)、官方文档(如Maven依赖管理手册)和系列调研及技术论文的各类依赖管理问题, 最终总结出13类依赖异味及其触发根源和影响特征等. 基于该实证研究发现, 设计了面向Java项目依赖异味的统一检测算法, 并实现了适配于Maven和Gradle构建工具的专项检测工具JDepAna. 实验结果表明, 对已知依赖异味, JDepAna达到95.9%的检测召回率, 对新的上百个Java项目, JDepAna检测出30689个依赖异味实例, 从中选出360个实例, 人工验证真阳率达到96.1%, 其中, 进一步汇报48个实例给开发者, 42个已被快速确认, 21个已被及时修复, 充分验证了所提出的Java依赖异味检测算法和工具的效果和实用性以及对Java项目质量保障的有效支撑.
您是第位访问者
版权所有:中国科学院软件研究所 京ICP备05046678号-3
地址:北京市海淀区中关村南四街4号,邮政编码:100190
电话:010-62562563 传真:010-62562533 Email:jos@iscas.ac.cn
技术支持:北京勤云科技发展有限公司

京公网安备 11040202500063号