当前位置:首页 > 工业技术
程序切片技术及其应用
程序切片技术及其应用

程序切片技术及其应用PDF电子书下载

工业技术

  • 电子书积分:11 积分如何计算积分?
  • 作 者:李必信编著
  • 出 版 社:北京:科学出版社
  • 出版年份:2006
  • ISBN:7030169441
  • 页数:297 页
图书介绍:本书主要介绍程序切片的起源和发展,程序切片技术的图论基础,程序切片的各种变体(如静态切片、动态切片、有条件切片、并发切片、面向对象程序的切片、体系结构切片和规约切片等),计算程序切片的各种方法,以及程序切片技术在软件调试、波动分析、软件测试、度量、重用、程序理解、逆向工程和软件安全等方面的应用,并讨论了程序切片技术的发展趋向。本书适合作为高等院校计算机软件专业学生学习"软件工程"、"软件分析与测试"等课程的参考书或工具书,也适合作为软件分析与测试研究人员的参考书。上篇程序切片技术基本原理第1章 概论1.1 程序切片技术的起源和发展1.1.1 从数据流方程到程序依赖图1.1.2 从可执行的程序切片到不可执行的程序切片1.1.3 静态切片、动态切片和有条件切片1.1.4 后向切片和前向切片1.1.5 从源程序代码切片到软件规约切片1.1.6 从单一切片到多种切片1.2 程序切片技术的应用概述1.2.1 程序调试1.2.2 软件维护1.2.3 同归测试1.2.4 软件度量1.2.5 软件重用1.2.6 软件安全1.3 程序切片工具简介1.3.1 支持C语言的PST1.3.2 支持Ada语言的
《程序切片技术及其应用》目录

第1章 概论 3

1.1 程序切片技术的起源和发展 3

上篇 程序切片技术基本原理 3

1.1.1 从数据流方程到程序依赖图 4

1.1.2 从可执行的程序切片到不可执行的程序切片 5

1.1.3 静态切片、动态切片和有条件切片 6

1.1.4 后向切片和前向切片 7

1.1.5 从源程序代码切片到软件规约切片 7

1.1.6 从单一切片到多种切片 8

1.2.2 软件维护 9

1.2 程序切片技术的应用概述 9

1.2.1 程序调试 9

1.2.3 回归测试 10

1.2.4 软件度量 11

1.2.5 软件重用 11

1.2.6 软件安全 11

1.3 程序切片工具简介 12

1.3.1 支持C语言的PST 12

1.3.4 支持Java语言的PST 13

1.3.2 支持Ada语言的PST 13

1.3.3 支持Oberon-2语言的PST 13

1.3.5 其他PST 14

小结 14

思考题 14

参考文献 15

第2章 图论基础 17

2.1 控制流图 17

2.1.1 基本模块 17

2.1.2 控制流图定义 18

2.1.3 基本属性 19

2.2 控制流分析 20

2.2.1 控制流 20

2.2.2 控制流的表示方法 20

2.2.3 支配节点和后必经节点 21

2.2.4 循环识别 23

2.3 数据流分析 24

2.3.1 可到达定义 24

2.3.2 数据流方程 26

2.3.3 活性分析 28

2.4 数据依赖和控制依赖 30

2.4.1 控制依赖 30

2.4.2 数据依赖 31

2.5 程序依赖图 31

2.5.1 过程内依赖图 32

2.5.2 过程间依赖图 32

小结 32

参考文献 33

思考题 33

第3章 静态程序切片 35

3.1 引言 35

3.2 Mark Weiser程序切片 35

3.2.1 初步理解 36

3.2.2 基本术语 37

3.2.3 Mark Weiser的数据流算法 42

3.3 过程内切片 43

3.3.1 构造程序依赖图 43

3.3.3 例子分析 44

3.3.2 图可达性算法 44

3.4 过程间切片 46

3.4.1 构造系统依赖图 46

3.4.2 构造特征子图的算法 48

3.4.3 过程间切片的算法 51

小结 54

思考题 54

参考文献 54

4.1 引言 56

第4章 动态程序切片 56

4.2 基本术语 57

4.2.1 程序依赖图和静态切片 57

