向后切片,正向切片和其他形式的切片

news2024/11/28 20:33:51

向后切片,正向切片和其他形式的切片

向后切片Backward Slices
假设我们希望确定哪些语句影响节点 n。
这是由 n 和在 n 处引用的变量。
我们只是:
从 n 回溯控制和流依赖边。
我们保留由此到达的节点。
在这里插入图片描述
一般后向切片
通常,我们的切片标准是一个节点和一个变量集 V。
PDG 可能不包含表示此切片标准的节点。
对于后向切片,我们可以:
在 n 之前添加一个新节点 n’; 让新节点 n’ 引用 V 中的变量
然后我们生成 PDG 并从中追溯依赖关系节点 n’。

正向切片Forward Slices
假设我们希望确定哪些语句受到影响由节点 n。
这是由 n 和分配给 n 的变量形成的标准的前向切片。
我们只是:
从 n 向前追踪控制和流依赖边。
我们保留由此到达的节点。
在这里插入图片描述
通用前向切片
通常,我们的切片标准是一个节点和一个变量集 V。
和以前一样,PDG 可能不包含代表这个切片标准。
对于前向切片,我们可以:
在n之前添加一个新节点n’;将新节点n’分配给V中的变量
然后我们生成 PDG 并从 n’ 向前跟踪依赖关系。

Backward PDG 和 Forward PDG 相同的原因:
在这个特定的程序中,后向 PDG 和前向 PDG 是相同的。 这是因为该程序不包含任何可以创建不同执行路径的循环或条件。 因此,无论分析方向如何,语句之间的数据和控制依赖关系都保持不变。

PDG 将显示以下依赖项:

  • 输入语句 (1) 取决于 x 和 y 的值。
  • 赋值语句 (2) 取决于 x 和 y 的值。
  • if 语句 (3) 取决于 x 和 y 的值。
  • if 和 else 块(4 和 5)内的赋值语句取决于 z、x 和 y 的值。
  • 递增语句 (6) 取决于 x 的值。
  • 输出语句 (7) 取决于 z 的值。
    由于无论分析方向如何,语句之间的依赖关系都保持不变,因此在这种情况下,后向 PDG 和前向 PDG 将是等价的。

因此,对于给定的程序,由于没有复杂的控制流结构,后向 PDG 和前向 PDG 是相同的。

切片标准
在程序切片中,切片标准指的是计算切片的特定程序点或感兴趣的变量。 它定义程序中切片分析的起点,并确定生成的切片中包含哪些语句。

切片标准可以根据所需的结果和分析目标以不同的方式定义。 以下是一些常见的切片标准:

  1. 程序点准则:切片准则是代码中的特定语句或程序点。 切片包括所有直接或间接影响程序点执行或受其影响的语句。

  2. 变量准则:切片准则是代码中的特定变量。 切片包括所有直接或间接影响变量值计算或受变量值影响的语句。

  3. 控制流准则:切片准则是代码中特定的控制流条件,例如if语句或循环条件。 切片包括直接或间接影响控制流条件的评估或受其影响的所有语句。

  4. 数据流准则:切片准则是代码中特定的数据流依赖关系,例如变量的赋值或使用。 切片包括所有直接或间接影响变量数据流或受其影响的语句。

切片标准的选择取决于具体的分析目标和感兴趣的信息。 通过定义切片标准,分析可以集中在与该标准相关的相关语句和依赖项上。 生成的切片提供了原始程序的一个子集,该子集捕获与切片标准相关的依赖关系和行为,有助于各种软件工程任务,例如调试、程序理解和代码优化。

其他形式的切片

动态切片Dynamic Slicing
在动态切片中,我们将输入作为切片的一部分标准。
我们可能会问:
什么语句影响节点 n 处 V 中变量的值,假设输入是 s(一些已知的 s)?
在动态(向后)切片中,我们可以删除不影响该输入的切片标准的语句。

当我们说某些语句不影响动态(向后)切片中特定输入的切片标准时,这意味着从程序中删除或删除这些语句不会改变导致满足切片标准的计算或行为或 为该输入触发。
通过删除不影响切片标准的语句,生成的动态切片变得更小,并且更专注于直接有助于观察到的行为的程序的基本部分。 这有助于代码的调试、优化和理解,因为不相关的语句被消除,开发人员可以专注于与切片标准相关的关键部分。
值得注意的是,确定哪些语句不影响切片标准可能是一项非常重要的任务,尤其是在不同部分之间具有依赖性和交互的复杂程序中。 各种技术,如数据流分析和程序依赖分析,被用来识别这些语句并有效地执行动态切片。

