软件分析技术(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]-[姓名]-[学号]”。

如无特别声明,作业的截止日期为下一周上课之前。

课程简介

对软件代码进行分析是各种软件工程工具的基本手段之一。典型软件开发工具比如编译器、代码编辑器、测试与调试工具等等都离不开对软件代码进行分析。在工业界,各大公司的基础平台部门对掌握软件分析技术的人才有大量需求;在学术界,软件分析技术是程序设计语言和软件工程领域开展研究的必备基础知识之一。但是,软件分析技术相关文献存在内容广,流派多,数学基础要求高等方面的特点,使得学习软件分析技术一直是一件很困难的事。本课程希望通过对这一类技术进行通俗易懂的讲解,帮助同学们构建较完整的软件分析技术知识体系,了解该领域的前沿知识,学术上为进一步开展程序设计语言和软件工程领域的学术研究打下基础,在实践上培养开发大型软件工程工具的开发能力。

课程内容

教学内容

课程日期 课程内容 讲师 讲义 作业/项目
9月6日 课程介绍 熊英飞 01_intro.pdf
9月13日 程序设计语言基础知识 熊英飞 02_basics.pdf
9月15日 数据流分析I:基础 熊英飞 03_dataflow_analysis_I.pdf 见胶片
9月20日 数据流分析II:性质和扩展 熊英飞 04_dataflow_analysis_II.pdf
9月27日 数据流分析III:多视角理解数据流分析 熊英飞 05_dataflow_analysis_III.pdf 见胶片
9月29日 静态单赋值和稀疏分析 熊英飞 06_static_single_assignment.pdf
10月4日 过程间分析 熊英飞 07_interprocedural_analysis_basics.pdf 见胶片
10月11日 过程间分析加速技术 熊英飞 08_interprocedural_analysis_optimization.pdf 见胶片
10月13日 过程内指针分析 熊英飞 09_pointer_analysis.pdf
course_project_1.pdf
项目1开发包
组队截止日期:10月18日
提交截止日期:11月12日
汇报日期:11月15日
10月18日 控制流分析 熊英飞 10_control_flow_analysis.pdf
10月25日 SOOT 陈逸凡 soot.pptx
10月27日 抽象解释 熊英飞 11_abstract_interpretation.pdf 见胶片
11月1日 SAT 熊英飞 12_SAT.pdf
11月8日 SMT 熊英飞 13_SMT.pdf 见胶片
11月10日 符号执行 熊英飞 14_symbolic_execution.pdf
11月22日 符号抽象 熊英飞 15_symbolic_abstraction.pdf
11月24日 程序合成I:枚举 熊英飞 16_program_synthesis_enumerative.pdf 项目2开发包
组队截止日期:11月29日
提交截止日期:12月10日
汇报日期:12月13日
11月29日 程序合成II:空间表示和约束求解
程序合成III:概率
熊英飞 17_program_synthesis_representation.pdf
18_program_synthesis_probability.pdf
12月8日 错误定位 熊英飞 19_fault_localization.pdf