软件分析技术(Software Analysis)
课程信息
学分: | 3 | ||
周学时: | 3 | ||
总学时: | 54 | ||
上课时间: | 每周周二 5-6节 双周周四3-4节 | ||
上课地点: | 三教 103 | ||
任课教师: | 熊英飞 xiongyf@pku.edu.cn | ||
授课对象: | 本科生 | ||
课程助教: | 陈逸凡 yf_chen@pku.edu.cn | 朱琪豪 zhuqh@pku.edu.cn | 叶振涛 ztye@pku.edu.cn |
课程通知
作业提交方式:通过邮件附件将作业发送到ruanfen2022@163.com,邮件标题为“软分作业[k]-[姓名]-[学号]”。
如无特别声明,作业的截止日期为下一周上课之前。
课程简介
对软件代码进行分析是各种软件工程工具的基本手段之一。典型软件开发工具比如编译器、代码编辑器、测试与调试工具等等都离不开对软件代码进行分析。在工业界,各大公司的基础平台部门对掌握软件分析技术的人才有大量需求;在学术界,软件分析技术是程序设计语言和软件工程领域开展研究的必备基础知识之一。但是,软件分析技术相关文献存在内容广,流派多,数学基础要求高等方面的特点,使得学习软件分析技术一直是一件很困难的事。本课程希望通过对这一类技术进行通俗易懂的讲解,帮助同学们构建较完整的软件分析技术知识体系,了解该领域的前沿知识,学术上为进一步开展程序设计语言和软件工程领域的学术研究打下基础,在实践上培养开发大型软件工程工具的开发能力。
课程内容
- 基于抽象解释的程序分析(数据流分析、过程间分析、指针分析、抽象解释、抽象解释的自动化等)
- 基于约束求解的程序分析(SAT、SMT、符号执行等)
- 软件分析应用(程序合成、缺陷定位、缺陷修复等)