动态切片的好处:
据观察:
静态切片通常非常大。对于某些问题(例如调试),我们有实际的输入。通过包含此输入,我们可以获得更小的切片。

虽然使用输入信息进行动态切片可能是有益的,但请务必注意,在捕获和分析输入数据方面可能需要额外的开销。 此外,动态切片依赖于程序执行期间使用的实际输入的可用性,这可能并不总是可行或实用的。 因此,静态切片和动态切片之间的选择取决于具体场景和可用资源。

条件切片Conditioned Slicing
我们没有向切片标准添加输入,而是添加了输入条件。
例如,我们可能会问:
如果输入满足属性 x > 0?
更通用,但通常需要更复杂的工具才能生成。

非晶切片Amorphous Slicing
在无定形切片中,我们可以应用任何保留感兴趣的语义的简化步骤。
不只是语句删除。这可以允许更大的简化。
对于某些问题领域很有用,例如理解。

非晶切片示例:
在这里插入图片描述

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

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

相关文章

【CMake 入门与进阶(1)】一个例子搞懂什么是CMakeLists——从“Hello World”开始(附代码)

在前面两篇内容中,我们编写了很多示例程序,但这些示例程序都只有一个.c 源文件,非常简单。因此,编译这些示例代码其实都非常简单,直接使用 GCC 编译器编译即可,连 Makefile 都不需要。但是,在实…

中国人民大学与加拿大女王大学金融硕士项目——在职攻读金融硕士,努力迈进高阶人生

学历重要吗?入职门槛、晋升、考公等多方面都考核学历。学历代表的并不只是学习经历,也是学习能力的体现。在快速发展的社会,学历越高,学习能力越强,机会就越多。金融行业在职的你,有计划在职攻读硕士学位吗…

如何在 K3s 中使用网络策略

本文将介绍如何在示例项目中使用网络策略,并解释它在 K3s 中的工作原理,从而帮助用户提高部署的安全性。 关于 K3s 对网络策略的支持存在一个普遍的误解,因为 K3s 默认使用 Flannel CNI,而 Flannel CNI 不支持网络策略。其实&…

Docker+Jenkins+Gitee+Pipeline部署项目

1.前言 Hello,各位小伙伴大家好。😄 在上一篇文章【DockerJenkinsGitee自动化部署maven项目】中,咱们详细介绍了如何自动化部署maven项目,如果说你的项目仅仅为maven项目,那么这种部署方式是很契合的,如果…

超全,Selenium4自动化测试并行测试详解,进阶之路看这篇就够了...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Selenium4 自动化测…

万字解析PELT算法!

Linux是一个通用操作系统的内核,她的目标是星辰大海,上到网络服务器,下至嵌入式设备都能运行良好。做一款好的linux进程调度器是一项非常具有挑战性的任务,因为设计约束太多了: 它必须是公平的快速响应系统的throughp…

如何学习R-Meta分析与【文献计量分析、贝叶斯、机器学习等】多技术融合?

专题一:Meta分析的选题与文献计量分析CiteSpace应用 1、Meta分析的选题与文献检索 1) 什么是Meta分析 2) Meta分析的选题策略 3) 文献检索数据库 4) 精确检索策略,如何检索全、检索准 5) 文献的管理与清洗,如何制定文献纳入排除标准 6…

第一行代码 第十四章 开发酷欧天气

第14章 开发酷欧天气 在本章将编写一个功能较为完整的天气预报程序。 功能需求及技术可行性分析 在开始编码之前,需要先对程序进行需求分析,想一想酷欧天气中应该具备哪些功能。将这些功能全部整理出来: 可以罗列出全国所有的省、市、县&…

英飞凌 AURIX-TC3XX:QSPI通信实验

目录 AURIX-TC3XX-QSPI通信实验1.QSP简介1.1、AURIX TC3XX QSPI个数1.2、QSPI功能特点1.2.1、QSPI外设的新特性1.2.2、一些独特的特性1.2.3、支持传统的SPI特性1.2.4、四种可供用户选择的传输模式 2、具体实验操作2.1、新建工程2.2、实验一 3、域控制器中常见的SPI通信方式3.1、…

