程序切片(定义+用途)

news/2024/7/10 0:49:11 标签: java, 架构, 目标检测, 分类, 回归

程序切片(定义+用途)

介绍
让我们假设我们测试了一个程序 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.niftyadmin.cn/n/382607.html

相关文章

【开发心得】一招减少msdtc时间3分钟,但还有未解之谜

最近解决了一个诡异的问题,MSDTC默认超时造成事务被取消,业务被迫中断,好在没有一直跟MSDTC耗着,而是通过其他方式解决了,但最后还是留下了两个未解之谜。对用到MSDTC处理SQL事务的朋友应该有借鉴作用,欢迎…

JavaScript实现模拟登录

来源网站:JavaScript实现模拟登录 – WhiteNights Site 2023年6月1日 最近在搞爬取深圳技术大学的教务系统,搞定之后做个笔记。 实际上搞定模拟登录之后后面的就很简单了,只剩下爬课表和转json要处理。 前置准备与puppeteer包 A high-level…

菜鸟云打印

安装菜鸟打印组件 https://support-cnkuaidi.taobao.com/doc.htm#?docId108934&docType1 Html: <% Page Language"C#" AutoEventWireup"true" CodeBehind"JS_CloudPrint.aspx.cs" Inherits"Demo.JS_CloudPrint" %><!D…

2023年6月跟资深软考辅导专家学习备考软考(中/高级)到这家

软考是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资格考试。 系统集成…

签名支持全球管控AI 三巨头侧漏“求生欲”

又一封“群星云集”警示AI风险的公开信来了&#xff0c;这封信的内容简短但措辞炸裂&#xff1a;减轻 AI 带来的灭绝风险&#xff0c;应该与管控流行病和核战争等其他社会级规模的风险一样&#xff0c;成为一项全球优先事项。 5月30日&#xff0c;这纸原文只有22个单词的声明&…

数据库设计范式及常用规范

数据库设计范式 数据库设计范式是指在关系型数据库中为了避免数据冗余和数据更新异常而特定的设计规则。目前&#xff0c;常用的数据库设计范式包括第一范式&#xff08;1NF&#xff09;、第二范式&#xff08;2NF&#xff09;、第三范式&#xff08;3NF&#xff09;以及BC范式…

计算机网络 | I/O模型、网络模型(OSI七层及TCP/IP四层)

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

代码随想录算法训练营第58天 | 739、496

739. 每日温度 题目描述 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。…