华为云软件冗余依赖智能消除技术Slimming取得重大突破,相应文章已被软工顶会ICSE 2024录用

举报
华为云软件分析Lab 发表于 2023/11/12 20:33:28 2023/11/12
【摘要】 由于构建工具对软件库的自动化配置管理,使得现代软件项目在版本演化的过程中,引入大量的第三方软件库,依赖树结构日益臃肿。然而,实际上很多引入的软件库并未被真正使用。臃肿的依赖在资源受限的设备上将严重影响代码的性能、增加安全攻击面、降低软件构建效率,并对依赖管理增加额外负担。现有技术在去除冗余依赖方面存在如下问题:(a) 冗余依赖的误报。由于静态分析技术的局限性,不能良好地处理Java反射,导致...


由于构建工具对软件库的自动化配置管理,使得现代软件项目在版本演化的过程中,引入大量的第三方软件库,依赖树结构日益臃肿。然而,实际上很多引入的软件库并未被真正使用。臃肿的依赖在资源受限的设备上将严重影响代码的性能、增加安全攻击面、降低软件构建效率,并对依赖管理增加额外负担。现有技术在去除冗余依赖方面存在如下问题:(a) 冗余依赖的误报。由于静态分析技术的局限性,不能良好地处理Java反射,导致冗余依赖检测的误报。(b) 去除冗余依赖可能会带来新的依赖管理问题。例如,被冗余依赖传递性引入的软件库可能会被客户端代码所间接调用。如果从配置文件中去除冗余依赖,则需要要把被其引用的传递依赖重新声明为客户端软件的直接依赖,以确保程序正确运行。这样修复后,开发人员将需要花费更多的代价来维护新增依赖的版本。为此,工业界亟需一种安全可靠的技术能够帮助开发者从依赖配置中去除冗余的第三方软件库。



图1 Slimming方法概览


华为云PaaS技术创新LAB与东北大学王莹副教授研究团队合作研发了安全去除软件冗余依赖的工具Slimming。该项技术:(1) 设计了精确的Java反射分析技术,结合配置文件解析与程序分析,可以有效地处理流行框架(包括Spring Boot在内的6种流行框架)所涉及的动态行为、字符操作等难题。从而有效地识别出冗余依赖。(2) 设计了“权衡收益和代价”的依赖分析方法,结合依赖树的结构和依赖软件库的特点,安全地去掉冗余依赖,从而为软件“减肥”。减少诸多不必要的许可证冲突、安全漏洞、过时依赖和依赖冲突等问题的维护和管理。能够为华为公司的软件生产提高效率、节约开发成本。与现有的程序分析技术相比,Slimming在冗余依赖的检测和修复能力方面均有明显地提升。目前相关研究成果,已被软件工程领域顶会ICSE 2024(CCF A类)正式录用。文章详细内容即将公开,敬请关注。


图2 冗余依赖的可视化检测结果


该研究是华为云PaaS技术创新LAB在软件供应链领域的又一项重要的产学研合作实践,一方面助力高校创新型人才培养,为企业培养尖端人才;另一方面立足自主可控的软件供应链可信保障技术研究,为保障软件质量迈出了重要一步。

PaaS技术创新Lab隶属于华为云,致力于综合利用软件分析、数据挖掘、机器学习等技术,为软件研发人员提供下一代智能研发工具服务的核心引擎和智慧大脑。我们将聚焦软件工程领域硬核能力,不断构筑研发利器,持续交付高价值商业特性!加入我们,一起开创研发新“境界”!(详情欢迎联系: bianpan@huawei.com; mayuchi1@huawei.com)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。