ble常见概念

0. 蓝牙一些常见概念 参考:https://www.bilibili.com/video/BV1ad4y1d7AM 基于ESP32来了解蓝牙协议的一些东西 蓝牙广播 包组成结构 低功耗蓝牙一共有40个信道,频段范围从2402Mhz-2480Mhz,每2Mhz一个信道,37 38 39 是广播信道…

基于linux的程序库文件打包和调用的实现(一)——静态库文件打包和调用

随着技术的发展,基于linux项目的软件代码越发复杂,原来一个人可以完成的软件项目,现在可能需要多个人合作、多个部门合作、多个企业合作,每个人、每个部门、每个企业可能负责部分软件模块的开发。各个软件模块在调试过程由于涉及企…

DeFi 发展沃土,Uniswap 成功“登陆” Moonbeam

作者:OneBlock 去年 3 月底,Uniswap 社区发布一项全新治理提案,旨在通过社区授权于 Polkadot 生态智能合约平台 Moonbeam 上部署 Uniswap V3,将 Uniswap 扩展至 Polkadot 生态。在这项提案中,Uniswap 计划除了提供流动…

极兔抢滩IPO,李杰不止缺一个丰网

(图片来源于网络,侵删) 来源 | 螳螂观察 文 | 叶小安 物流业打响了上市“抢滩战”。 5月,顺丰控股传出2023年在香港二次上市消息;紧接着极兔也传出将于下半年赴港上市消息;另一边,阿里主席张…

最新自助建站系统源码 一键建站系统源码 含700+精美网站模板和搭建教程

分享一款最新自助建站系统源码,一键建站系统源码,傻瓜式一键建站含700精美网站模板,网站全是自适应响应式,含完整代码程序包和详细搭建教程。 系统模板页面图: 系统功能特色一览: 1、一次性打包&#xff0…

chatgpt接口返回参数分析

接口请求使用二进制请求,数据流式返回,即分块(分批次)返回。 问题:一周有几天 请求头 参数详解 参数名称 说明 role 消息发送者的角色,这里为 "assistant"。 id 消息的唯一标识符。 pare…

图的基本概念和存储

基本概念 基本概念 图的定义:图(Graph)一般由两个集合共同构成,一个是非空但是有限的顶点集合V(Vertex),另一个是描述顶点之间连接关系的边集合E(Edge),边集合可以为…

4.信息安全之数据恢复

1.数据容灾数据备份 RPO(recovery point object)数据恢复点目标 数据丢掉多少可接受 RTO(recovery time object)数据恢复时间目标 恢复数据需要多少时间 2.系统灾难原因 1.硬件 2.人为 3.软件 4.病毒 5.自然灾害 3.容灾级别 数据级别(数据出错)<应用(某个功能不能使用)<业…

运维小白必学篇之基础篇第二集:文件系统结构和目录管理

文件系统结构和目录管理实验 实验者&#xff1a;胡 阳 目录 一、将虚拟机主机名改为自己的名字 二、完成以下操作&#xff1a; 一、将虚拟机主机名改为自己的名字 例如&#xff1a;hostname liangyuntong 关闭该终端后&#xff0c;重新打开即可 二、完成以下操作&#…

【AIGC】CPM-BEE 开源大模型介绍、部署以及创建接口服务

终于! 中文基座模型CPM-Bee开源了 # CPM-Bee 百亿参数的开源中英文双语基座大模型 ✨ 模型介绍 CPM-Bee是一个完全开源、允许商用的百亿参数中英文基座模型&#xff0c;也是CPM-Live训练的第二个里程碑。它采用Transformer自回归架构&#xff08;auto-regressive&#xff0…

直播预告丨SaaS+CG?UE影视级场景渲染与科学制片全流程揭秘!

余热不减&#xff01;在第二届瑞云3D渲染动画创作大赛赛果公布 后&#xff0c;小瑞紧锣密鼓在安排获奖选手的系列专场直播。在上期的“ 泛CG 聚未来 ” 第四届实用技术线上分享会中,咱们邀请到大赛专业组冠亚军“3ds Max老法师”彼尔德和“Maya大神”Shuiguo 分享了自己的创作历…