130 likes | 301 Views
程序分析与程序验证. 计算机科学技术系 陈意云 0551-3607043 yiyun@ustc.edu.cn. 课 程 简 介. 计算机科学的理论体系 1 、模型理论 关心的问题 给定模型 M ,哪些问题可以由模型 M 解决 如何比较模型的表达能力 经典计算 确定的图灵机,可计算性理论属于模型理论 新型计算 本质特点是交互 ( 并发、分布、网络、网格、云 ) 计算和交互的统一模型理论尚未出现. 课 程 简 介. 计算机科学的理论体系 2 、程序理论 关心的问题 给定模型 M ,如何用模型 M 解决问题
E N D
程序分析与程序验证 计算机科学技术系 陈意云 0551-3607043 yiyun@ustc.edu.cn
课 程 简 介 计算机科学的理论体系 1、模型理论 关心的问题 • 给定模型M,哪些问题可以由模型M解决 • 如何比较模型的表达能力 经典计算 • 确定的图灵机,可计算性理论属于模型理论 新型计算 • 本质特点是交互( 并发、分布、网络、网格、云 ) 计算和交互的统一模型理论尚未出现
课 程 简 介 计算机科学的理论体系 2、程序理论 关心的问题 • 给定模型M,如何用模型M解决问题 包括的领域 • 程序设计范型、程序设计语言、程序设计、形式语义、类型论、程序验证、程序分析等
课 程 简 介 计算机科学的理论体系 3、计算理论 关心的问题 • 给定模型M和一类问题,解决该类问题需要多少资源 包括的领域 • 计算复杂性理论
课 程 简 介 作为编译原理的后续课程,可选内容列举: • 独立于机器的优化(涉及,但不是重点) • 依赖于机器的优化(留给高级系统结构课程) • 形式语义和类型论(程序设计语言理论课程) • 各种语言范型的实现技术(不涉及) • 提高软件质量的方法 1、程序分析 2、形式验证 模型检测:对软件的数学模型进行系统地全面考察 程序验证:用形式方法对软件进行数学推理
课 程 简 介 • 本课程概述 • 学习程序分析和形式验证的基本原理,它们在高可信软件、代码优化、并行编译等许多方面有广泛应用 • 学习和讨论各类方法解决的问题、采用的技术、理论特性、算法等,并说明这些方法之间的关系和不同。这些方法本身跨越多种程序设计语言特征
课 程 简 介(程序分析原理) • 什么是程序分析 • 一种静态(如编译时)的技术,用于预测程序运行时动态布局或行为的一种安全(忠实于语义)且有效(所需时空少)的近似 • 程序分析的应用 • 编译时的代码优化,以避免冗余计算 公共子表达式删除、无用赋值删除、循环优化 • 一些静态分析工具,用于分析所关心的程序性质 程序切片工具、安全性 • 程序验证
课 程 简 介(程序分析原理) • 集中在四种主要程序分析方式上 • 数据流分析(data flow analysis) • 基于约束的分析(constraint based analysis) • 抽象解释(abstract interpretation) • 类型和结果系统(type and effect system) • 对每种方式 • 描述主要原理,而不是技术的详细介绍 • 怎样用到更复杂编程语言的分析
课 程 简 介(模型检测) • 什么是模型检测 • 验证系统满足性质( )的方法。它操作在系统的模型 (语义)上,而不是在系统的描述(语法)上 • 模型检测的应用 • 常用于硬件和通信协议的验证中 • 模型检测方法已经在工业界逐步得到应用,并且有一些较好的工具
课 程 简 介(模型检测) • 集中在采用下面两种逻辑的方法上 • 线性时态逻辑:时间是线性的逻辑 • 计算树逻辑:时间可以分支的逻辑 (时态逻辑:公式的真假不是静态的) • 模型检测的大体步骤 • 由用户描述的一个模型开始 • 判断用户所断言的假设在模型中是否有效 • 若无效,则产生由执行轨迹构成的反例
课 程 简 介(程序验证) • 什么是程序验证 • 将基于逻辑证明的方法用于程序性质的证明 1、系统的描述是适当逻辑中的一组公式 2、待证性质的规范是另一个公式 3、验证就是通过该逻辑来证明 • 程序验证的应用 • 对安全攸关的程序,验证所关心的性质 • 软件的机械验证将改进软件的生产率、效率、reliability
课 程 简 介(程序验证) • 程序验证的大体步骤 • 程序员提供附加了适当断言的程序 • 验证条件生成器为该程序产生验证条件 • 定理证明器完成验证条件的证明 • 涉及机械验证过程的各主要部分 • Hoare逻辑(公理语义)、最弱前条件演算 • 从程序到定理 ——验证条件生成 • 从定理到证明 ——自动定理证明
课 程 简 介 教材和参考书 • F. Nielson, H. R. Nielson, and C. Hankin, Principles of Program Analysis, 2nd edition, Springer, 2005 • A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman, Compilers: Principles, Techniques, and Tools, 2nd edition, Addison-Wesley, 2007 • M. Huth and M. Ryan, Logic in Computer Science: Modelling and Reasoning about Systems, Cambridge University Press, Second Edition, 2004(有中译本) • 教学资源网页:http://staff.ustc.edu.cn/~yiyun http://www2.imm.dtu.dk/~riis/PPA/ppasup2004.html