16

我刚刚被介绍到“程序切片”这个术语。人们想要这样的功能是完全有道理的,但它是否存在于任何地方?

这个词现在已经 20 岁了,我看到有很多出版物、研究论文等。但实际的工具在哪里?人们实际上是在将这个概念付诸实践,还是只是在学术上研究它?

那里有什么,什么语言?

编辑:我想我在寻找什么,我会奖励作为接受的答案,是对一些出版物/组织/等的引用,这些出版物/组织/等特别适用于程序切片并维护工具/技术/等列表。

4

4 回答 4

10

[编辑](针对 OP 修订问题)

很长一段时间以来,我一直在关注文学作品。我不认为有一个“程序切片”中心有你想要的那种列表。大多数已构建的程序切片器都是某种大学实验(意味着它们不能在生产中工作,也不能用于实际目的)。你可以通过在scholar.google.com上搜索“程序切片”这个词来了解它们,猜猜看是什么;我怀疑你已经知道了。我想你已经在这里有了“大人物”。

这项调查有点陈旧,但由一位出色的研究人员完成:http ://www.cse.buffalo.edu/LRG/CSE605/Papers/slicing-survey-tip.pdf 。这是更新的: http ://dl.acm.org/citation.cfm?id=1050865 。

CodeSurfer是用于对 C 程序执行静态切片的商业工具。我相信他们也处理 C++。其他工具没有的一个重要优点是用于交互式探索代码切片的 UI。

Indus是用于在 Java 上进行静态代码切片的大学研究工具。我不确定这是否仍在积极开发中。

似乎有各种大学为 Java 构建的“动态”程序切片工具。据我所知,它们都没有在积极开发或使用中。

我的公司提供 DMS 软件再造工具包,其中包含用于程序控制和数据流分析的通用机制,包括构建自定义静态代码切片器。DMS 已被用于构建大型 C 程序的切片以及工业过程控制程序。(我会提供一个链接,但是当我这样做时,人们似乎讨厌它)。

于 2014-04-04T08:22:42.777 回答
6

专门用于分析 C 代码的Frama-C 平台有一个成熟的过程间切片插件。参见例如这个页面,用户使用这个插件来简化他正在分析的程序。

于 2014-04-02T22:47:58.100 回答
2

请看看吉里

动态程序切片是一种技术,可以精确地确定在程序的单次执行中哪些指令影响了特定值。Giri在 LLVM 编译器中实现动态向后切片。

该项目最初由 UIUC 的 Swarup Kumar Sahoo、John Criswell 和 Vikram S. Adve 博士开发。它在其伞形项目 LLVM 下被 Google Summer of Code (GSoC) 2013 选中。来自清华大学的刘明亮于 2013 年 6 月加入改进 Giri。这是一个正在进行的项目,非常感谢 pull requests。

于 2015-05-11T19:27:37.423 回答
1

看看Wala for Java。WALA 包含一个切片器,它基于系统依赖图中的上下文相关的可达性列表。

于 2014-10-16T14:39:45.080 回答