4.2.2 执行历史和动态切片准则 58

4.3 Agrawal和Horgan的动态切片 59

4.3.1 动态切片方法1 59

4.3.2 动态切片方法2 60

4.3.3 动态切片方法3 62

4.3.4 动态切片方法4 63

小结 65

4.4 Korel和Laski的动态切片 65

思考题 66

参考文献 66

第5章 有条件程序切片 68

5.1 引言 68

5.2 有条件切片 69

5.2.1 准静态切片 69

5.2.2 同时动态切片 70

5.2.3 一般的有条件切片模型 70

5.2.4 有条件切片计算 72

5.3 切片模型关系分析 76

5.4 分割分析 77

小结 78

思考题 78

参考文献 79

第6章 面向对象程序切片 80

6.1 引言 80

6.2 传统系统依赖图的缺陷分析 81

6.3.1 OOSDG的基本组成模型 83

6.3 面向对象系统依赖图 83

6.3.2 OOSDG对SDG的扩充 84

6.3.3 类依赖图 86

6.3.4 虚函数调用图的构造 88

6.3.5 OOSDG的构造算法 95

6.3.6 基于OOSDG的程序切片算法 97

小结 97

思考题 97

参考文献 98

7.1 引言 100

第7章 并发程序切片 100

7.2 Cheng的并发程序切片思想 101

7.3 Krinke多线程程序静态切片方法 102

7.3.1 线程控制流图 102

7.3.2 线程程序依赖图 104

7.3.3 基于tPDG的切片 105

7.4 Nanda和Ramesh的并发程序切片方法 109

7.5 并发程序的动态切片 112

7.5.1 进程图和静态程序依赖图 112

7.5.3 构建DPDG 113

7.5.2 进程图到并发图 113

7.6.1 Zhao的早期方法 114

7.6 面向对象并发程序的切片方法 114

7.6.2 Java并发程序的切片方法 115

小结 116

思考题 117

参考文献 117

8.1 形式规约切片 118

8.1.1 静态形式规约切片 118

第8章 规约切片 118

8.1.2 动态形式规约切片 121

8.1.3 其他形式规约切片 121

8.2 基于规约的程序切片 122

8.2.1 前置和后置条件 122

8.2.2 基于规约的切片 123

8.3 体系结构规约切片 126

8.3.1 体系结构规约 126

8.3.2 体系结构切片定义 128

8.3.3 体系结构信息流图和体系结构切片的计算 129

8.4 动态软件体系结构切片 130

8.5 JVM规约切片 131

小结 132

思考题 132

参考文献 132

第9章 新型切片变体 135

9.1 无定型切片 135

9.1.1 程序投影 135

9.1.2 无定型简单性度量 136

9.1.3 无定型静态切片 137

9.1.4 无定型有条件切片 138

9.1.5 无定型切片的实现以及相关问题 139

9.2 削片 139

9.2.1 静态削片 139

9.2.2 动态削片 140

9.2.3 削片的性质和构造策略 141

9.3 砍片 143

小结 143

参考文献 144

思考题 144

中篇 程序切片技术的基本应用 147

第10章 程序调试 147

10.1 引言 147

10.1.1 什么是程序调试 147

10.1.2 为什么用切片进行调试 148

10.2 如何用切片辅助程序调试 150

10.2.1 调试中的错误分析及切片选取 150

10.3.1 C-Debug 151

10.2.2 面向对象程序切片与调试 151

10.3 基于切片的调试工具 151

10.3.2 SPYDER 152

小结 153

思考题 154

参考文献 154

第11章 波动分析 155

11.1 引言 155

11.3.1 定义修改 157

11.3 后向切片存在的必要性 157

11.2 程序切片与REA过程 157

11.3.2 使用修改 158

11.3.3 控制修改 158

11.4 程序切片运算 159

11.5 直接波动和诱导波动 161

11.5.1 通用程序切片 161

11.5.2 REA例子 162

小结 163

参考文献 164

思考题 164

第12章 软件测试 165

12.1 引言 165

12.2 基于程序切片的软件测试 165

12.2.1 例子简介 166

12.2.2 依赖图模型 167

12.2.3 基本性质 169

