软件分析技术(Software Analysis)
课程信息
学分: | 3 |
周学时: | 3 |
总学时: | 54 |
上课时间: | 单周周二 3-4节 每周周三5-6节 |
上课地点: | 二教 404 |
任课教师: | 熊英飞 北京大学“百人计划”研究员 xiongyf@pku.edu.cn |
授课对象: | 本科生/研究生 |
课程助教: | 梁晶晶 ljjaxeabc@126.com |
课程通知
2017年10月10日 请同学们注意胶片最后一页的作业,相比上课提到的添加了细节和第二小问。另外全局变量部分的胶片也重新制作,见第九页。
2017年10月4日 第一节课的胶片写错了助教邮箱,正确邮箱应该是ljjaxeabc@126.com(胶片中已更正),麻烦同学们检查一下自己发送的作业,如果发错了的请重新发送一次,非常抱歉。(感谢扬子岳同学发现这个问题!)
作业提交方式:在作业截止日期之前发送电子版到助教邮箱。
课程简介
软件开发过程中会产生大量的代码制品,包括代码、测试数据、配置方案等等,对这些制品进行分析是各种软件工程工具的基本手段之一。典型软件开发工具比如编译器、代码编辑器、测试与调试工具等等都离不开对软件制品进行分析。在工业界,各大公司的基础平台部门对掌握软件分析技术的人才有大量需求;在学术界,软件分析技术是软件工程领域开展研究的必备基础知识之一。本课程将系统地介绍软件分析技术。本课程同时面向高年级本科生和研究生开设。
软件分析技术主要用于回答关于程序本身性质的问题。程序分析技术是开发和代码直接相关的工具,比如编译器、调试器、代码编辑器的基本手段。根据哥德尔不完备定理,大量问题都无法静态的回答,所以程序分析技术关注如何做出正确的近似逼近,或者采用统计等概率手段来弥补。但是,软件分析技术相关文献存在内容广,流派多,数学基础要求高等方面的特点,使得学习软件分析技术一直是一件很困难的事。本课程希望通过对这一类技术进行通俗易懂的讲解,帮助同学们构建较完整的软件分析技术知识体系,了解该领域的前沿知识,学术上为进一步开展软件工程领域的学术研究打下基础,在实践上培养开发大型软件工程工具的开发能力。
教学内容
课程日期 | 课程内容 | 讲师 | 讲义 | 作业 |
---|---|---|---|---|
9月12日 | 课程介绍 | 熊英飞 | 01_intro.pdf | 无 |
9月13日 | 数据流分析:示例 | 梁晶晶 | 02_dataflow_analysis_examples.pdf | 无 |
9月20日 | 数据流分析:框架 | 熊英飞 | 03_dataflow_analysis_framework.pdf | 见胶片最后一页,只要求描述算法和论证安全性,不要求实现 |
9月26日 | 数据流分析:扩展 | 熊英飞 | 04_dataflow_analysis_extension.pdf | 无 |
9月27日 | 静态单赋值与稀疏分析 | 熊英飞 | 05_static_single_assignment.pdf | 见胶片最后一页 |
10月10日 | 过程间分析基础 | 熊英飞 | 06_interprocedural_analysis_basics.pdf | 见胶片最后一页 |
10月11日 | 过程间分析优化 | 熊英飞 | 07_interprocedural_analysis_optimization.pdf course_projects.pdf |
见胶片最后一页 |
10月18日 | SOOT | 唐浩 | 08_soot.pdf |
见胶片最后一页,截止10月31日。作业示例。 |
10月24日 | 过程内指向分析 | 熊英飞 | 09_pointer_analysis.pdf |
无 |
10月25日 | 开题报告 | 各位同学 | 无 | 无 |
11月1日 | Steengaard指向分析和过程间指向分析 | 熊英飞 | 10_control_flow_analysis.pdf | 见胶片最后一页,截止11月8日 |
11月7日 | 布尔可满足性 | 熊英飞 | 11_SAT.pdf | 无 |
11月8日 | 可满足性模理论 | 熊英飞 | 12_SMT.pdf | 见胶片最后一页,截止11月15日 |
11月15日 | 符号执行 | 熊英飞 | 13_symbolic_execution.pdf | 无 |
11月21日 | 机器学习基础 | 熊英飞 | 14_machine_learning_basics.pdf | 无 |
11月22日 | 机器学习和软件分析 | 熊英飞 | 15_learning_to_analyze_programs.pdf | 无 |
11月29日 | 聚类和挖掘 | 熊英飞 | 16_clustering_and_mining.pdf | 无 |
12月5日 | 启发式搜索 | 熊英飞 | 17_searching.pdf | 无 |
12月6日 | 缺陷定位 | 熊英飞 | 18_fault_localization.pdf | 无 |
12月13日 | LLVM | 王博 | 19_LLVM.pdf | 无 |
12月19日 | 缺陷自动修复 | 熊英飞 | 20_Program Repair.pdf | 无 |