基本信息
- 原书名:Program Analysis Methods
编辑推荐
国内首本程序分析方法著作,资深专家撰写,权威性毋庸置疑。
本书全面系统地讲解了诸多实用的程序分析方法。
内容简介
书籍 计算机书籍
《程序分析方法》共7章,第1章介绍程序设计语言的历史以及未来的发展趋势;第2章介绍元程序设计,包括元程序的概述、元程序系统及其应用;第3章介绍信息流分析技术;第4章介绍别名分析的相关知识;第5章介绍程序分片的基础知识和方法;第6章介绍形式概念分析的相关知识和应用;第7章介绍部分求值技术的相关内容。
《程序分析方法》可作为计算机相关专业本科高年级学生及研究生教材,也可作为程序开发人员的参考用书。
作译者
刘磊 吉林大学教授,现任吉林大学第一届教学委员会委员、信息学部学术委员会副主任委员和计算机科学与技术学院学术委员会主任委员,兼任吉林省高等学校软件新技术重点实验室(吉林大学)主任。主要研究领域为程序设计语言及其实现技术、软件安全与云计算、语义网与本体工程等,主要在程序分析技术、程序理论、编译技术、程序转换技术、语义网等方面,进行了不断的探索和潜心研究,取得了一系列有价值的研究成果。主持和参与了国家级、省部级项目和横向项目30余项。在《Pattern Recognition》、《计算机学报》、《软件学报》等国内外权威期刊和会议上发表论文 160余篇。
目录
前言
第1章 程序设计语言
1.1 程序设计语言发展的四个阶段
1.1.1 机器语言
1.1.2 汇编语言
1.1.3 高级语言
1.1.4 第四代语言
1.2 程序设计语言的发展趋势
小结
第2章 元程序设计
2.1 元程序介绍
2.2 元程序设计系统
2.2.1 元程序系统的组成
2.2.2 中间表示
2.2.3 规则分类和对应的结构
2.2.4 元级操作
2.2.5 系统的生成
2.3 元级系统的实际应用
2.3.1 如何构造高效的系统
2.3.2 几个元级系统的介绍
小结
第3章 信息流分析
3.1 控制流分析
3.1.1 控制流分析实例
3.1.2 控制流分析方法
3.1.3 程序的结构化转换
3.2 数据流分析技术
3.2.1 数据流方程定义和活跃变量分析
3.2.2 数据流异常的检测
3.2.3 常量表达式节省
3.2.4 公共子表达式节省
3.3 信息流分析技术的应用实例
3.3.1 方法描述
3.3.2 应用
小结
第4章 别名分析
4.1 指针别名
4.1.1 指针别名的产生
4.1.2 别名信息的分类
4.2 别名信息的表示
4.2.1 别名信息的表示介绍
4.2.2 别名计算
4.3 C语言的别名计算
4.3.1 C语言的别名采集器
4.3.2 C语言的别名传播器
4.4 Java的别名分析
4.4.1 Java中的别名问题
4.4.2 别名分析算法
小结
第5章 程序分片
5.1 程序分片的基础知识
5.1.1 程序分片的基本概念
5.1.2 一些常见的程序分片方法
5.1.3 程序分片的应用
5.2 程序分片方法
5.2.1 基于数据流方程求解的过程内分片
5.2.2 基于数据流方程求解的过程间分片
5.2.3 基于程序依赖图的过程内分片
5.2.4 基于系统依赖图的过程间分片
5.2.5 动态分片
5.2.6 条件分片
小结
第6章 形式概念分析
6.1 FCA和格理论基础介绍
6.1.1 偏序集及完全格的基本概念
6.1.2 Galois连接
6.2 FCA的基本概念
6.2.1 上下文
6.2.2 概念
6.2.3 概念格
6.2.4 多值上下文
6.2.5 概念格的生成算法
6.2.6 生成概念格的工具
6.3 概念格在程序分析中的应用
6.3.1 概述
6.3.2 从源程序中推导配置结构
6.3.3 从遗留软件中提取类或模块
6.3.4 重构类结构
6.3.5 动态分析
小结
第7章 部分求值技术
7.1 部分求值技术基本原理
7.1.1 Kleene的s-m-n理论
7.1.2 部分求值器的定义
7.2 几种部分求值技术的介绍
7.2.1 静态部分求值方法
7.2.2 动态部分求值技术
7.2.3 动静态结合的部分求值技术
7.3 Futamura投影定理
7.3.1 第一投影定理
7.3.2 编译器的生成与第二投影定理
7.3.3 第三投影定理
7.4 程序点例化技术
7.4.1 状态、程序点和分割
7.4.2 程序点例化
7.4.3 不同语句的代码生成
7.4.4 转换压缩
7.4.5 正确的分割技巧
7.4.6 简单绑定时间分析
小结
参考文献
前言
程序分析是以某种语言编写的程序为对象,对其内部的运作流程进行分析的过程。通过程序分析,可以帮助人们更好地理解程序内部各模块之间的调用关系,把握程序的运行流程,也可以帮助人们找出系统运行的瓶颈,指导系统优化,还可以用于系统测试和程序调试,找出系统Bug,以及进行错误定位。因此,程序分析是一种非常实用的技术,深入理解并熟练掌握程序分析相关的方法和技术,对于增强对程序设计语言的理解,掌握先进的程序设计方法,更好地分析和理解程序都有很大帮助。程序分析是计算机专业人员必备的一种技术,同时也应该成为计算机专业、软件工程专业学生(本科生、研究生)今后进行科学研究的专业必修课。
本书作者多年来一直为吉林大学计算机专业、软件工程专业的研究生讲授程序分析的课程,因内容广泛、方法实用,该课程深受学生欢迎。遗憾的是,这门课程一直缺少相应的教材,国内这方面的参考书也非常少。鉴于此,本书作者根据自己多年的教学和科研经验,在以往研究生授课讲义的基础上编写了此书。本书旨在向读者介绍程序分析的各种方法、技巧。
程序分析包含的范围非常广泛,考虑到教学方便和学生需求,作者尽可能地选取那些比较实用、应用范围较广、内容跟得上时代发展的程序分析方法。本书选取的程序分析方法有:元程序设计、数据流分析、控制流分析、部分求值、形式概念分析、程序分片、程序转换等。程序是与程序设计语言紧密相关的,为此,作者又特别增加了一章,即程序设计语言部分。
本书具有如下特点:
1)在内容安排上,每一章介绍一个专题,每个专题自成体系,读者可以根据需要选取感兴趣的专题进行阅读。根据专题内容的不同,介绍的侧重点也各有不同:有的侧重原理的讲解、有的侧重应用实例的分析、有的侧重算法的设计,尽量做到重点突出、讲解透彻,非常适合本科生高年级和研究生阶段的学习特点。
2)对于书中的许多专题,在介绍基本内容的同时,又融入了我们自己的许多科研成果,如元程序设计专题中的面向对象元程序设计方法;部分求值专题中的过程式语言的动态部分求值和静态部分求值技术;程序分片专题中的过程间的程序分片技术等。
3)我们力争把最新的技术和方法介绍给广大的读者,如近年来比较热门的形式概念分析技术等。
4)将程序分析技术的几方面的知识合为一体,读者可以通过本书学习到多方面的内容,免去了查找相关资料的烦恼。
金成植对于本书的编写给予了大力支持和帮助,刘华虓、张鑫、刘冬清、郭骐凯等对全书进行了校对,在此向他们表示衷心的感谢。
由于作者水平和时间限制,书中难免存在疏漏和不足之处,恳请广大读者批评指正。
作 者
2013年2月