计算机科学技术系 陈意云 0551-3607043 yiyun@ustc.edu.cn 程序分析与程序验证 计算机科学技术系 陈意云 0551-3607043 yiyun@ustc.edu.cn.

Slides:



Advertisements
Similar presentations
第五节 函数的微分 一、微分的定义 二、微分的几何意义 三、基本初等函数的微分公式与微分运算 法则 四、微分形式不变性 五、微分在近似计算中的应用 六、小结.
Advertisements

2.5 函数的微分 一、问题的提出 二、微分的定义 三、可微的条件 四、微分的几何意义 五、微分的求法 六、小结.
ASP .NET 程序设计(C#版) 第二版 机械工业出版社同名教材 配套电子教案
——Windows98与Office2000(第二版) 林卓然编著 中山大学出版社
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
可信软件的前沿理论和技术 计算机科学与技术学院 中科大-耶鲁高可信软件联合研究中心 邵中、陈意云、张昱、郭宇、李兆鹏等
证券投资技术分析.
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
实用操作系统概念 张惠娟 副教授 1.
人工智能技术导论 廉师友编著 西安电子科技大学出版社.
UI(用户界面)集训班 Illustrator 高级班.
形式化验证的非正式介绍 南京大学计算机系 赵建华.
中国科学技术大学 计算机科学与技术学院 陈意云
关于本门课程.
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
计算机基础知识 丁家营镇九年制学校 徐中先.
施耐德电气(中国)投资有限公司 运动控制部技术经理 李幼涵 高级工程师
程序的形式验证 - 简介 中国科学院软件研究所 张文辉 1.
《数据库原理及应用》课程介绍 信息工程学院 孙俊国
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
计算机网络原理 徐明伟
嵌入式系统课程简介 宋健建 南京大学软件学院 2004/02/10.
Computer Graphics 计算机图形学基础 张 赐 Mail: CSDN博客地址:
R in Enterprise Environment 企业环境中的R
大学计算机基础 典型案例之一 构建FPT服务器.
管理信息结构SMI.
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
数 控 技 术 华中科技大学机械科学与工程学院.
What have we learned?.
模型验证器VERDS Wenhui Zhang 31 MAY 2011.
第二章 Java语言基础.
数据挖掘工具性能比较.
动态规划(Dynamic Programming)
《编译原理与技术》 期末复习 计算机科学与技术学院 郑启龙 李 诚 25/12/2018.
分布式程序设计 姚斌 计算机科学与工程系 上海交通大学.
DevDays ’99 The aim of this mission is knowledge..
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
Unit 11.Operating System 11.1 What’s OS 11.2 Related Courses
程序设计工具实习 Software Program Tool
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
你可以选择题目难度 你可以寻求多方帮助 但是,你不能 -不做 -拷贝 ….
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
C语言程序设计 主讲教师:陆幼利.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
$9 泛型基础.
编译原理.
Cassandra应用及高性能客户端 董亚军 来自Newegg-NESC.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
程序的形式验证 张文辉
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
程序验证工具的研究 中国科学技术大学 陈意云
iSIGHT 基本培训 使用 Excel的栅栏问题
<编程达人入门课程> 本节内容 计算机编程语言 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
第八章 总线技术 8.1 概述 8.2 局部总线 8.3 系统总线 8.4 通信总线.
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
Parallel Programming Xuanhua Shi/Pingpeng Yuan
计算机绘图 AutoCAD2016.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
第二节 C语言的特点.
离散数学 计算机系 陈翌佳.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
Copyright © 2004 HRBEU.605. All Rights Reserved
第十七讲 密码执行(1).
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
入侵检测技术 大连理工大学软件学院 毕玲.
编译原理实践 6.程序设计语言PL/0.
Presentation transcript:

计算机科学技术系 陈意云 0551-3607043 yiyun@ustc.edu.cn 程序分析与程序验证 计算机科学技术系 陈意云 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