12.3 回归测试 170

12.3.1 受影响的定义-使用关系类型 171

12.3.2 BackwardWalk算法 172

12.3.3 ForwardWalk算法 173

12.3.4 进一步讨论 176

12.3.5 回归测试的一般步骤 181

12.4 基于切片技术的软件测试工具模型 182

小结 184

思考题 184

参考文献 184

第13章 软件维护 186

13.1 引言 186

13.3 分解切片与软件维护 187

13.2 软件维护模型 187

13.3.1 分解切片 188

13.3.2 使用分解切片的几条规则 189

13.4 联合切片与软件维护 191

13.4.1 联合切片 191

13.4.2 利用联合切片维护软件 192

13.5 基于切片的软件维护模型 193

小结 193

思考题 193

参考文献 194

第14章 复杂性度量 195

14.1 引言 195

14.2 早期基于切片的度量 197

14.3 内聚度量 198

14.3.1 数据切片 198

14.3.2 胶水、强力胶水和粘性 200

14.3.3 内聚度量 200

14.3.4 类内切片和类内聚 202

14.4 耦合度量 205

14.4.1 Java源代码中存在的耦合问题分析 206

14.4.2 基于切片的Java耦合度量框架 210

小结 214

思考题 214

参考文献 214

第15章 软件安全 215

15.1 引言 215

15.2 软件安全分析的几种常用方法 216

15.2.1 失效模式效应分析法 216

15.2.3 Petri网分析法 217

15.2.2 软件故障树分析法 217

15.3.1 共同模式失效问题 219

15.3.2 临界安全组件 219

15.3 临界安全组件与软件故障树分析 219

15.4 基于程序切片的共同模式失效分析方法 220

15.4.1 基本原理 221

15.4.2 例子分析 222

小结 225

思考题 225

参考文献 225

第16章 软件重用 227

16.1 引言 227

16.2 转换切片与重用 228

16.3 有条件切片与重用 228

16.4 规约驱动切片与重用 230

16.5 软件体系结构切片与重用 233

思考题 234

参考文献 234

小结 234

第17章 应用扩展 235

17.1 程序分析理解 235

17.1.1 Lucia等人的初步思想 236

17.1.2 Korel的大型程序理解手段 237

17.1.3 Kumar的CONCEPT技术 238

17.2 逆向工程和再工程 239

17.2.1 传统切片 239

17.2.2 接口切片 240

17.3.1 静态语义规约和类型检查 241

17.3 Tip的类型错误定位方法 241

17.3.2 项重写和依赖追踪 242

17.3.3 切片精确度问题 243

17.4 程序验证 244

17.5 其他应用 245

小结 245

思考题 246

参考文献 246

第18章 层次切片模型及其实现 251

18.1 面向对象程序的层次结构模型 251

下篇 程序切片技术展望 251

18.2 层次切片模型 252

18.3 SSA算法的基本思想 253

18.4 HSM和SSA的实现 254

18.4.1 代码信息树 256

18.4.2 依赖图的生成算法和切片算法 262

18.5 Jato——Java程序切片工具 273

18.5.1 依赖图生成层 274

18.5.2 切片生成层 275

18.6 层次切片复杂度 277

小结 278

思考题 278

参考文献 278

第19章 层次切片模型的应用 280

19.1 静态信息流分析 280

19.2 耦合度量 282

19.2.1 方法m1和m2之间的耦合度量 283

19.2.2 类c的耦合度量 283

19.3.2 功能内聚 284

19.3.1 子功能内聚 284

19.3 内聚度量 284

19.4 复杂度度量 285

小结 286

思考题 286

参考文献 286

第20章 结束语 288

20.1 基本原理总结 288

20.2 基本应用总结 288

20.3.2 无定型程序切片 289

20.3.1 程序切片的形式语义 289

20.3 未来研究课题 289

20.3.3 规约切片 290

20.3.4 基于规约程序切片 290

20.3.5 软件体系结构切片 290

20.3.6 程序切片应用 290

参考文献 291

附录 293

附录A 汉英名词对照 293

附录B 缩略语英汉对照 296

相关图书
作者其它书籍
返回顶部