基于 Oracle 的系统识别方法来进行 Control-CPS 软件缺陷定位
sinye56 2024-10-09 19:34 5 浏览 0 评论
摘要
因为 CPS 系统错误可能导致重大故障,甚至造成人身伤亡,因此 Control-CPS 软件故障定位至关重要。为了定位控件 CPS 中的错误,缺陷工具通常需要许多标记(“正确” /“错误”)的源代码执行跟踪作为输入。要判断这些跟踪的正确性,我们必须判断相应的 Control-CPS 物理跟踪的正确性。但是,与离散输出不同,正确与错误的物理跟踪之间的界限通常很模糊。因此,判断物理跟踪正确性的机制(即 Oracle)成为一项重大挑战。到目前为止,人工预测仍被广泛使用,其质量在很大程度上取决于人类专家的专业知识和可用性。本文提出了一种基于广泛采用的自回归系统识别(AR-SI)的 Oracle 方法。由于在控制黑箱物理系统方面取得了成功,我们对 AR-SI 进行了改编,以将越野车控件 CPS 识别为黑箱。我们以此识别结果作为预言,以判断 Control-CPS 的行为,并提出一种方法来为 Control-CPS 调试准备跟踪。对注入了实际和人工设置错误的经典控制 CPS 的综合评估表明,我们提出的方法在缺陷定位准确性(召回率)和潜伏期以及 oracle 假阳性/假阴性的概率方面明显优于人工 oracle 方法。我们的方法还有助于发现消费级控件 CPS 中的真实存在的错误。
研究介绍
由于计算机和物理系统的必然融合,控制网络物理系统(CPS)(又称控制 CPS)越来越流行。典型的控制 CPS 包括航空电子设备,车辆,机器人等。许多控制 CPS 是安全攸关的,因此故障可能导致重大事故,甚至造成人身伤亡。当今如何帮助消除这些网络子系统中的软件故障正成为一个更大的挑战,这也是本文的重点。消除错误(也称为“调试”)的关键步骤是在源代码中找到错误,也就是软件缺陷定位(SFL)。随着软件复杂性的提高,手动 SFL 不再足够。近年来开发了许多自动 SFL 工具。根据程序范围,统计信息,机器学习,数据挖掘,程序切片,程序状态,模型等,可以将相应的工具分为 8 个系列。 尤其是随着大数据技术的兴起,许多现代主流 SFL 工具以及所调查的所有工具中有 38%以上需要大量标记(如“ 正确”或“不正确”)源代码执行跟踪(也称为“代码跟踪”)。 手动标记这么多的代码跟踪不再可行。 这导致迫切需要自动判断机制(即 oracle)来进行标记。然而,如何设计一个 oracle 和相应的代码跟踪准备方法是一个众所周知的难题:即所谓的 oracle 问题。
图 1:Control-CPS oracle 问题很难解决,例如 在自动驾驶仪中,如何分辨出正确的物理轨迹?、
本文主要贡献:
1)我们为控制 CPS 软件缺陷定位提出了一个基于 AR-SI 的 Oracle。
2)我们提出了一种相应的代码跟踪准备方法,该方法可以确定性地自动运行。
3)我们将我们提出的方法与人工 Oracle 方法的主流实践进行比较。对注入了实际和人工设置错误的经典控制 CPS 的综合评估表明,我们提出的方法在缺陷定位准确性(召回率)和潜伏期以及 oracle 假阳性/假阴性的概率方面明显优于人工 oracle 方法。我们的方法还有助于发现消费级控件 CPS 中的真实存在的错误。
系统架构和假定:
图 2:一个典型的 Control-CPS 架构
在本文中,我们仅关注符合以下假设的控制 CPS:
- Y(t)是连续且可微的,频率分量上限
- Δ<=
方法:
由此数学基础得到两点启发,最终提出代码跟踪准备方法,我们提出的方法主要服务于软件缺陷定位工具的三个主流系列:程序频谱,统计数据和机器学习。然后对提出的方法进行评估,该评估回答了以下研究问题:1.我们提出的方法如何对软件缺陷定位的质量做出影响的。2.我们提出的方法如何影响原始 Oracle 质量的。我们将在 ArduPilot 和 IP+CV 控制 CPS 测试台上进行评估,这些测试台上有来自真实或人工注入的各种错误,以回答上述研究问题。
经过评估后对研究问题的回答:
Q1:与人工 Oracle 方法相比,我们提出的方法显着提高了 TA 和 CR 软件缺陷定位的质量(在准确性(召回率)和延迟方面),改善幅度为中到大。
Q2:与人工 Oracle 相比,我们提出的方法显着提高了 Oracle 的原始质量(就假阳性/阴性率而言),改善幅度很大。
除了对注入的错误进行评估之外,我们还应用我们的方法来发现新的实际错误。
总结
在本文中,我们提出了基于 AR-SI 的 oracle 和用于控制 CPS 软件缺陷定位(SFL)的相应代码跟踪方法。 我们提出的方法是确定的,并可以自动运行。 我们评估了经典的控制 CPS 测试平台,该测试平台带有注入的真实和人工添加错误。 评估结果表明,我们提出的方法明显优于人工 Oracle 方法,在软件缺陷定位准确性(召回率)和等待时间以及 Oralce 错误率/阴性率方面实现了中到大型的提高。 使用我们的方法,我们还可以在消费者级控件 CPS 中发现了一个新的错误。
致谢
本文由南京大学软件学院 2020 级硕士郭安翻译转述。
相关推荐
- Linux基础知识之修改root用户密码
-
现象:Linux修改密码出现:Authenticationtokenmanipulationerror。故障解决办法:进入单用户,执行pwconv,再执行passwdroot。...
- Linux如何修改远程访问端口
-
对于Linux服务器而言,其默认的远程访问端口为22。但是,出于安全方面的考虑,一般都会修改该端口。下面我来简答介绍一下如何修改Linux服务器默认的远程访问端口。对于默认端口而言,其相关的配置位于/...
- 如何批量更改文件的权限
-
如果你发觉一个目录结构下的大量文件权限(读、写、可执行)很乱时,可以执行以下两个命令批量修正:批量修改文件夹的权限chmod755-Rdir_name批量修改文件的权限finddir_nam...
- CentOS「linux」学习笔记10:修改文件和目录权限
-
?linux基础操作:主要介绍了修改文件和目录的权限及chown和chgrp高级用法6.chmod修改权限1:字母方式[修改文件或目录的权限]u代表所属者,g代表所属组,o代表其他组的用户,a代表所有...
- Linux下更改串口的权限
-
问题描述我在Ubuntu中使用ArduinoIDE,并且遇到串口问题。它过去一直有效,但由于可能不必要的原因,我觉得有必要将一些文件的所有权从root所有权更改为我的用户所有权。...
- Linux chown命令:修改文件和目录的所有者和所属组
-
chown命令,可以认为是"changeowner"的缩写,主要用于修改文件(或目录)的所有者,除此之外,这个命令也可以修改文件(或目录)的所属组。当只需要修改所有者时,可使用...
- chmod修改文件夹及子目录权限的方法
-
chmod修改文件夹及子目录权限的方法打开终端进入你需要修改的目录然后执行下面这条命令chmod777*-R全部子目录及文件权限改为777查看linux文件的权限:ls-l文件名称查看li...
- Android 修改隐藏设置项权限
-
在Android系统中,修改某些隐藏设置项或权限通常涉及到系统级别的操作,尤其是针对非标准的、未在常规用户界面显示的高级选项。这些隐藏设置往往与隐私保护、安全相关的特殊功能有关,或者涉及开发者选项、权...
- 完蛋了!我不小心把Linux所有的文件权限修改了!在线等修复!
-
最近一个客户在群里说他一不小心把某台业务服务器的根目录权限给改了,本来想修改当前目录,结果执行成了根目录。...
- linux改变安全性设置-改变所属关系
-
CentOS7.3学习笔记总结(五十八)-改变安全性设置-改变所属关系在以前的文章里,我介绍过linux文件权限,感兴趣的朋友可以关注我,阅读一下这篇文章。这里我们不在做过的介绍,注重介绍改变文件或者...
- Python基础到实战一飞冲天(一)--linux基础(七)修改权限chmod
-
#07_Python基础到实战一飞冲天(一)--linux基础(七)--修改权限chmod-root-groupadd-groupdel-chgrp-username-passwd...
- linux更改用户权限为root权限方法大全
-
背景在使用linux系统时,经常会遇到需要修改用户权限为root权限。通过修改用户所属群组groupid为root,此操作只能使普通用户实现享有部分root权限,普通用户仍不能像root用户一样享有超...
- 怎么用ip命令在linux中添加路由表项?
-
在Linux中添加路由表项,可以使用ip命令的route子命令。添加路由表项的基本语法如下:sudoiprouteadd<network>via<gateway>这...
- Linux配置网络
-
1、网卡名配置相关文件回到顶部网卡名命名规则文件:/etc/udev/rules.d/70-persistent-net.rules#PCIdevice0x8086:0x100f(e1000)...
- Linux系列---网络配置文件
-
1.网卡配置文件在/etc/sysconfig/network-scripts/下:[root@oldboynetwork-scripts]#ls/etc/sysconfig/network-s...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle忘记用户名密码 (59)
- oracle11gr2安装教程 (55)
- mybatis调用oracle存储过程 (67)
- oracle spool的用法 (57)
- oracle asm 磁盘管理 (67)
- 前端 设计模式 (64)
- 前端面试vue (56)
- linux格式化 (55)
- linux图形界面 (62)
- linux文件压缩 (75)
- Linux设置权限 (53)
- linux服务器配置 (62)
- mysql安装linux (71)
- linux启动命令 (59)
- 查看linux磁盘 (72)
- linux用户组 (74)
- linux多线程 (70)
- linux设备驱动 (53)
- linux自启动 (59)
- linux网络命令 (55)
- linux传文件 (60)
- linux打包文件 (58)
- linux查看数据库 (61)
- linux获取ip (64)
- linux进程通信 (63)