软件分析技术(Software Analysis)


课程信息

学分: 3
周学时: 3
总学时: 54
上课时间: 每周周一 10-12节
上课地点: 理教 310
任课教师: 熊英飞 北京大学“百人计划”研究员 xiongyf@pku.edu.cn
授课对象: 高年级本科生/研究生
课程助教: 杨小东 fredyxd@sina.com

课程通知

暂无

课程简介

软件开发过程中会产生大量的代码制品,包括代码、测试数据、配置方案等等,对这些制品进行分析是各种软件工程工具的基本手段之一。典型软件开发工具比如编译器、代码编辑器、测试与调试工具等等都离不开对软件制品进行分析。在工业界,各大公司的基础平台部门对掌握软件分析技术的人才有大量需求;在学术界,软件分析技术是软件工程领域开展研究的必备基础知识之一。本课程将系统地介绍软件分析技术。本课程同时面向高年级本科生和研究生开设。

软件分析技术主要用于回答关于程序本身性质的问题。程序分析技术是开发和代码直接相关的工具,比如编译器、调试器、代码编辑器的基本手段。根据哥德尔不完备定理,大量问题都无法静态的回答,所以程序分析技术关注如何做出正确的近似逼近,或者在静态分析无法完成的时候用动态数据来弥补。但是,软件分析技术相关文献存在内容广,流派多,数学基础要求高等方面的特点,使得学习软件分析技术一直是一件很困难的事。本课程希望通过对这一类技术进行通俗易懂的讲解,帮助同学们构建较完整的软件分析技术知识体系,了解该领域的前沿知识,学术上为进一步开展软件工程领域的学术研究打下基础,在实践上培养开发大型软件工程工具的开发能力。

教学内容

课程日期 课程内容 讲师 讲义 作业
9月15日 课程介绍 熊英飞 01_intro.pdf
9月19日 数据流分析 熊英飞 02_dataflow_analysis.pdf
page_40.jpg(由于Powerpoint的缺陷,第40页无法正确转换,所以重新截图)
见胶片末尾。截止10月8日。
9月26日 SOOT 唐浩 03_SOOT.pdf
soot_source.zip
10月10日 过程间分析 熊英飞 04_interprocedural_analysis
course project
见胶片末尾。截止10月16日。
10月18日 过程间分析II+静态单赋值 熊英飞 05_interprocedural_analysis_II
06_static_single_assignment
见胶片末尾。截止10月23日。
10月24日 指针分析 熊英飞 07_pointer_analysis 见胶片末尾。截止10月30日。
10月31日 约束求解 熊英飞 08_Constraint_Solving
09_SMT
见胶片末尾。截止11月6日。
11月07日 符号执行 熊英飞 10_Symbolic_Execution
11月14日 LLVM 王博 11_LLVM_Intro
11月21日 机器学习基础 熊英飞 12_Machine_Learning_Basics
11月28日 智能算法及应用 熊英飞 13_Learning_to_analyze_software
14_Clustering_Mining_and_Searching
11月28日 错误定位技术 熊英飞 15_Fault_Localization
12月13日 缺陷修复技术 熊英飞 16_Program_Repair
Final Course Project Presentation Schedule