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

news2024/11/27 8:48:49

由于构建工具对软件库的自动化配置管理,使得现代软件项目在版本演化的过程中,引入大量的第三方软件库,依赖树结构日益臃肿。然而,实际上很多引入的软件库并未被真正使用。臃肿的依赖在资源受限的设备上将严重影响代码的性能、增加安全攻击面、降低软件构建效率,并对依赖管理增加额外负担。现有技术在去除冗余依赖方面存在如下问题:

(a) 冗余依赖的误报

由于静态分析技术的局限性,不能良好地处理Java反射,导致冗余依赖检测的误报。

(b)去除冗余依赖可能会带来新的依赖管理问题

例如,被冗余依赖传递性引入的软件库可能会被客户端代码所间接调用。如果从配置文件中去除冗余依赖,则需要要把被其引用的传递依赖重新声明为客户端软件的直接依赖,以确保程序正确运行。这样修复后,开发人员将需要花费更多的代价来维护新增依赖的版本。为此,工业界亟需一种安全可靠的技术能够帮助开发者从依赖配置中去除冗余的第三方软件库。

640.png

640 (1).png

图1 Slimming方法概览

华为云PaaS技术创新LAB与东北大学王莹副教授研究团队合作研发了安全去除软件冗余依赖的工具Slimming。该项技术:

(1) 设计了精确的Java反射分析技术,结合配置文件解析与程序分析,可以有效地处理流行框架(包括Spring Boot在内的6种流行框架)所涉及的动态行为、字符操作等难题。从而有效地识别出冗余依赖。

(2) 设计了“权衡收益和代价”的依赖分析方法,结合依赖树的结构和依赖软件库的特点,安全地去掉冗余依赖,从而为软件“减肥”。减少诸多不必要的许可证冲突、安全漏洞、过时依赖和依赖冲突等问题的维护和管理。能够为华为公司的软件生产提高效率、节约开发成本。与现有的程序分析技术相比,Slimming在冗余依赖的检测和修复能力方面均有明显地提升。

目前相关研究成果,已被软件工程领域顶会ICSE 2024(CCF A类)正式录用。文章详细内容即将公开,敬请关注。

640 (2).png

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1287013.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++智能指针及简单实现

C智能指针 堆内存、栈内存与静态内存静态内存栈内存堆内存 动态内存管理new、delete运算符智能指针实现智能指针 shared_ptr智能指针的线程安全问题解决 unique_ptrweak_ptr循环引用 思维导图本模块思路 动态内存管理 - cppreference.com 堆内存、栈内存与静态内存 静态内存 …

会声会影2024购买多少钱 会声会影在哪里购买

掌握视频编辑技术,能为我们的工作和生活带来很多帮助。例如:将我们精心编辑的视频,上传到抖音、快手等平台进行变现;通过天马行空的视频创意,摇身一变成为B站up主。因此,拥有一款像会声会影这样的视频编辑软…

ATFX汇市:澳洲联储12月决议维持基准利率不变,AUDUSD短线大跌

ATFX汇市:12月5日,澳洲联储利率决议结果显示,将现金利率目标维持在4.35%不变 金融衍生品结算余额的支付利率维持在4.25%不变,符合市场预期。政策声明中提到:更加确定通货膨胀将会在合理的时间内返回目标;劳…

8.HTTP工作原理

HTTP是什么 HTTP工作原理 HTTP协议的请求类型和响应状态码 总结 1.HTTP是什么 HTTP超文本传输协议就是在一个网络中上传下载文件的一套规则 2.HTTP工作原理 HTTP超文本传输协议的本质是TCP通信,链接—>请求—>响应—>断开 3.HTTP协议的请求类型和响应状…

深入理解强化学习——马尔可夫决策过程:占用度量-[基础知识]

分类目录:《深入理解强化学习》总目录 文章《深入理解强化学习——马尔可夫决策过程:贝尔曼期望方程-[基础知识]》中提到,不同策略的价值函数是不一样的。这是因为对于同一个马尔可夫决策过程,不同策略会访问到的状态的概率分布是…

ssm的网上奶茶店系统(有报告)。Javaee项目。

演示视频: ssm的网上奶茶店系统(有报告)。Javaee项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringMvc Mybat…

相关基础知识

本文引注: https://zhuanlan.zhihu.com/p/447221519 1.方差 2.自协方差矩阵 3.自相关矩阵 4.互协方差矩阵 5.互相关矩阵 6.相关系数 7.自相关函数、自协方差函数与功率谱密度 8.互相关函数、互协方差函数与互功率谱密度

指针基础知识超详细讲解(C语言)(上)

还在为不懂指针而感到烦恼么?那还在等什么呢快来看看吧!冲冲冲! 文章目录 1,认识指针2,指针变量指针变量的定义指针变量的大小const修饰指针变量 3,指针的运算4, 野指针概念成因规避 5, assert…

Sketch利器大公开:十款使用率超高的懒人插件汇总

在设计领域,Sketch以其高效小巧的优势赢得了众多设计团队的青睐,帮助全球设计师创作了许多令人难以置信的作品。在使用Sketch的过程中,辅助使用一些Sketch插件可以让我们更有效地完成设计任务。在本文中,我们将揭示大厂设计师的收…

Mysql主从复制原理和三种复制:异步、同步、半同步(主的binlog、从的relaylog)

借鉴:https://zhuanlan.zhihu.com/p/651625709 https://www.jb51.net/article/258847.htm 一:Mysql主从复制原理 MySQL的复制原理分三步 1.在主库上把数据更改,记录到二进制日志(Binary Log)中。 2.从库将主库上的日志…

分享86个选项卡TABJS特效,总有一款适合您

分享86个选项卡TABJS特效,总有一款适合您 86个选项卡TABJS特效下载链接:https://pan.baidu.com/s/1NBtPP2tT5YQqi6c744tCqg?pwd6666 提取码:6666 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气&#xff0…

软件测试面试题解析--什么题是必问的?

设计测试用例的主要方法有哪些?简述一下缺陷的生命周期?测试流程?项目流程?验收测试中和β测试区别?如何维护测试用例?每天测多少用例怎么分配的测试的一天能找多少bug你在上一家公司,写没写过测…

【Maven】更新依赖索引

有时候给idea配置完maven仓库信息后,在idea中依然搜索不到仓库中的jar包。这是因为仓库中的jar包索引尚未更新到idea中。这个时候我们就需要更新idea中maven的索引了,具体做法如下: 打开设置----搜索maven----Repositories----选中本地仓库-…

装修流程篇

装修流程 https://www.xiaohongshu.com/explore/627ba70d00000000210357b3 https://www.xiaohongshu.com/explore/63b6bc0c000000002203776f 半包装修流程 https://www.xiaohongshu.com/explore/64e5ea3b0000000003021711 户型图 效果 https://www.xiaohongshu.com/ex…

P5 Linux 标准C库函数

目录 前言 01 标准输入、标准输出和标准错误 02 打开文件 fopen() 03 新建文件的权限 04 fclose()关闭文件 05 读文件和写文件 06 库函数 fseek 定位 6.1 lseek的使用 07 ftell()函数 前言 🎬 个人主页:ChenPi 🐻推荐专栏1: 《C_Chen…

sql 读写注入

root高权限读写注入 load_file 读取文件 大姐我真是整了半天都是nullnullnull缝子 结果看了半天这个my.ini是被隐藏的大哥 load_file()读取文件结果为null_mysql load_file返回null解决办法_黑小薛的博客-CSDN博客 终于读出来了 此时参数值系统变量 secure_file_priv已经被修…

使用DevEco Studio时遇见的错误情况与问题

第一个 问题:打开项目文件,控制台报错 hvigor ERROR: Unable to find sdk.dir in local.properties or OHOS_BASE_SDK_HOME in the system environment path. 解决办法:在项目根目录中打开local.properties。如果没有local.properties,自己创建。 在local.properties中填…

[ROS2] --- 手动编写一个节点

1 准备工作 1.1 创建/编译工作空间 创建工作空间 mkdir -p ~/dev_ws/src cd ~/dev_ws/src1. 2 创建功能包 ros2 pkg create learning01_write_a_node --build-type ament_cmake --dependencies rclcpp可以看到目录结构如下: 1. 3 创建节点 在learing01_write…

234 回文链表

解题思路: \qquad 由于链表的结构特点,访问链表中的元素的时间复杂度为O(n)。相比较而言,使用数组会方便很多,实现O(1)访问。 \qquad 所以这个题,可以先遍历一遍把数值存到数组中,再使用双指针判断是否是…

【Kubernetes】可视化UI界面Dashboard

安装和配置k8s可视化UI界面 一、安装Dashboard1.1、上传镜像并解压1.2、安装dashboard组件1.3、修改service1.4、访问dashboard 二、通过Token令牌访问Dashboard2.1、创建clusterrolebinding2.2、获取token2.3、使用token登录 三、通过kubeconfig文件访问Dashboard3.1、创建clu…